diff --git a/CHANGES.md b/CHANGES.md index 698e5f4a3..d9bda6467 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,47 @@ +## Changes in 1.8.4 (2022-03-08) + +🙌 Improvements + +- Add a generic SwiftUI Error type with support for showing NSErrors. ([#5742](https://github.com/vector-im/element-ios/pull/5742)) +- Upgrade MatrixSDK version ([v0.22.5](https://github.com/matrix-org/matrix-ios-sdk/releases/tag/v0.22.5)). +- Move chat/room invites to dedicated sections and enable collapsing sections ([#5222](https://github.com/vector-im/element-ios/issues/5222)) +- Invites: remove exclamation mark badge ([#5249](https://github.com/vector-im/element-ios/issues/5249)) +- Localisation: Merge MatrixKit.strings into Vector.strings and de-dupe. ([#5325](https://github.com/vector-im/element-ios/issues/5325)) +- Analytics: Adapt to latest analytics repo & add screens, events & interactions for threads. ([#5365](https://github.com/vector-im/element-ios/issues/5365)) +- Activity Indicators: Add updated indicators to room loading ([#5603](https://github.com/vector-im/element-ios/issues/5603)) +- Activity Indicators: Update loading and success messages when leaving room ([#5605](https://github.com/vector-im/element-ios/issues/5605)) +- Enable activity indicators on the home screen ([#5663](https://github.com/vector-im/element-ios/issues/5663)) +- Activity Indicators: Enable updated UI for activity indicators and success messages ([#5696](https://github.com/vector-im/element-ios/issues/5696)) +- Labs/Room: Add a setting to use only latest sender profiles ([#5726](https://github.com/vector-im/element-ios/issues/5726)) +- Timeline: track and show error message when an event cannot be converted to attributed string ([#5739](https://github.com/vector-im/element-ios/issues/5739)) +- Activity Indicators: Use new activity indicators on all tabs ([#5750](https://github.com/vector-im/element-ios/issues/5750)) +- Analytics: Instrument missing screen metrics. ([#5763](https://github.com/vector-im/element-ios/issues/5763)) + +🐛 Bugfixes + +- Removed unnecessary and cropped room info avatar shadow. ([#5714](https://github.com/vector-im/element-ios/pull/5714)) +- Started applying navigation bar theme styles to iOS 13 and 14 too. ([#5715](https://github.com/vector-im/element-ios/pull/5715)) +- Input Tool Bar: Show it when you jump to an old message (last unread message, direct link or from unified search) ([#3779](https://github.com/vector-im/element-ios/issues/3779)) +- MXKEventFormatter: Fix text color and font for regular reply events. ([#5552](https://github.com/vector-im/element-ios/issues/5552)) +- Timeline: Show start of conversation header for every user and only at the actual start of the timeline ([#5581](https://github.com/vector-im/element-ios/issues/5581)) +- Fixed partially hidden room invitation header. ([#5691](https://github.com/vector-im/element-ios/issues/5691)) +- MXKEventFormatter: Fix font size for emoji-only replies. ([#5712](https://github.com/vector-im/element-ios/issues/5712)) +- Room lists: Show the getting started hints again when there are no rooms in a tab. ([#5727](https://github.com/vector-im/element-ios/issues/5727)) +- Activity Indicator: Use split controller's top navigation controller to present toasts ([#5752](https://github.com/vector-im/element-ios/issues/5752)) + +🗣 Translations + +- Add new languages: Ukrainian ([#5759](https://github.com/vector-im/element-ios/pull/5759)) + +🚧 In development 🚧 + +- Onboarding: Add Congratulations screen. ([#5651](https://github.com/vector-im/element-ios/issues/5651)) + +Others + +- Disable the default analytics configurations for forks. ([#5687](https://github.com/vector-im/element-ios/issues/5687)) + + ## Changes in 1.8.3 (2022-02-25) 🙌 Improvements diff --git a/CommonKit/Source/Activity/Tests/ActivityPresenterSpy.swift b/CommonKit/Source/UserIndicators/Tests/UserIndicatorPresenterSpy.swift similarity index 92% rename from CommonKit/Source/Activity/Tests/ActivityPresenterSpy.swift rename to CommonKit/Source/UserIndicators/Tests/UserIndicatorPresenterSpy.swift index 2a0d03249..f595dfee9 100644 --- a/CommonKit/Source/Activity/Tests/ActivityPresenterSpy.swift +++ b/CommonKit/Source/UserIndicators/Tests/UserIndicatorPresenterSpy.swift @@ -16,7 +16,7 @@ import Foundation -class ActivityPresenterSpy: ActivityPresentable { +class UserIndicatorPresenterSpy: UserIndicatorViewPresentable { var intel = [String]() func present() { diff --git a/CommonKit/Source/Activity/Tests/ActivityCenterTests.swift b/CommonKit/Source/UserIndicators/Tests/UserIndicatorQueueTests.swift similarity index 51% rename from CommonKit/Source/Activity/Tests/ActivityCenterTests.swift rename to CommonKit/Source/UserIndicators/Tests/UserIndicatorQueueTests.swift index a1e375851..50c2e458d 100644 --- a/CommonKit/Source/Activity/Tests/ActivityCenterTests.swift +++ b/CommonKit/Source/UserIndicators/Tests/UserIndicatorQueueTests.swift @@ -17,36 +17,36 @@ import Foundation import XCTest -class ActivityCenterTests: XCTestCase { - var activities: [Activity]! - var center: ActivityCenter! +class UserIndicatorQueueTests: XCTestCase { + var indicators: [UserIndicator]! + var queue: UserIndicatorQueue! override func setUp() { - activities = [] - center = ActivityCenter() + indicators = [] + queue = UserIndicatorQueue() } - func makeRequest() -> ActivityRequest { - return ActivityRequest( - presenter: ActivityPresenterSpy(), + func makeRequest() -> UserIndicatorRequest { + return UserIndicatorRequest( + presenter: UserIndicatorPresenterSpy(), dismissal: .manual ) } - func testStartsActivityWhenAdded() { - let activity = center.add(makeRequest()) - XCTAssertEqual(activity.state, .executing) + func testStartsIndicatorWhenAdded() { + let indicator = queue.add(makeRequest()) + XCTAssertEqual(indicator.state, .executing) } - func testSecondActivityIsPending() { - center.add(makeRequest()).store(in: &activities) - let activity = center.add(makeRequest()) - XCTAssertEqual(activity.state, .pending) + func testSecondIndicatorIsPending() { + queue.add(makeRequest()).store(in: &indicators) + let indicator = queue.add(makeRequest()) + XCTAssertEqual(indicator.state, .pending) } - func testSecondActivityIsExecutingWhenFirstCompleted() { - let first = center.add(makeRequest()) - let second = center.add(makeRequest()) + func testSecondIndicatorIsExecutingWhenFirstCompleted() { + let first = queue.add(makeRequest()) + let second = queue.add(makeRequest()) first.cancel() diff --git a/CommonKit/Source/Activity/Tests/ActivityTests.swift b/CommonKit/Source/UserIndicators/Tests/UserIndicatorTests.swift similarity index 56% rename from CommonKit/Source/Activity/Tests/ActivityTests.swift rename to CommonKit/Source/UserIndicators/Tests/UserIndicatorTests.swift index 11cc7eec2..e0722af8f 100644 --- a/CommonKit/Source/Activity/Tests/ActivityTests.swift +++ b/CommonKit/Source/UserIndicators/Tests/UserIndicatorTests.swift @@ -17,20 +17,20 @@ import Foundation import XCTest -class ActivityTests: XCTestCase { - var presenter: ActivityPresenterSpy! +class UserIndicatorTests: XCTestCase { + var presenter: UserIndicatorPresenterSpy! override func setUp() { super.setUp() - presenter = ActivityPresenterSpy() + presenter = UserIndicatorPresenterSpy() } - func makeActivity(dismissal: ActivityDismissal = .manual, callback: @escaping () -> Void = {}) -> Activity { - let request = ActivityRequest( + func makeIndicator(dismissal: UserIndicatorDismissal = .manual, callback: @escaping () -> Void = {}) -> UserIndicator { + let request = UserIndicatorRequest( presenter: presenter, dismissal: dismissal ) - return Activity( + return UserIndicator( request: request, completion: callback ) @@ -38,58 +38,58 @@ class ActivityTests: XCTestCase { // MARK: - State - func testNewActivityIsPending() { - let activity = makeActivity() - XCTAssertEqual(activity.state, .pending) + func testNewIndicatorIsPending() { + let indicator = makeIndicator() + XCTAssertEqual(indicator.state, .pending) } - func testStartedActivityIsExecuting() { - let activity = makeActivity() - activity.start() - XCTAssertEqual(activity.state, .executing) + func testStartedIndicatorIsExecuting() { + let indicator = makeIndicator() + indicator.start() + XCTAssertEqual(indicator.state, .executing) } - func testCancelledActivityIsCompleted() { - let activity = makeActivity() - activity.cancel() - XCTAssertEqual(activity.state, .completed) + func testCancelledIndicatorIsCompleted() { + let indicator = makeIndicator() + indicator.cancel() + XCTAssertEqual(indicator.state, .completed) } // MARK: - Presenter - func testStartingActivityPresentsUI() { - let activity = makeActivity() - activity.start() + func testStartingIndicatorPresentsUI() { + let indicator = makeIndicator() + indicator.start() XCTAssertEqual(presenter.intel, ["present()"]) } func testAllowStartingOnlyOnce() { - let activity = makeActivity() - activity.start() + let indicator = makeIndicator() + indicator.start() presenter.intel = [] - activity.start() + indicator.start() XCTAssertEqual(presenter.intel, []) } - func testCancellingActivityDismissesUI() { - let activity = makeActivity() - activity.start() + func testCancellingIndicatorDismissesUI() { + let indicator = makeIndicator() + indicator.start() presenter.intel = [] - activity.cancel() + indicator.cancel() XCTAssertEqual(presenter.intel, ["dismiss()"]) } func testAllowCancellingOnlyOnce() { - let activity = makeActivity() - activity.start() - activity.cancel() + let indicator = makeIndicator() + indicator.start() + indicator.cancel() presenter.intel = [] - activity.cancel() + indicator.cancel() XCTAssertEqual(presenter.intel, []) } @@ -98,9 +98,9 @@ class ActivityTests: XCTestCase { func testDismissAfterTimeout() { let interval: TimeInterval = 0.01 - let activity = makeActivity(dismissal: .timeout(interval)) + let indicator = makeIndicator(dismissal: .timeout(interval)) - activity.start() + indicator.start() let exp = expectation(description: "") DispatchQueue.main.asyncAfter(deadline: .now() + interval) { @@ -108,19 +108,19 @@ class ActivityTests: XCTestCase { } waitForExpectations(timeout: 1) - XCTAssertEqual(activity.state, .completed) + XCTAssertEqual(indicator.state, .completed) } // MARK: - Completion callback func testTriggersCallbackWhenCompleted() { var didComplete = false - let activity = makeActivity { + let indicator = makeIndicator { didComplete = true } - activity.start() + indicator.start() - activity.cancel() + indicator.cancel() XCTAssertTrue(didComplete) } diff --git a/CommonKit/Source/Activity/Activity.swift b/CommonKit/Source/UserIndicators/UserIndicator.swift similarity index 59% rename from CommonKit/Source/Activity/Activity.swift rename to CommonKit/Source/UserIndicators/UserIndicator.swift index d72e87800..72338013d 100644 --- a/CommonKit/Source/Activity/Activity.swift +++ b/CommonKit/Source/UserIndicators/UserIndicator.swift @@ -17,27 +17,27 @@ import Foundation import UIKit -/// An `Activity` represents the state of a temporary visual indicator, such as activity indicator, success notification or an error message. It does not directly manage the UI, instead it delegates to a `presenter` +/// A `UserIndicator` represents the state of a temporary visual indicator, such as loading spinner, success notification or an error message. It does not directly manage the UI, instead it delegates to a `presenter` /// whenever the UI should be shown or hidden. /// -/// More than one `Activity` may be requested by the system at the same time (e.g. global syncing vs local refresh), -/// and the `ActivityCenter` will ensure that only one activity is shown at a given time, putting the other in a pending queue. +/// More than one `UserIndicator` may be requested by the system at the same time (e.g. global syncing vs local refresh), +/// and the `UserIndicatorQueue` will ensure that only one indicator is shown at a given time, putting the other in a pending queue. /// -/// A client that requests an activity can specify a default timeout after which the activity is dismissed, or it has to be manually +/// A client that requests an indicator can specify a default timeout after which the indicator is dismissed, or it has to be manually /// responsible for dismissing it via `cancel` method, or by deallocating itself. -public class Activity { - enum State { +public class UserIndicator { + public enum State { case pending case executing case completed } - private let request: ActivityRequest + private let request: UserIndicatorRequest private let completion: () -> Void - private(set) var state: State + public private(set) var state: State - public init(request: ActivityRequest, completion: @escaping () -> Void) { + public init(request: UserIndicatorRequest, completion: @escaping () -> Void) { self.request = request self.completion = completion @@ -45,7 +45,7 @@ public class Activity { } deinit { - cancel() + complete() } internal func start() { @@ -66,11 +66,11 @@ public class Activity { } } - /// Cancel the activity, triggering any dismissal action / animation + /// Cancel the indicator, triggering any dismissal action / animation /// - /// Note: clients can call this method directly, if they have access to the `Activity`. - /// Once cancelled, `ActivityCenter` will automatically start the next `Activity` in the queue. - func cancel() { + /// Note: clients can call this method directly, if they have access to the `UserIndicator`. + /// Once cancelled, `UserIndicatorQueue` will automatically start the next `UserIndicator` in the queue. + public func cancel() { complete() } @@ -87,8 +87,16 @@ public class Activity { } } -public extension Activity { - func store(in collection: inout C) where C: RangeReplaceableCollection, C.Element == Activity { +public extension UserIndicator { + func store(in collection: inout C) where C: RangeReplaceableCollection, C.Element == UserIndicator { collection.append(self) } } + +public extension Collection where Element == UserIndicator { + func cancelAll() { + forEach { + $0.cancel() + } + } +} diff --git a/CommonKit/Source/Activity/ActivityDismissal.swift b/CommonKit/Source/UserIndicators/UserIndicatorDismissal.swift similarity index 69% rename from CommonKit/Source/Activity/ActivityDismissal.swift rename to CommonKit/Source/UserIndicators/UserIndicatorDismissal.swift index 69405c579..874a4f1ed 100644 --- a/CommonKit/Source/Activity/ActivityDismissal.swift +++ b/CommonKit/Source/UserIndicators/UserIndicatorDismissal.swift @@ -16,10 +16,10 @@ import Foundation -/// Different ways in which an `Activity` can be dismissed -public enum ActivityDismissal { - /// The `Activity` will not manage the dismissal, but will expect the calling client to do so manually +/// Different ways in which a `UserIndicator` can be dismissed +public enum UserIndicatorDismissal { + /// The `UserIndicator` will not manage the dismissal, but will expect the calling client to do so manually case manual - /// The `Activity` will be automatically dismissed after `TimeInterval` + /// The `UserIndicator` will be automatically dismissed after `TimeInterval` case timeout(TimeInterval) } diff --git a/CommonKit/Source/Activity/ActivityPresentable.swift b/CommonKit/Source/UserIndicators/UserIndicatorPresentable.swift similarity index 65% rename from CommonKit/Source/Activity/ActivityPresentable.swift rename to CommonKit/Source/UserIndicators/UserIndicatorPresentable.swift index 5bb489fcc..3a4a663f0 100644 --- a/CommonKit/Source/Activity/ActivityPresentable.swift +++ b/CommonKit/Source/UserIndicators/UserIndicatorPresentable.swift @@ -16,10 +16,11 @@ import Foundation -/// A presenter associated with and called by an `Activity`, and responsible for the underlying view shown on the screen. -public protocol ActivityPresentable { - /// Called when the `Activity` is started (manually or by the `ActivityCenter`) +/// A presenter associated with and called by a `UserIndicator`, and responsible for the underlying view shown on the screen. +public protocol UserIndicatorViewPresentable { + /// Called when the `UserIndicator` is started (manually or by the `UserIndicatorQueue`) func present() - /// Called when the `Activity` is manually cancelled or completed + /// Called when the `UserIndicator` is manually cancelled or completed func dismiss() } + diff --git a/CommonKit/Source/Activity/ActivityCenter.swift b/CommonKit/Source/UserIndicators/UserIndicatorQueue.swift similarity index 52% rename from CommonKit/Source/Activity/ActivityCenter.swift rename to CommonKit/Source/UserIndicators/UserIndicatorQueue.swift index 9d9e0c704..a2ba49fcf 100644 --- a/CommonKit/Source/Activity/ActivityCenter.swift +++ b/CommonKit/Source/UserIndicators/UserIndicatorQueue.swift @@ -16,11 +16,11 @@ import Foundation -/// A shared activity center with a single FIFO queue which will ensure only one activity is shown at a given time. +/// A FIFO queue which will ensure only one user indicator is shown at a given time. /// -/// `ActivityCenter` offers a `shared` center that can be used by any clients, but clients are also allowed -/// to create local `ActivityCenter` if the context requres multiple simultaneous activities. -public class ActivityCenter { +/// `UserIndicatorQueue` offers a `shared` queue that can be used by any clients app-wide, but clients are also allowed +/// to create local `UserIndicatorQueue` if the context requres multiple simultaneous indicators. +public class UserIndicatorQueue { private class Weak { weak var element: T? init(_ element: T) { @@ -28,27 +28,30 @@ public class ActivityCenter { } } - public static let shared = ActivityCenter() - private var queue = [Weak]() + private var queue: [Weak] - /// Add a new activity to the queue by providing a request. + public init() { + queue = [] + } + + /// Add a new indicator to the queue by providing a request. /// - /// The queue will start the activity right away, if there are no currently running activities, - /// otherwise the activity will be put on hold. - public func add(_ request: ActivityRequest) -> Activity { - let activity = Activity(request: request) { [weak self] in + /// The queue will start the indicator right away, if there are no currently running indicators, + /// otherwise the indicator will be put on hold. + public func add(_ request: UserIndicatorRequest) -> UserIndicator { + let indicator = UserIndicator(request: request) { [weak self] in self?.startNextIfIdle() } - queue.append(Weak(activity)) + queue.append(Weak(indicator)) startNextIfIdle() - return activity + return indicator } private func startNextIfIdle() { cleanup() - if let activity = queue.first?.element, activity.state == .pending { - activity.start() + if let indicator = queue.first?.element, indicator.state == .pending { + indicator.start() } } diff --git a/CommonKit/Source/Activity/ActivityRequest.swift b/CommonKit/Source/UserIndicators/UserIndicatorRequest.swift similarity index 65% rename from CommonKit/Source/Activity/ActivityRequest.swift rename to CommonKit/Source/UserIndicators/UserIndicatorRequest.swift index f009fc211..97611eeea 100644 --- a/CommonKit/Source/Activity/ActivityRequest.swift +++ b/CommonKit/Source/UserIndicators/UserIndicatorRequest.swift @@ -16,12 +16,12 @@ import Foundation -/// A request used to create an underlying `Activity`, allowing clients to only specify the visual aspects of an activity. -public struct ActivityRequest { - internal let presenter: ActivityPresentable - internal let dismissal: ActivityDismissal +/// A request used to create an underlying `UserIndicator`, allowing clients to only specify the visual aspects of an indicator. +public struct UserIndicatorRequest { + internal let presenter: UserIndicatorViewPresentable + internal let dismissal: UserIndicatorDismissal - public init(presenter: ActivityPresentable, dismissal: ActivityDismissal) { + public init(presenter: UserIndicatorViewPresentable, dismissal: UserIndicatorDismissal) { self.presenter = presenter self.dismissal = dismissal } diff --git a/Config/AppVersion.xcconfig b/Config/AppVersion.xcconfig index 76b125c78..dc0864384 100644 --- a/Config/AppVersion.xcconfig +++ b/Config/AppVersion.xcconfig @@ -15,5 +15,5 @@ // // Version -MARKETING_VERSION = 1.8.3 -CURRENT_PROJECT_VERSION = 1.8.3 +MARKETING_VERSION = 1.8.4 +CURRENT_PROJECT_VERSION = 1.8.4 diff --git a/Config/BuildSettings.swift b/Config/BuildSettings.swift index 3348ba964..b9c639f15 100644 --- a/Config/BuildSettings.swift +++ b/Config/BuildSettings.swift @@ -156,20 +156,35 @@ final class BuildSettings: NSObject { static let roomsAllowToJoinPublicRooms: Bool = true // MARK: - Analytics - #if DEBUG - /// Host to use for PostHog analytics during development. Set to nil to disable analytics in debug builds. - static let analyticsHost: String? = "https://posthog-poc.lab.element.dev" - /// Public key for submitting analytics during development. Set to nil to disable analytics in debug builds. - static let analyticsKey: String? = "rs-pJjsYJTuAkXJfhaMmPUNBhWliDyTKLOOxike6ck8" - #else - /// Host to use for PostHog analytics. Set to nil to disable analytics. - static let analyticsHost: String? = "https://posthog.hss.element.io" - /// Public key for submitting analytics. Set to nil to disable analytics. - static let analyticsKey: String? = "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO" - #endif - /// The URL to open with more information about analytics terms. - static let analyticsTermsURL = URL(string: "https://element.io/cookie-policy")! + /// A type that represents how to set up the analytics module in the app. + /// + /// **Note:** Analytics are disabled by default for forks. + /// If you are maintaining a fork, set custom configurations. + struct AnalyticsConfiguration { + /// Whether or not analytics should be enabled. + let isEnabled: Bool + /// The host to use for PostHog analytics. + let host: String + /// The public key for submitting analytics. + let apiKey: String + /// The URL to open with more information about analytics terms. + let termsURL: URL + } + + #if DEBUG + /// The configuration to use for analytics during development. Set `isEnabled` to false to disable analytics in debug builds. + static let analyticsConfiguration = AnalyticsConfiguration(isEnabled: BuildSettings.baseBundleIdentifier.starts(with: "im.vector.app"), + host: "https://posthog-poc.lab.element.dev", + apiKey: "rs-pJjsYJTuAkXJfhaMmPUNBhWliDyTKLOOxike6ck8", + termsURL: URL(string: "https://element.io/cookie-policy")!) + #else + /// The configuration to use for analytics. Set `isEnabled` to false to disable analytics. + static let analyticsConfiguration = AnalyticsConfiguration(isEnabled: BuildSettings.baseBundleIdentifier.starts(with: "im.vector.app"), + host: "https://posthog.hss.element.io", + apiKey: "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO", + termsURL: URL(string: "https://element.io/cookie-policy")!) + #endif // MARK: - Bug report @@ -210,15 +225,6 @@ final class BuildSettings: NSObject { static let allowInviteExernalUsers: Bool = true - /// Whether a screen uses legacy local activity indicators or improved app-wide indicators - static var appActivityIndicators: Bool { - #if DEBUG - return false - #else - return false - #endif - } - // MARK: - Side Menu static let enableSideMenu: Bool = true static let sideMenuShowInviteFriends: Bool = true @@ -305,6 +311,7 @@ final class BuildSettings: NSObject { static var isRoomScreenEnableMessageBubblesByDefault: Bool { return self.roomScreenTimelineDefaultStyleIdentifier == .bubble } + static let roomScreenUseOnlyLatestUserAvatarAndName: Bool = false /// Allow split view detail view stacking static let allowSplitViewDetailsScreenStacking: Bool = true @@ -361,6 +368,9 @@ final class BuildSettings: NSObject { // MARK: - Authentication Options static let authEnableRefreshTokens = false + // MARK: - Onboarding + static let onboardingShowAccountPersonalisation = false + // MARK: - Unified Search static let unifiedSearchScreenShowPublicDirectory = true @@ -388,4 +398,17 @@ final class BuildSettings: NSObject { return true } + + static var liveLocationSharingEnabled: Bool { + guard #available(iOS 14, *) else { + return false + } + + guard self.locationSharingEnabled else { + return false + } + + // Do not enable live location sharing atm + return false + } } diff --git a/Config/CommonConfiguration.swift b/Config/CommonConfiguration.swift index 9567a696d..5802f8d77 100644 --- a/Config/CommonConfiguration.swift +++ b/Config/CommonConfiguration.swift @@ -32,9 +32,6 @@ class CommonConfiguration: NSObject, Configurable { return } - // Customize the localized string table - Bundle.mxk_customizeLocalizedStringTableName("Vector") - // Disable CallKit settings.isCallKitEnabled = false diff --git a/IDETemplateMacros.plist b/IDETemplateMacros.plist index 5a3026b83..13ab2cd61 100644 --- a/IDETemplateMacros.plist +++ b/IDETemplateMacros.plist @@ -4,7 +4,7 @@ FILEHEADER -// Copyright 2021 New Vector Ltd +// Copyright ___YEAR___ 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. diff --git a/Podfile b/Podfile index cbc8d341e..67f463d93 100644 --- a/Podfile +++ b/Podfile @@ -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 # # Warning: our internal tooling depends on the name of this variable name, so be sure not to change it -$matrixSDKVersion = '= 0.22.4' +$matrixSDKVersion = '= 0.22.5' # $matrixSDKVersion = :local # $matrixSDKVersion = { :branch => 'develop'} # $matrixSDKVersion = { :specHash => { git: 'https://git.io/fork123', branch: 'fix' } } diff --git a/Podfile.lock b/Podfile.lock index 17c0dedde..6a33e60e3 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -180,7 +180,7 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: AnalyticsEvents: - :commit: 53844e3f6f9fefa88384a996b2bf5e60bb301b94 + :commit: 0101e4fd25ded5fb2cba8a9119cb061e36296369 :git: https://github.com/matrix-org/matrix-analytics-events.git SPEC CHECKSUMS: diff --git a/Riot/Assets/Images.xcassets/Onboarding/onboarding_congratulations_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Onboarding/onboarding_congratulations_icon.imageset/Contents.json new file mode 100644 index 000000000..abd9b2f32 --- /dev/null +++ b/Riot/Assets/Images.xcassets/Onboarding/onboarding_congratulations_icon.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "user.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/Riot/Assets/Images.xcassets/Onboarding/onboarding_congratulations_icon.imageset/user.svg b/Riot/Assets/Images.xcassets/Onboarding/onboarding_congratulations_icon.imageset/user.svg new file mode 100644 index 000000000..0321e191f --- /dev/null +++ b/Riot/Assets/Images.xcassets/Onboarding/onboarding_congratulations_icon.imageset/user.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/Riot/Assets/ar.lproj/InfoPlist.strings b/Riot/Assets/ar.lproj/InfoPlist.strings index a0d41c0b3..9e5ff9a91 100644 --- a/Riot/Assets/ar.lproj/InfoPlist.strings +++ b/Riot/Assets/ar.lproj/InfoPlist.strings @@ -1,9 +1,10 @@ -"NSContactsUsageDescription" = "لاِكتِشاف جِهات الاِتِّصال الَّتي تَستَخدِمُ Matrix بِالفِعل، يُمكِنُ لِـElement إرسَال عَناوين البَريد الإلِكتُرونيّ وأرقام الهَواتِف الَّتي في دَفتَرِ العَناوين الخاصِّ بِك إلى خادِمِ هُويَّة Matrix المُختار. يَتِّمُ تَجزِئة البَياناتِ الشَّخصيَّة قَبلَ إرسالِها حَيثُما كانَت مَدعُومَة - يُرجى مُراجَعَة سياسَة الخُصُوصيَّة الخاصَّة بِخادِم الهُويَّة لِلحُصُولِ عَلَى المَزيدِ مِنَ التَّفاصيل."; -"NSFaceIDUsageDescription" = "يُستخدَم الـFace ID لِلوُصُول إلى التَّطبيق الخاصّ بِك."; +"NSContactsUsageDescription" = "سيعَرض Element جِهات الاتصال الخاصّة بِك حَتى تتمَكَّنَ من دَعوتهم للمُحادثَة."; +"NSFaceIDUsageDescription" = "يُستخدَم Face ID لِلوُصُول إلى التَّطبيق الخاصّ بِك."; "NSCalendarsUsageDescription" = "اطَّلِع عَلَى اِجتِماعاتِك المُجَدوَلَة في التَّطبيق."; -"NSMicrophoneUsageDescription" = "المِيكرُوفُون يُستَخدَم لاِلتِقاط المَقاطِع المَرئيَّة وإجراء المُكالَمات."; +"NSMicrophoneUsageDescription" = "يحتاجَ Element الوُصول إلى المِيكرُوفُون لإجراء المُكالمات واستِقبالها، والتِقاط مقاطَع الفيدِيو، وتَسجيل الرسائل الصَوتية."; // Permissions usage explanations "NSCameraUsageDescription" = "تُستَخدَم الكاميرا لاِلتِقاط الصُّوَر، المَقاطِع المَرئيَّة وإجراءُ مُكالَمَةٍ مَرئيَّة."; "NSPhotoLibraryUsageDescription" = "مَكتَبَة الصُّوَر تُستَخدَم لإرسال الصُّوَر وَالمَقاطِع المَرئيَّة."; +"NSLocationWhenInUseUsageDescription" = "عِندَما تَشارَكَ مَوقِعك مَعَ أشَخاص، يحتاجَ Element إلى الوُصول لإظهار خَريطة لهم."; diff --git a/Riot/Assets/ar.lproj/Localizable.strings b/Riot/Assets/ar.lproj/Localizable.strings index 662dc870d..455189656 100644 --- a/Riot/Assets/ar.lproj/Localizable.strings +++ b/Riot/Assets/ar.lproj/Localizable.strings @@ -19,13 +19,13 @@ "VIDEO_CONF_NAMED_FROM_USER" = "مُكالَمَة مَرئيَّة جَماعِيَّة مِن %@: %@"; /* Incoming named voice conference invite from a specific person */ -"VOICE_CONF_NAMED_FROM_USER" = "مُحادَثَة جَماعِيَّة مِن %@: '%@'"; +"VOICE_CONF_NAMED_FROM_USER" = "مُكالَمَة جَماعِيَّة مِن %@: '%@'"; /* Incoming unnamed video conference invite from a specific person */ "VIDEO_CONF_FROM_USER" = "مُكالَمَة مَرئيَّة جَماعِيَّة مِن %@"; /* Incoming unnamed voice conference invite from a specific person */ -"VOICE_CONF_FROM_USER" = "مُحادَثَة جَماعِيَّة مِن %@"; +"VOICE_CONF_FROM_USER" = "مُكالَمَة جَماعِيَّة مِن %@"; /* Incoming one-to-one video call */ "VIDEO_CALL_FROM_USER" = "مُكالَمَة مَرئيَّة مِن %@"; @@ -117,3 +117,54 @@ /* A user added a Jitsi call to a room */ "GROUP_CALL_STARTED" = "بَدَأت مُكالَمَةٌ جَماعِيَّة"; + +/* A user's membership has updated in an unknown way */ +"USER_MEMBERSHIP_UPDATED" = "%@ حَدَثَ مَلَفه الشَخْصي"; + +/* A user has change their avatar */ +"USER_UPDATED_AVATAR" = "%@ غَيْر صُّورَتِهم الرَّمزية"; + +/* A user has change their name to a new name which we don't know */ +"GENERIC_USER_UPDATED_DISPLAYNAME" = "%@ غَيْر اسْمهم"; + +/** Membership Updates **/ + +/* A user has change their name to a new name */ +"USER_UPDATED_DISPLAYNAME" = "%@ غَيْر اسْمهم إلى %@"; + +/* A user has reacted to a message, but the reaction content is unknown */ +"GENERIC_REACTION_FROM_USER" = "%@ أرسَلَ رَدّ فِعْلٍ"; + +/** Reactions **/ + +/* A user has reacted to a message, including the reaction e.g. "Alice reacted 👍". */ +"REACTION_FROM_USER" = "%@ أَبْدى رَدَّ فِعْلٍ %@"; + +/* New file message from a specific person, not referencing a room. */ +"LOCATION_FROM_USER" = "%@ شارَكَ مَوقعهم"; + +/* New file message from a specific person, not referencing a room. */ +"FILE_FROM_USER" = "%@ أرسَلَ مَلَفّ %@"; + +/* New voice message from a specific person, not referencing a room. */ +"VOICE_MESSAGE_FROM_USER" = "%@ أرسَلَ رِسالة صَوتيَّة"; + +/* New audio message from a specific person, not referencing a room. */ +"AUDIO_FROM_USER" = "%@ أرسَلَ مَلَفّ صَوتي %@"; + +/* New video message from a specific person, not referencing a room. */ +"VIDEO_FROM_USER" = "%@ أرسَلَ مَقطَع مَرئي"; + +/** Media Messages **/ + +/* New image message from a specific person, not referencing a room. */ +"PICTURE_FROM_USER" = "%@ أَرسَلَ صورة"; + +/* New message reply from a specific person in a named room. */ +"REPLY_FROM_USER_IN_ROOM_TITLE" = "%@ رَد في %@"; + +/* New message reply from a specific person, not referencing a room. */ +"REPLY_FROM_USER_TITLE" = "%@ رَد"; +/** General **/ + +"NOTIFICATION" = "إشعار"; diff --git a/Riot/Assets/ar.lproj/Vector.strings b/Riot/Assets/ar.lproj/Vector.strings index 7aa1dddd8..835a0195e 100644 --- a/Riot/Assets/ar.lproj/Vector.strings +++ b/Riot/Assets/ar.lproj/Vector.strings @@ -15,12 +15,12 @@ "room_creation_title" = "مُحادَثَة جَدِيدَة"; "auth_softlogout_clear_data_sign_out" = "تَسجِيلُ الخُرُوج"; "auth_softlogout_sign_in" = "تَسجيلُ الدُّخُول"; -"auth_reset_password_error_is_required" = "لَم يَتِمّ ضَبط خادِم هُويَّة: أضِف وَاحِدًا لإعادَة تَعيِين كَلِمَة المُرُور الخَاصَّة بِكَ."; +"auth_reset_password_error_is_required" = "لَم يَتِمّ ضَبط خادِم هُويَّة: أضِف وَاحِدًا لإعادَة تَعيِين كَلِمَة المُرُور لحِساب Matrix الخَاصَّ بِكَ."; "auth_reset_password_next_step_button" = "لَقَد تَحَقَّقتُ مِن عُنوانِ بَريدي الإلِكتُرونيّ"; "auth_reset_password_email_validation_message" = "لَقَد تَمَّ إرسَال بَريد الإلِكتُرونيّ إلى %@. بِمُجَرَّدِ اِتِّبَاع الرَّابِط الَّذِي يَحوِيه، اُنقُر أدنَاه."; "auth_reset_password_missing_password" = "يَجِبُ إدخَال كَلِمَة مُرُور جَدِيدَة."; "auth_reset_password_missing_email" = "يَجِبُ إدخَال عُنوان البَريد إلِكتُرونيّ المُرتَبِط بِحِسَابك."; -"auth_reset_password_message" = "لِإعادَةِ تَعيِينِ كَلِمَةِ المُرُور الخاصَّةِ بِك، أدخِل عُنوان البَريد إلِكتُرونيّ المُرتَبِط بِحِسَابك:"; +"auth_reset_password_message" = "لِإعادَةِ تَعيِينِ كَلِمَةِ المُرُور لحِساب Matrix الخَاصَّ بِكَ، أدخِل عُنوان البَريد إلِكتُرونيّ المُرتَبِط بِحِسَابك:"; "auth_recaptcha_message" = "يُرِيدُ هَذَا الخادِم الرَّئيس التَّأكُّد مِن أنَّكَ لَستَ رُوبُوتًا"; "auth_msisdn_validation_error" = "يَتَعَذَّرُ التَّحَقُّق مِن رَقمِ الهَاتِف."; "auth_msisdn_validation_message" = "لَقَد أرسَلنا رِسَالَة SMS تَحوِي رَمزًا لِلتَفعِيل. يُرجَى إدخَال هَذَا الرَّمز أَدناه."; @@ -28,19 +28,19 @@ "auth_email_validation_message" = "يُرجَى التَّحَقُّق مِن البَريد الإلِكتُرونيّ الخاصّ بِك لِمُوَاصَلَة التَّسجِيل"; "auth_use_server_options" = "اِستِخدامُ إعدادَاتٍ مُخَصَّصَةٍ لِلخَادِم (مُتَقَدِّم)"; "auth_email_not_found" = "فَشَلَ إرسَالُ البَريد الإلِكتُرونيّ: لَم يَتِمّ العُثُور عَلَى عُنوان البَريد الإلِكتُرونيّ هَذَا"; -"auth_forgot_password_error_no_configured_identity_server" = "لَم يَتِمّ ضَبط خادِم هُويَّة: أضِف وَاحِدًا لإعادَة تَعيِين كَلِمَة المُرُور الخَاصَّة بِكَ."; -"auth_forgot_password" = "هَل نَسِيتَ كَلِمَة المُرُور؟"; -"auth_username_in_use" = "اِسم مُستَخدِم مُستَخدَم"; +"auth_forgot_password_error_no_configured_identity_server" = "لَم يَتِمّ ضَبط خادِم هُويَّة: أضِف وَاحِدًا لإعادَة تَعيِين كَلِمَة المُرُور لحِساب Matrix الخَاصَّ بِكَ."; +"auth_forgot_password" = "هَل نَسِيتَ كَلِمَة المُرُور لحِساب Matrix الخَاصَّ بِكَ؟"; +"auth_username_in_use" = "اسم المُستخدم مأخوذ"; "auth_password_dont_match" = "كَلِمَةُ المُرُورِ لَا تَتَطَابَق"; "auth_untrusted_id_server" = "خادِمُ الهُويَّة غَيرُ مَوثُوقٍ بِه"; -"auth_phone_is_required" = "لَم يَتِمّ ضَبط خادِم هُويَّة لِذَلِك لا يُمكِنُكَ إضافَة رَقم هَاتِف لإعادَة تَعيِين كَلِمَة المُرُور الخَاصَّة بِكَ فِي المُستَقبَل."; -"auth_email_is_required" = "لَم يُضبَط خادِم هُويَّة لِذَلِك لا يُمكِنُكَ إضافَة عُنوان بَريد إلِكتُرونيّ لإعادَة تَعيِين كَلِمَة المُرُور الخَاصَّة بِكَ فِي المُستَقبَل."; +"auth_phone_is_required" = "لَم يَتِمّ ضَبط خادِم هُويَّة لِذَلِك لا يُمكِنُكَ إضافَة رَقم هَاتِف لإعادَة تَعيِين كَلِمَة المُرُور لحِساب Matrix الخَاصَّ بِكَ فِي المُستَقبَل."; +"auth_email_is_required" = "لَم يَتُمَ ضبَط أي خادِم هُويَّة لِذَلِك لا يُمكِنُكَ إضافَة عُنوان بَريد إلِكتُرونيّ لإعادَة تَعيِين كَلِمَة المُرُور لحِساب Matrix الخَاصَّ بِكَ فِي المُستَقبَل."; "auth_phone_in_use" = "رَقم الهَاتِف هَذَا مُستَخدَمٌ بِالفِعل"; "auth_email_in_use" = "هَذَا البَريد الإلِكتُرونيّ مُستَخدَم بِالفِعل"; "auth_missing_email_or_phone" = "عُنوان البَريد إلِكتُرونيّ مَفقُود أو رَقم الهَاتِف"; "auth_missing_phone" = "رَقم الهَاتِف مَفقُود"; "auth_add_email_message_2" = "عَيِّن بَريدً إلِكتُرونيًّ لِاِستِردَادِ الحِساب، وَلاحِقًا لِتَكُونَ قابِلاً لِلاِكتِشاف اِختِيَاريًّا مِن قِبَلِ الأشخاصِ الَّذينَ يَعرِفُونَك."; -"auth_missing_password" = "نِسيانُ كَلِمَةِ المُرُور"; +"auth_missing_password" = "كَلِمَةِ المُرُور مَفْقودة"; "auth_invalid_phone" = "هَذَا لا يَبدُو كَرَقم هَاتِف صَالِح"; "auth_invalid_email" = "هَذَا لا يَبدُو كَعُنوان بَريد إلِكتُرونيّ صَالِح"; "auth_invalid_password" = "كَلِمَةُ المُرُورِ قَصِيرَةٌ جِدَا (الحَدُّ الأدنَى 6)"; @@ -48,7 +48,7 @@ "auth_invalid_login_param" = "اِسمُ مُستَخدِم وَ/أو كَلِمَةُ مُرُور غَيرُ صَحِيحَة"; "auth_identity_server_placeholder" = "عُنوان URL (مِثل. https://vector.im)"; "auth_home_server_placeholder" = "عُنوان URL (مِثل. https://matrix.org)"; -"auth_repeat_new_password_placeholder" = "أكِّد كَلِمَةَ مُرُورِكَ الجَديدَة"; +"auth_repeat_new_password_placeholder" = "تأكِّيد كَلِمَةَ مُرُورِ حِسابك Matrix الجَديدَة"; "auth_repeat_password_placeholder" = "إعادَةُ كَلِمَةِ المُرُور"; "auth_phone_placeholder" = "رَقم هَاتِف"; "auth_optional_phone_placeholder" = "رَقم هَاتِف (اِختياري)"; @@ -69,7 +69,7 @@ "auth_login" = "تَسجيلُ الدُّخُول"; // Call Bar -"callbar_only_single_active" = "مُكالَمَة نَشِطَة (%@)"; +"callbar_only_single_active" = "اضَغَطَ للعَوْدة إلى المُكالَمَة (%@)"; "less" = "أقَلّ"; "more" = "المَزيد"; "switch" = "تَبدِيل"; @@ -79,7 +79,7 @@ "sending" = "يَجري الإرسَال"; "send_to" = "إرسَال إلى %@"; "collapse" = "تضييق"; -"rename" = "إعادَة التَّسميَة"; +"rename" = "إعَادة التسمية"; "later" = "لاَحِقًا"; "active_call_details" = "مُكالَمَة نَشِطَة (%@)"; "active_call" = "مُكالَمَة نَشِطَة"; @@ -115,7 +115,7 @@ // Titles "title_home" = "الرَّئيسَة"; "store_promotional_text" = "تَطبِيقُ المُحادَثَةِ وَالتَّعاوُن المُحَافِظ لِلخُصُوصِيَّةِ عَلَى شَبَكَةٍ مَفتُوحَة. لاَمَركَزِيٌّ لِوَضعِكَ فِي التَّحَكُّم. لَا تَنقِيبٌ عَنِ البَيَانَات، لَا أبوابَ خَلفِيَّةٍ وَلَا وُصُولٌ لِأيِّ طَرَفٍ ثَالِث."; -"store_full_description" = "Element هُوَ نَوعٌ جَديدٌ مِن تَطبيقاتِ المُراسَلَة وَالتَّعَاوُن الَّذي:\n\n1. يَمنَحُكَ التَّحَكُّم فِي لِلحِفاظِ عَلَى خُصُوصِيَّتِك\n2. يُتيحُ لَكَ التَّواصُلُ مَعَ أيّ شَخص عَلَى شَبَكَةِ Matrix ، وَحَتَّى خارِجَهَا مِن خِلال التَّكامُل مَعَ التَّطبيقات مِثل Slack\n3. يَحميكَ مِنَ الإعلانات، التَّنقيبُ عَنِ البَيانات، الأبوابُ الخَلفِيَّة وَعَمَلِيَّاتُ الحَدائِقِ المُسَوَّرَة\n4. يُؤمِنُكَ مِن خِلاِل تَعمِيَةِ النِّهايَة-إلى-النِّهايَة، مَعَ التَّوقيعِ المُتَبادَلِ لِلتَحَقُّقِ مِنَ الآخَرَين\n\nيَختَلِفُ Element تَمامًا عَن تَطبيقاتِ المُراسَلَةِ وَالتَّعاوُن الأُخرَى لأنَّهُ لا مَركَزي وَمَفتُوح المَصدَر.\n\nيُتيحُ لَكَ Element إمكانيةُ الاِستِضافَة الذّاتيَّة -أو اِختيارُ مُضيف- بِحَيث تَتَمَتَّع بِالخُصُوصِيَّة وَالمُلكيَّة وَالتَّحَكُّم فِي بَيانَاتك وَمُحَادَثاتك. يُتيحُ لَكَ الوُصُول إلى شَبَكَة مَفتُوحَة؛ لِذَلِكَ لا يَقتَصِرُ الأمر عَلَى التَّحدُث إلى مُستَخدِمي Element الآخَرين فَقَط. كَما اَنهُ آمِنٌ لِلغايَة.\n\nإنَّ Element قادِرٌ عَلَى إتاحَةِ كُلِ ذَلِك لِأنَهُ يَعمَلُ عَلَى Matrix -مِعيار التَّواصُل المَفتُوح اللَّامَركَزي.\n\nإنَّ Element يَمنَحُكَ زِمَامَ التَّحَكُم مِن خِلال السَّماح لَك بِاختيار مَن يَستَضيفُ المُحادَثاتِ الخَاصَّةِ بِك. مِن تَطبيقِ Element يُمكِنُكَ اِختيار الاِستِضافَة بِطُرُقٍ مُختَلِفَة:\n\n1. الحُصُول عَلَى حِساب مَجانيّ عَلَى الخادِم العَامّ matrix.org\n2. اِستِضافَة حِسابك بِنَفسِك عَن طَريق تَشغيل خادِم عَلَى أجهِزَتِكَ الخَاصَّة\n3. التَّسجيل لِلحُصُولِ عَلَى حِساب عَلَى خادِم مُخصص بمُجرد الاِشتِراك فِي مِنَصَّة اِستِضافَة Element Matrix Services\n\nلِمَاذَا تَختارُ Element؟\n\nتَملَّك بَياناتَك: أنتَ مَن تُقرر أين تَحتَفِظ ببياناتك ورسائلك. أنت تمتلكها وتتحكم فيها، وليس بعض الشركات الكُبرى الإحتكارية التي تُنقِّب عن بياناتك أو تُتيح الوصول إلى أطراف ثالثة.\n\n\nتَراسُل وَتَعَاوُن مَفتُوح يُمكِنُكَ مُحادَثَة أي شَخص آخَر عَلَى شَبَكَة Matrix، سَواءً كانُوا يَستَخدِمُونَ Element أو تَطبيقُ Matrix آخَر، وَحَتّى إذا كانُوا يَستَخدِمُونَ نِظامَ مُراسلةٍ مُختَلِف مِثل Slack أو IRC أو XMPP.\n\nالأمان-الخارِق: تَعميَة حَقيقيَة مِنَ النِّهايَة إلى النِّهايَة (فَقَط أطراف المُحادَثَة مَن يُمكِنَهُم فَكّ تَعميَة الرَّسائِل)، وَالتَّوقِيع المُتَبادَل لِلتحقق من أجهزة المُشاركين في المُحادثة.\n\nالتواصل الكامل: المُراسلة، المُكالمات الصوتية والمرئية، مُشاركة الملفات، مُشاركة الشاشة، مجموعة كاملة وكبيرة من عمليات التكامُل، الروبوتات والأدوات. بناء الغُرف، المُجتمعات، ابق على اتصال وأنجز المهام.\n\nأين ما كُنت: ابق على اتصال أينما كنت مع سجل الرسائل المتزامن بالكامل عبر جميع أجهزتك وفي الويب على https://app.element.io."; +"store_full_description" = "Element هُوَ نَوعٌ جَديدٌ مِن تَطبيقاتِ المُراسَلَة وَالتَّعَاوُن الَّذي:\n\n1. يَمنَحُكَ التَّحَكُّم فِي لِلحِفاظِ عَلَى خُصُوصِيَّتِك\n2. يُتيحُ لَكَ التَّواصُلُ مَعَ أيّ شَخص عَلَى شَبَكَةِ Matrix ، وَحَتَّى خارِجَهَا مِن خِلال التَّكامُل مَعَ التَّطبيقات مِثل Slack\n3. يَحميكَ مِنَ الإعلانات، التَّنقيبُ عَنِ البَيانات، الأبوابُ الخَلفِيَّة وَعَمَلِيَّاتُ الحَدائِقِ المُسَوَّرَة\n4. يُؤمِنُكَ مِن خِلاِل تَعمِيَةِ النِّهايَة-إلى-النِّهايَة، مَعَ التَّوقيعِ المُتَبادَلِ لِلتَحَقُّقِ مِنَ الآخَرَين\n\nيَختَلِفُ Element تَمامًا عَن تَطبيقاتِ المُراسَلَةِ وَالتَّعاوُن الأُخرَى لأنَّهُ لا مَركَزي وَمَفتُوح المَصدَر.\n\nيُتيحُ لَكَ Element إمكانيةُ الاِستِضافَة الذّاتيَّة -أو اِختيارُ مُضيف- بِحَيث تَتَمَتَّع بِالخُصُوصِيَّة وَالمُلكيَّة وَالتَّحَكُّم فِي بَيانَاتك وَمُحَادَثاتك. يُتيحُ لَكَ الوُصُول إلى شَبَكَة مَفتُوحَة؛ لِذَلِكَ لا يَقتَصِرُ الأمر عَلَى التَّحدُث إلى مُستَخدِمي Element الآخَرين فَقَط. كَما اَنهُ آمِنٌ لِلغايَة.\n\nإنَّ Element قادِرٌ عَلَى إتاحَةِ كُلِ ذَلِك لِأنَهُ يَعمَلُ عَلَى Matrix -مِعيار التَّواصُل المَفتُوح اللَّامَركَزي.\n\nإنَّ Element يَمنَحُكَ زِمَامَ التَّحَكُم مِن خِلال السَّماح لَك بِاختيار مَن يَستَضيفُ المُحادَثاتِ الخَاصَّةِ بِك. مِن تَطبيقِ Element يُمكِنُكَ اِختيار الاِستِضافَة بِطُرُقٍ مُختَلِفَة:\n\n1. الحُصُول عَلَى حِساب مَجانيّ عَلَى الخادِم العَامّ matrix.org\n2. اِستِضافَة حِسابك بِنَفسِك عَن طَريق تَشغيل خادِم عَلَى أجهِزَتِكَ الخَاصَّة\n3. التَّسجيل لِلحُصُولِ عَلَى حِساب عَلَى خادِم مُخصص بمُجرد الاِشتِراك فِي مِنَصَّة اِستِضافَة Element Matrix Services\n\nلِمَاذَا تَختارُ Element؟\n\nتَملَّك بَياناتَك: أنتَ مَن تُقرر أين تَحتَفِظ ببياناتك ورسائلك. أنت تمتلكها وتتحكم فيها، وليس بعض الشركات الكُبرى الإحتكارية التي تُنقِّب عن بياناتك أو تُتيح الوصول إلى أطراف ثالثة.\n\nتَراسُل وَتَعَاوُن مَفتُوح يُمكِنُكَ مُحادَثَة أي شَخص آخَر عَلَى شَبَكَة Matrix، سَواءً كانُوا يَستَخدِمُونَ Element أو تَطبيقُ Matrix آخَر، وَحَتّى إذا كانُوا يَستَخدِمُونَ نِظامَ مُراسلةٍ مُختَلِف مِثل Slack أو IRC أو XMPP.\n\nالأمان-الخارِق: تَعميَة حَقيقيَة مِنَ النِّهايَة إلى النِّهايَة (فَقَط أطراف المُحادَثَة مَن يُمكِنَهُم فَكّ تَعميَة الرَّسائِل)، وَالتَّوقِيع المُتَبادَل لِلتحقق من أجهزة المُشاركين في المُحادثة.\n\nالتواصل الكامل: المُراسلة، المُكالمات الصوتية والمرئية، مُشاركة الملفات، مُشاركة الشاشة، مجموعة كاملة وكبيرة من عمليات التكامُل، الروبوتات والأدوات. بناء الغُرف، المُجتمعات، ابق على اتصال وأنجز المهام.\n\nأين ما كُنت: ابق على اتصال أينما كنت مع سجل الرسائل المتزامن بالكامل عبر جميع أجهزتك وفي الويب على https://app.element.io."; // String for App Store "store_short_description" = "مُحادَثَةٌ/VoIP آمنةٌ لَا مَركَزِيَّة"; "auth_missing_email" = "عُنوان بَريد إلِكتُرونيّ مَفقُود"; @@ -134,7 +134,7 @@ "auth_autodiscover_invalid_response" = "اِستِجابَة اِكتِشاف الخادِم الرَّئيس غَير صَالِحة"; "auth_accept_policies" = "يُرجَى مُراجَعَة سِياسَات هَذَا الخادِم الرَّئيس وقُبُولِهَا:"; "auth_add_email_and_phone_warning" = "التَّسجِيل بِواسِطَة البَريد الإلِكتُرونيّ وَرَقم الهَاتِف معًا غَير مَدعوم حَتَّى تَتَوَفَر بيئة بَرمجة التَّطبيقات (API). سَوفَ يَتِّم أخذ رَقم الهَاتِف فَقَط فِي الاِعتِبار. يُمكِنُكَ إضافَة البَريد الإلِكتُرونيّ الخَّاصّ بِك إلَى مَلَفّ التَّعريف الخَّاصِّ بِك فِي الإعدَادَات."; -"auth_reset_password_success_message" = "لَقَد تمَّ إعادَةُ ضَبطِ كَلِمَةِ المُرُور الخَّاصَّةِ بِك.\n\nلَقَد تمَّ تَسجِيلُ خُرُوجِك مِن جَميعِ الجَلَسات وَلَن تَستَلِمَ بَعد الآن دَفعَ الإِشعَارات. لِإعادَةِ تَفعِيل الإِشعَارات، أعِد تَسجِيلَ الدُّخول عَلَى كُلِّ جِهاز."; +"auth_reset_password_success_message" = "لَقَد تمَّ إعادَةُ ضَبطِ كَلِمَةِ المُرُور لحِساب Matrix الخَاصَّ بِكَ.\n\nلَقَد تمَّ تَسجِيلُ خُرُوجِك مِن جَميعِ الجَلَسات وَلَن تَستَلِمَ بَعد الآن دَفعَ الإِشعَارات. لِإعادَةِ تَفعِيل الإِشعَارات، أعِد تَسجِيلَ الدُّخول عَلَى كُلِّ جِهاز."; "auth_reset_password_error_not_found" = "لَا يَبدو أنَّ عُنوان البَريد الإلِكتُرونيّ الخَّاصِّ بِك مُقتَرِنٌ بِمُعَرِّف Matrix عَلَى الخادِمِ الرَّئيس هَذَا."; "auth_reset_password_error_unauthorized" = "فَشَلَ التَّحَقُق مِن عُنوان البَريد الإلِكتُرونيّ: تَأكَّد مِن نَقرِكَ عَلَى الرَّابِط الَّذي فِي البَريد الإلِكتُرونيّ"; "callbar_only_single_active_group" = "اُنقُر لِلاِنضِمَامِ إلَى المُكالَمَةِ الجَماعِيَّة (%@)"; @@ -144,11 +144,11 @@ "auth_softlogout_clear_data_message_1" = "تَحذير: بَيَانَاتُكَ الشَّخصِيَّة (بِمَا فِي ذَلِكَ مَفاتيحُ التَّعمِيَة) لَا تَزَالُ مُخَزَنَةً عَلَى هَذَا الجِّهاز."; "auth_softlogout_clear_data" = "مَحوُ البَيَانَاتِ الشَّخصِيَّة"; "auth_softlogout_recover_encryption_keys" = "سَجَّل الدُّخُول لِاِستِعادَة مَفاتيح التَّعمِيَة المُخَزَّنَة حَصرِيًّا عَلَى هَذَا الجِّهاز. أنتَ بِحاجةٍ لَهُم لِقِراءةِ جَمِيعِ رَسائِلكَ الآمِنَة عَلَى أيِّ جِهاز."; -"room_creation_make_private" = "جَعلَها خَاصَّة"; +"room_creation_make_private" = "اجَعلَها خَاصَّة"; "room_creation_keep_private" = "إبقَائَها خَاصَّة"; "room_creation_make_public_prompt_msg" = "هَل أنتَ مُتَأكِّدٌ أنَّكَ تُريدُ جَعلَ هَذِهِ المُحادَثَةَ عَامَّة؟ يُمكِنُ لَأيِّ شَخصٍ قِراءَةَ رَسائِلكِ وَالاِنضِمامِ إلَى المُحادَثَة."; "room_creation_make_public_prompt_title" = "جَعلَ هَذِهِ المُحادَثَةَ عَامَّة؟"; -"room_creation_make_public" = "جَعلَها عَامَّة"; +"room_creation_make_public" = "اجَعلَها عَامَّة"; "room_creation_public_room" = "هَذِهِ المُحادَثَةُ عَامَّة"; "room_creation_private_room" = "هَذِهِ المُحادَثَةُ خَاصَّة"; "room_creation_appearance_picture" = "صُوَرةُ المُحادَثَة (اِختياري)"; @@ -179,7 +179,7 @@ "room_participants_title" = "المُشَارِكُون"; "contacts_user_directory_offline_section" = "دَلِيلُ المُستَخدِم (غَيرُ مُتَّصِل)"; "contacts_user_directory_section" = "دَلِيلُ المُستَخدِم"; -"contacts_address_book_permission_denied" = "أنتَ لَم تَسمَح لِـElement بِالوصُولِ إلَى جِهاتِ الاِتِّصالِ المَحَلِّيَّةِ الخَاصَّةِ بِك"; +"contacts_address_book_permission_denied" = "أنتَ لَم تَسمَح %@ بِالوصُولِ إلَى جِهاتِ الاِتِّصالِ المَحَلِّيَّةِ الخَاصَّةِ بِك"; "contacts_address_book_permission_required" = "يُطلَبُ الإِذنُ لِلوصُلِ إلَى جِهاتِ الاِتِّصالِ المَحَلِّيَّة"; "contacts_address_book_no_contact" = "لَا تُوجَدُ جِهاتُ الاِتِّصالٍ المَحَلِّيَّة"; "contacts_address_book_no_identity_server" = "لَم يُضبَط خادِم هُويَّة"; @@ -189,8 +189,8 @@ "contacts_address_book_section" = "جِهاتُ الاِتِّصال المَحَلِّيَّة"; "directory_search_fail" = "فَشَلَ جَلبُ البَيَانَات"; "directory_searching_title" = "بَحثُ الدَّلِيلِ جَارٍ…"; -"directory_search_results_more_than" = ">عُثِرَ عَلَى %tu نَتِيجَة لِـ %@"; -"directory_search_results" = "عُثِرَ عَلَى %tu نَتِيجَة لِـ %@"; +"directory_search_results_more_than" = ">عُثِرَ عَلَى %tu نَتائج لِ%@"; +"directory_search_results" = "عُثِرَ عَلَى %tu نَتائج لِ%@"; "directory_search_results_title" = "تَصَفُحُ نَتائِجِ الدَّلِيل"; "directory_cell_description" = "%tu غُرَف"; @@ -233,7 +233,7 @@ // Room recents "room_recents_directory_section" = "دَلِيلُ الغُرَف"; "room_creation_error_invite_user_by_email_without_identity_server" = "لَم يُضبَط خادِم هُويَّة لِذَلِكَ لَا يُمكِنُكَ إضافَة مُشَارِك بالبَريد الإلِكتُرونيّ."; -"room_creation_invite_another_user" = "البَحث / الدَعوة عَن طَريق مُعَرِّف المُستَخدِم، الاِسم أو البَريد الإلِكتُرونيّ"; +"room_creation_invite_another_user" = "مُعَرِّف المُستَخدِم، الاِسم أو البَريد الإلِكتُرونيّ"; "room_creation_wait_for_creation" = "يَجرِي إنشاء غُرفَة بِالفِعل. يُرجَى الاِنتِظار."; "room_participants_remove_third_party_invite_prompt_msg" = "هَل أنتَ مُتَأكِّدٌ أنَّكَ تٌريدُ إبطَالَ هَذِهِ الدَّعوَة؟"; "room_participants_remove_prompt_msg" = "هَل أنتَ مُتَأكِّدٌ أنَّكَ تُريدُ إزالَة %@ مِن هَذِهِ المُحادَثَة؟"; @@ -265,7 +265,7 @@ "room_event_action_reaction_show_all" = "إظهَارُ الكُل"; "room_event_action_edit" = "تَحرِير"; "room_event_action_reply" = "الرَّدّ"; -"room_event_action_view_encryption" = "مَعلُومَاتُ التَّعمِيَة"; +"room_event_action_view_encryption" = "مَعلُومَاتُ التَشْفير"; "room_event_action_cancel_download" = "إلغَاءُ التَّنزيل"; "room_event_action_cancel_send" = "إلغَاءُ الإرسَال"; "room_event_action_delete_confirmation_message" = "هَل أنتَ مُتَأكِّدٌ أنَّكَ تٌريدُ حَذفَ هَذِهِ الرِّسَالَةَ غَيرِ المُرسَلَة؟"; @@ -275,12 +275,12 @@ "room_event_action_save" = "حِفظ"; "room_event_action_report_prompt_ignore_user" = "هَل تُريدُ إخفَاءَ جَميعِ الرَّسَائِلِ مِن هَذَا المُستَخدِم؟"; "room_event_action_ban_prompt_reason" = "سَبَبُ حَظْرِ هَذَا المُستَخدِم"; -"room_event_action_kick_prompt_reason" = "سَبَبُ طَردِ هَذَا المُستَخدِم"; +"room_event_action_kick_prompt_reason" = "سَبَبُ حذف هَذَا المُستَخدِم"; "room_event_action_report_prompt_reason" = "سَبَبُ الإبلَاغِ عَن هَذَا المُحتَوى"; "room_event_action_report" = "التَّبلِيغُ عَنِ المُحتَوَى"; "room_event_action_view_decrypted_source" = "الاِطِّلاعُ عَلَى المَصدَرِ مَفكُوكِ التَّعميَة"; "room_event_action_view_source" = "الاِطِّلاعُ عَلَى المَصدَر"; -"room_event_action_permalink" = "رَابِطٌ دَائِم"; +"room_event_action_permalink" = "نَسخ الرابِط إلى الرِسالة"; "room_event_action_share" = "مُشارَكَة"; "room_event_action_more" = "مَزيد"; "room_event_action_redact" = "إزالَة"; @@ -291,12 +291,12 @@ "room_prompt_cancel" = "إلغَاءُ الكُل"; "room_prompt_resend" = "إعادَةُ إرسَالِ الكُل"; "room_conference_call_no_power" = "تَحتَاجُ إلَى إذنٍ لِإدَارَةِ مُكالَمَةِ اِجتِمَاعٍ فِي هَذِهِ الغُرفَة"; -"room_ongoing_conference_call_with_close" = "مُكالَمَةُ اِجتِمَاعٍ مُستَمِرَّة. الاِنضِمَامُ كَـ%@ أَو %@. %@ها."; +"room_ongoing_conference_call_with_close" = "مُكالَمَةُ جَماعيّة مُستَمِرَّة. الاِنضِمَامُ كَ%@ أَو %@. %@ها."; "room_ongoing_conference_call_close" = "إِغلَاق"; -"room_ongoing_conference_call" = "مُكالَمَةُ اِجتِمَاعٍ مُستَمِرَّة. الاِنضِمَامُ كَـ%@ أَو %@."; +"room_ongoing_conference_call" = "مُكالَمَةُ جَماعِيَّةمُستَمِرَّة. الاِنضِمَامُ كَ%@ أَو %@."; "room_unsent_messages_cancel_message" = "هَل أنتَ مُتَأكِّدٌ أنَّكَ تٌريدُ حَذفَ جَميعِ الرَّسائِلِ غَيرِ المُرسَلَةِ فِي هَذِهِ الغُرفَة؟"; "room_unsent_messages_cancel_title" = "حَذفُ الرَّسائِلِ غَيرِ المُرسَلَة"; -"room_unsent_messages_unknown_devices_notification" = "فَشَلَ إرسَالُ الرَّسائِلِ بِسَبَبِ جَلسَاتٍ حَاليةٍ غَيرِ مَعرُوفَة."; +"room_unsent_messages_unknown_devices_notification" = "فَشَلَ في إرسَالُ الرِسالة بِسَبَبِ جَلسَاتٍ حَاليةٍ غَيرِ مَعرُوفَة."; "room_unsent_messages_notification" = "فَشَلَ إرسَالُ الرَّسائِل."; "room_offline_notification" = "فُقِدَ الاِتِّصَالُ بِالخَادِم."; "room_message_reply_to_short_placeholder" = "إرسَالُ رَدّ…"; @@ -332,7 +332,7 @@ "room_participants_security_loading" = "التَّحمِيلُ جَارٍ…"; "room_participants_action_security_status_loading" = "التَّحمِيلُ جَارٍ…"; "room_participants_action_security_status_warning" = "تَحذِير"; -"room_participants_action_security_status_complete_security" = "الأمَانُ الكَامِل"; +"room_participants_action_security_status_complete_security" = "أمَانُ كَامِل"; "room_participants_action_security_status_verify" = "تَأكِيدُ التَّحَقُّق"; "room_participants_action_security_status_verified" = "مُتَحَقَّقٌ مِنه"; "room_participants_action_mention" = "ذِكْر"; @@ -346,3 +346,630 @@ "room_participants_action_ignore" = "إخفَاءُ جَمِيعِ الرَّسائِلِ مِن هَذَا المُستَخدِم"; "room_recents_unknown_room_error_message" = "يَتَعَذَّر العُثُور عَلَى هَذِهِ الغُرفَة. تأكَّد مِن وجودِهَا"; "room_creation_dm_error" = "يَتَعَذَّرُ عَلينَا إنشَاء المُحادَثَة المُباشِرَة الخَّاصَةِ بِك. يُرجَى التَّحَقُقُ مِنَ المُستَخدِمِيَنَ اللَّذِينَ تُريدُ دَعوَتَهُم ثُمَّ المُحاوَلَةُ مَرةً أُخرَى."; +"onboarding_use_case_existing_server_button" = "اتَّصَلَ بالخادِم"; +"onboarding_use_case_existing_server_message" = "هَل تَتَطلَّع إلى الانْضِمام إلى الخادِم المَوجود؟"; +"onboarding_use_case_skip_button" = "تَخَطي هَذا السُؤال"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "لَستَ مٌتَأكداً بَعدَ؟ يُمَكَّنَك %@"; +"onboarding_use_case_community_messaging" = "المُجتَمَعَات"; +"onboarding_use_case_work_messaging" = "الفَرِقَ"; +"onboarding_use_case_personal_messaging" = "الأصَدقاء والعائِلة"; +"onboarding_use_case_message" = "سنساعَدَك على الاتصال."; +"onboarding_use_case_title" = "مَنْ الذي ستَتَحَدَّثَ إليه أكْثَر؟"; +"onboarding_splash_page_4_message" = "Element رائِع أيضاً لمَكان العَمِلَ. تَثِقُ به أكثر المٌؤسَسات أمانًا في العالم."; +"onboarding_splash_page_4_title_no_pun" = "مُراسَلة لفَريقك."; +"onboarding_splash_page_3_message" = "مشفرة من النِّهايَة-إلى-النِّهايَة بين الطَرفين ولا حَاجة إلى رَقم الهَاتِف. لا توجَد إعْلانات أو التَنقيب في البَيانات."; +"onboarding_splash_page_3_title" = "رسائل آمِنة."; +"onboarding_splash_page_2_message" = "اختارَ المَكان الَّذي يَتُمَ فيه الاحتِفاظ بمُحادثاتك، مَمّا يمنَحَكَ التَحكَم والاسْتِقلاليّة. مُتَّصل عبر Matrix."; +"onboarding_splash_page_2_title" = "أَنت المُتَحكِم."; +"onboarding_splash_page_1_message" = "اتصال آمِن ومُسْتَقِلّ يمنَحك نَفْس مُسْتَوى الخٌصوصيّة مِثْل مُحادثة وجهاً لوَجه في مَنْزِلك."; +"onboarding_splash_page_1_title" = "امْتَلَكَ مُحادَثَاتك."; +"onboarding_splash_login_button_title" = "لَدَّي حِساب بالفِعْل"; + +// Onboarding +"onboarding_splash_register_button_title" = "إنشاء حِساب"; +"accessibility_button_label" = "زِرّ"; +"done" = "تَم"; +"open" = "فَتح"; +"enable" = "تَفعِيل"; + + +// Room Details +"room_details_title" = "تَفاصيلُ الغُرفَة"; +"ok" = "حَسَناً"; +"room_resource_limit_exceeded_message_contact_1" = " رجاءً "; +"room_predecessor_link" = "اضَغَطَ هُنا لرُؤية الرَسائَل القَديمة."; +"room_predecessor_information" = "هَذِه الغُرفَة هي اسْتِمْرار لمُحادَثة أُخرى."; +"room_replacement_link" = "تَسْتَمَر المُحادَثة هَنا."; +"room_replacement_information" = "تَمّ اسْتِبْدال هَذِه الغُرفَة ولم تَعَد نَشِطة."; +"room_action_reply" = "رَدّ"; +"room_action_send_file" = "أَرسَلَ مَلَفّ"; +"room_action_send_sticker" = "أَرسَلَ مُلصَق"; +"room_action_send_photo_or_video" = "أَرسَلَ صُورة أو فيدِيو"; +"room_action_camera" = "الْتَقَطَ صُورة أو فيدِيو"; +"room_event_failed_to_send" = "فَشَل في الإرسَال"; +"room_warning_about_encryption" = "التَشْْفير التام بَين الطَرفين end-to-end encryption في مَرْحَلة تَجريبيّة وَقَدَ لا يكَوَّنَ دَقيقاً.\n\nيَجَبَّ ألا تَثِقَ به حتى الآن لتَأمين المَعلُومات.\n\nلَنْ تَتَمَكَّنَ الأجَهزة بعد مَن فَكّ تَشْفير السجل قَبل انْضِمامها إلى الغُرفة.\n\nلَنْ تَكَوُّن الرَسائِل المُشَفَّرة مَرئيّة للعُمَلاء الذين لم يطَبقوا التَشْفير بَعَد."; +"room_event_copy_link_info" = "تَمّ نَسْخ الرابِط إلى الحافِظة."; +"room_event_action_reaction_history" = "تاريخ رَدّ الفِعْل"; +"room_event_action_reply_in_thread" = "سِلسلة"; +"room_event_action_view_in_room" = "الاِطِّلاع في الغُرْفة"; +"room_event_action_forward" = "تحويل"; +"room_event_action_end_poll" = "إنهاء الاسْتِطْلاع"; +"room_event_action_remove_poll" = "إزالَة الاسْتِطْلاع"; +"find_your_contacts_identity_service_error" = "يَتَعَذَّر الاتصال بخادِم الهُويَّة."; +"find_your_contacts_footer" = "يمكن تَعطيل هَذا في أَي وَقْت من الإعدَادَات."; +"find_your_contacts_button_title" = "ابَحَثَ عن جِهاتُ الاِتِّصال الخاصة بِك"; +"find_your_contacts_message" = "دَعَّ %@ يَعَرُض جِهاتُ الاِتِّصال الخاصّة بِك حتى تَتَمكَّنَ من البَدء بسُرعة في المُحادَثَة مَعَ من تَعَرُّفهم بشَكل أَفْضَل."; +"find_your_contacts_title" = "ابَدَأَ بإدراج جِهاتُ الاِتِّصال الخاصة بِك"; +"contacts_address_book_permission_denied_alert_message" = "لتَفعِيل جِهاتُ الاِتِّصال، انتَقَلَ إلى إعدَادَات جِهازك."; +"contacts_address_book_permission_denied_alert_title" = "جِهاتُ الاِتِّصال مُعَطَّلة"; +"search_filter_placeholder" = "تصنيف"; +"room_recents_suggested_rooms_section" = "الغُرَفَ المقتَرَحَة"; +"room_resource_usage_limit_reached_message_1_monthly_active_user" = "لَقَد وَصْل هَذا الخادِم الرَّئيسي إلى الحَدَّ الشَهْريّ للمُستَخدِم النَشَطَ، لذا "; +"room_accessibility_thread_more" = "أَكْثَر"; +"room_resource_usage_limit_reached_message_1_default" = "تَجاوُز هَذا الخادِم الرَّئيسي أَحَد حُدود مَوْارِده، لِذا "; +"room_accessibility_integrations" = "تَكامُل"; +"room_accessibility_upload" = "رَّفع"; +"room_accessibility_threads" = "سَلاسل"; +"room_accessibility_hangup" = "أَغْلَقَ الخَطَّ"; +"room_resource_usage_limit_reached_message_2" = "لن يتَمَكَّنَ بَعْض المُستَخدِمين من تَسجيلُ الدُّخُول."; +"room_resource_usage_limit_reached_message_contact_3" = " لزِيادة هذا الحَدَّ."; +"room_accessibility_call" = "مُكالَمَة"; +"room_open_dialpad" = "لَوْحة الاتِصال"; +"room_accessibility_video_call" = "مُكالَمَة مَرئيَّة"; +"room_place_voice_call" = "مُكالَمَة صَوتيَّة"; +"room_resource_limit_exceeded_message_contact_2_link" = "اتَّصَلَ بمَسْؤول الخِدْمة الخاصّ بِكَ"; +"room_resource_limit_exceeded_message_contact_3" = " لمُواصَلة اسْتِخْدام هذه الخِدْمة."; +"room_message_edits_history_title" = "تَعْديلات الرِسَالَة"; +"room_accessibility_search" = "بَحثَ"; +"room_join_group_call" = "انْضَمَّ"; + + +// MARK: - MatrixKit + + + + +"show_details" = "إظهَارُ التَّفاصيل"; +"cancel_download" = "إلغَاءُ التَّنزيل"; +"cancel_upload" = "إلغَاءُ الرَّفع"; +"select_all" = "تَحدِيدُ الكُل"; +"resend_message" = "إعادَةُ إرسَالِ الرِّسالَة"; +"reset_to_default" = "إعادَةُ الضَّبط إلى الاِفتِراضي"; +"invite_user" = "دَعوَة مُستَخدِمِ matrix"; +"capture_media" = "اِلتِقَاطُ صُّورة/مَقطَعَ مَرئيّ"; +"attach_media" = "إرفاقُ وسائطٍ مِنَ المَكتَبَة"; +"select_account" = "حَدِّد حِسَابًا"; +"mention" = "الذِّكْر"; +"start_video_call" = "بَدءُ مُكالَمَةٍ مَرئيَّة"; +"start_voice_call" = "بَدءُ مُكالَمَةٍ صَوتيَّة"; +"start_chat" = "بَدءُ مُحادَثَة"; +"login_error_resource_limit_exceeded_contact_button" = "التَّواصُل مع المُدير"; +"login_error_resource_limit_exceeded_message_contact" = "\n\nيُرجَى التَّواصُل مَعَ مُدير خِدمَتك لِمُواصَلَة اِستِخدام هَذِهِ الخِدمَة."; +"set_admin" = "تَعيِينُ مُدير"; +"set_moderator" = "تَعيِينُ مُشرِف"; +"set_default_power_level" = "إعادَة ضَبط مُستَوى القُوَّة"; +"set_power_level" = "ضَبط مُستَوى القُوَّة"; +"submit_code" = "تَسلِيم الرَّمز"; +"submit" = "التَّسلِيم"; +"sign_up" = "الاِشتِراك"; +"dismiss" = "إبعَاد"; +"discard" = "اِستِبعاد"; +"abort" = "إِجهَاض"; +"yes" = "نَعَم"; + +// Action +"no" = "لَا"; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "هَذَا الخادِم الرَّئيسي قَد وَصَلَ إلى حَدّه الشَّهري للمُستخدِم النَّشِط."; +"login_error_resource_limit_exceeded_message_default" = "هَذَا الخادِم الرَّئيسي قَد تَجاوزَ أحَد حُدُود مَوارِده."; +"login_error_resource_limit_exceeded_title" = "تَمَّ تَجاوُز حَدّ المَورِد"; +"login_email_placeholder" = "عُنوان بَريد إلِكتُرونيّ"; +"login_email_info" = "إنَّ تَعيِين عُنوان بَريد إلِكتُرونيّ يُتيحُ لِلمُستَخدِمين الآخَرين العُثُور عَلَيك في Matrix بِشَكل أسهَل، وَيَمنَحُكَ طَريقَة لِإعادَة تَعيِين كَلِمة المُرُور الخاصَّة بِك في المُستَقبَل."; +"login_desktop_device" = "سَطح مَكتَب"; +"login_tablet_device" = "لَوحي"; +"login_mobile_device" = "هَاتِف"; +"login_error_forgot_password_is_not_supported" = "نِسيان كَلِمَة المُرُور غَير مَدعُوم حاليًا"; +"register_error_title" = "فَشَلَ التَّسجِيل"; +"login_invalid_param" = "مُعامِل غَير صَالِح"; +"login_leave_fallback" = "إلغَاء"; +"login_use_fallback" = "اِستِخدام صَفحَة اِحتياطيَّة بَديلَة"; +"login_error_user_in_use" = "إنَّ اِسم المُستَخدِم هَذَا مُستخدَمٌ بِالفِعل"; +"login_error_limit_exceeded" = "لَقَد أُرسِلَت العَديد مِنَ الطَّلَبات"; +"login_error_not_json" = "لَم يَحتَوي عَلَى JSON صالِح"; +"login_error_bad_json" = "إنَّ JSON مُشَوَّه"; +"login_error_unknown_token" = "لَم يَتِمّ التَّعرُّف عَلَى رَمز الوُصُول المَذكُور"; +"login_error_forbidden" = "اِسم مُستَخدِم/كَلِمَةُ مُرُور غَير صالِحَة"; +"login_error_registration_is_not_supported" = "إنَّ التَّسجِيل غَير مَدعوم حاليًا"; +"login_error_do_not_support_login_flows" = "حاليًا، نَحنُ لا نَدعَم أيًا مِن تَدَفُقات تَسجيل الدُّخُول المُعَرَّفة بِواسِطَة هَذَا الخادِم الرَّئيسي"; +"login_error_no_login_flow" = "لَقَد فَشلنَا في اِستِرداد بَيَانات المُصادَقَة مِن هَذَا الخادِم الرَّئيسي"; +"login_error_title" = "فَشَلَ تَسجيلُ الدُّخُول"; +"login_prompt_email_token" = "يُرجى إدخال رَمز التَّحقُّق مِنَ البَريد الإلِكتُرونيّ الخاص بِك:"; +"login_user_id_placeholder" = "مُعَرِّف Matrix (مِثل bob:matrix.org@ أو bob)"; +"login_display_name_placeholder" = "الاِسم الظّاهِر (مِثل. محمد عبدالله)"; +"login_optional_field" = "اِختياري"; +"login_password_placeholder" = "كَلِمَةُ المُرُور"; +"login_identity_server_info" = "تُوَفِّرُ Matrix خَوادِم هُويَّة لتَتَبُع عَناوين البَريد الإلِكتُرونيّ وَما إلى ذَلِكَ مِنَ الَّتي تَنتَمي إلى مُعَرِّفات Matrix. فَقَط https://matrix.org مُتَوَفِّر حاليًا."; +"login_identity_server_title" = "عُنوان URL لِخادِم الهُويَّة:"; +"login_home_server_info" = "الخادِم الرَّئيسي الخاصّ بِك يُخَزِّنُ جَميع مُحادَثاتك وَمَعلُومات حِسابك"; +"login_home_server_title" = "عُنوان URL لِلخادِم الرَّئيسي:"; +"login_server_url_placeholder" = "عُنوان URL (مِثل https://matrix.org)"; + +// Login Screen +"login_create_account" = "إنشاءُ حِساب:"; +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "Matrix"; +"notice_encrypted_message" = "رِسَالَةٌ مُعمّاة"; +"notice_room_related_groups" = "المَجمُوعاتُ المُرتَبِطَةُ بِهَذِهِ الغُرفَةِ هِيَ: %@"; +"notice_room_aliases_for_dm" = "الاَسماءُ البَديلَة هِيَ: %@"; +"notice_room_aliases" = "الاَسماءُ البَديلَة لِلغُرفَة هِيَ: %@"; +"notice_room_power_level_event_requirement" = "مُستَوى القُوَّة الأدنَى المُتَعلِّقُ بِالأحداث هُوَ:"; +"notice_room_power_level_acting_requirement" = "مُستَوى القُوَّة الأدنَى الَّذي يَجِبُ عَلَى المُستَخدِم اِمتِلاكُه قَبلَ التَّفاعُل هُوَ:"; +"notice_room_power_level_intro_for_dm" = "مُستَوى القُوَّة لِلأعضاءِ هُوَ:"; +"notice_room_power_level_intro" = "مُستَوى القُوَّة لِأعضاءِ الغُرفَة هُوَ:"; +"notice_room_join_rule_public_by_you_for_dm" = "أنتَ قَد جَعلتَ هَذِهِ عَامَّة."; +"notice_room_join_rule_public_by_you" = "أنتَ قَد جَعلتَ الغُرفَةَ عَامَّة."; +"notice_room_join_rule_public_for_dm" = "لَقَد جَعَلَ %@ هَذِهِ عَامَّة."; +"notice_room_join_rule_public" = "لَقَد جَعَلَ %@ الغُرفَةَ عَامَّة."; +"notice_room_join_rule_invite_by_you_for_dm" = "أنتَ قَد جَعلتَ هَذِهِ بالدَّعوَةِ فَقَط."; +"notice_room_join_rule_invite_by_you" = "أنتَ قَد جَعلتَ الغُرفَةَ بالدَّعوَةِ فَقَط."; +"notice_room_join_rule_invite_for_dm" = "لَقَد جَعَلَ %@ هَذِهِ بِالدَّعوَةِ فَقَط."; +// New +"notice_room_join_rule_invite" = "لَقَد جَعَلَ %@ الغُرفَةَ بِالدَّعوَةِ فَقَط."; +// Old +"notice_room_join_rule" = "قاعِدَة الاِنضِمام هِيَ: %@"; +"notice_room_created_for_dm" = "لَقَد اِنضَمَّ %@."; +"notice_room_created" = "لَقَد أنشأ %@ الغُرفَة وَهَيَّأَها."; +"notice_profile_change_redacted" = "لَقَد حدَّثَ %@ مَلفَّهُ الشَّخصي %@"; +"notice_event_redacted_reason" = " [السَّبَب: %@]"; +"notice_event_redacted_by" = " بِواسِطَة %@"; +"notice_event_redacted" = "<مُنَقَّح%@>"; +"notice_room_topic_removed" = "لَقَد أزالَ %@ المَوضُوع"; +"notice_room_name_removed_for_dm" = "لَقَد أزالَ %@ الاِسم"; +"notice_room_name_removed" = "لَقَد أزالَ %@ اِسمَ الغُرفَة"; + +// Events formatter +"notice_avatar_changed_too" = "(غُيِّرَت الصُّورَة الرَّمزية أيضًا)"; +"unignore" = "إلغَاءُ التَّجاهُل"; +"ignore" = "تَجاهُل"; +"end_call" = "إنهَاءُ المُكالَمَة"; +"reject_call" = "رَفضُ المُكالَمَة"; +"answer_call" = "الإجابَةُ عَلَى المُكالَمَة"; +"attachment_multiselection_original" = "الحَجمُ الفِعلي"; +"attachment_multiselection_size_prompt" = "هَل تُريدُ إِرسَالَ الصُّوَرِ على النَحوَ التالي:"; +"attachment_cancel_upload" = "إلغَاء الرَّفع؟"; +"attachment_cancel_download" = "إلغَاء التَّنزيل؟"; +"attachment_large" = "كَبير: %@"; +"attachment_medium" = "مُتَوَسِّط: %@"; +"attachment_small" = "صَغير: %@"; +"attachment_original" = "الحَجمُ الفِعلي: %@"; + +// Attachment +"attachment_size_prompt" = "هَل تُريدُ الإِرسَالَ على النَحوَ التالي:"; +"room_member_power_level_prompt" = "لَن تَكُونَ قَادِرًا عَلَى التَّراجُع عَن هَذا التَّغيِير فَأنتَ تُرَقِّي المُستَخدِم لِيَكُونَ لَهُ نَفس مُستَوى القُوَّة الَّذِي لدَيك.\nهَل أَنتَ مُتَأكِّد؟"; + +// Room members +"room_member_ignore_prompt" = "هَل أنتَ مُتَأكِّدٌ مِن رَغبَتِكَ فِي إخفَاءِ جَميعِ الرَّسَائِل عَن هَذَا المُستَخدِم؟"; +"message_reply_to_message_to_reply_to_prefix" = "رَدًّا عَلَى"; +"message_reply_to_sender_sent_a_file" = "أرسَلَ مَلَفّ."; +"message_reply_to_sender_sent_a_video" = "أرسَلَ مَقطَعًا مَرئيًا."; +"message_reply_to_sender_sent_an_audio_file" = "أرسَلَ مَلَفًّا صَوتيًا."; + +// Reply to message +"message_reply_to_sender_sent_an_image" = "أرسَلَ صُورَةَ."; +"room_no_conference_call_in_encrypted_rooms" = "إنَّ مُكالَمَاتُ الاِجتِمَاع غَيرُ مَدعُومَةٍ فِي الغُرَفِ المُعمّاة"; +"room_no_power_to_create_conference_call" = "أنتَ بِحاجَةٍ إلَى إذن لِلدَّعوَة حَتَّى تَبدَأَ اِجتِمَاع فِي هَذِهِ الغُرفَة"; +"room_left_for_dm" = "أنتَ قَد غادَرت"; +"room_left" = "أنتَ قَد غادَرتَ الغُرفَة"; +"room_error_timeline_event_not_found" = "التَّطبيقُ كَانَ يُحاوِلُ تَحميلَ نُقطَةٍ مُعَيَّنَةٍ مِنَ الخَطِّ الزَّمَنيِ لِهَذِهِ الغُرفَة لَكِن تَعَذَّرَ عَليهِ العُثُور عَلَيهَا"; +"room_error_cannot_load_timeline" = "فَشَلَ تَحمِيلُ الخَطِّ الزَّمَنِي"; +"room_error_timeline_event_not_found_title" = "فَشَلَ تَحمِيلُ مَوضِعِ الخَطِّ الزَّمَنِي"; +"room_error_topic_edition_not_authorized" = "أنتَ غَيرُ مُخَوَّلٍ لِتَحرِيرِ مَوضُوعِ هَذِهِ الغُرفَة"; +"room_error_name_edition_not_authorized" = "أنتَ غَيرُ مُخَوَّلٍ لِتَحرِيرِ اِسمِ هَذِهِ الغُرفَة"; +"room_error_join_failed_empty_room" = "حاليًّا مِن غَيرِ المُمكِنِ إعادَةُ الاِنضِمامِ إلى غُرفَةٍ فارِغَة."; +"room_error_join_failed_title" = "فَشَلَ الاِنضِمام إلى الغُرفَة"; + +// Room +"room_please_select" = "يُرجَى تَحديدُ غُرفَة"; +"room_creation_participants_placeholder" = "(مثلاً ‭(...@bob:homeserver1; @john:homeserver2"; +"room_creation_participants_title" = "المُشَارِكُون:"; +"room_creation_alias_placeholder_with_homeserver" = "(مِثل. %@foo#)"; +"room_creation_alias_placeholder" = "(مِثل. foo:example.org#)"; +"room_creation_alias_title" = "اِسمُ الغُرفَةِ البَديل:"; +"room_creation_name_placeholder" = "(مِثل. مجموعة الغداء)"; + +// Room creation +"room_creation_name_title" = "اِسمُ الغُرفَة:"; +"account_error_push_not_allowed" = "الإِشعَاراتُ غَيرُ مَسمُوحَة"; +"account_error_msisdn_wrong_description" = "يَبدو أنَّ هَذَا لَيسَ رَقمُ هَاتِفٍ صَالِح"; +"account_error_msisdn_wrong_title" = "رَقمُ هَاتِفٍ غَيرُ صَالِح"; +"account_error_email_wrong_description" = "يَبدو أنَّ هَذَا لَيسَ عُنوان بَريد إلِكتُرونيّ صَالِح"; +"account_error_email_wrong_title" = "عُنوانُ بَريدٍ إلِكتُرونيّ غَيرَ صَالِح"; +"account_error_matrix_session_is_not_opened" = "جَلسَةُ Matrix غَيرَ مَفتُوحَة"; +"account_error_display_name_change_failed" = "فَشَلَ تَغيِيرُ الاِسم الظّاهِر"; +"account_error_picture_change_failed" = "فَشَلَ تَغيِيرُ الصُّورَة"; +"account_msisdn_validation_error" = "يَتَعَذَّرُ التَّحَقُّق مِن رَقمِ الهَاتِف."; +"account_msisdn_validation_message" = "لَقَد أرسَلنا رِسَالَة SMS تَحوِي رَمزًا لِلتَفعِيل. يُرجَى إدخَالُ هَذَا الرَّمز أَدناه."; +"account_msisdn_validation_title" = "قَيدُ التَّحَقُّق"; +"account_email_validation_title" = "قَيدُ التَّحَقُّق"; +"account_email_validation_error" = "يَتَعَذَّر التَّحَقُّق مِن عُنوان البَريد إلِكتُرونيّ. يُرجَى الاِطِّلاع عَلَى البَريد إلِكتُرونيّ الخاصّ بِك ثُمَّ النَّقر عَلَى الرَّابِط الّذي يَحوِيه. بِمُجَرَّد الاِنتِهاء مِن ذَلِك، اُنقُر عَلَى الاِستِمرار"; +"account_email_validation_message" = "يُرجَى الاِطِّلاعُ عَلَى البَريدِ إلِكتُرونيّ الخاصِّ بِك ثُمَّ النَّقرَ عَلَى الرَّابِط الَّذي يَحوِيه. بِمُجَرَّدِ الاِنتِهاءُ مِن ذَلِك، اُنقُر عَلَى الاِستِمرار."; +"account_linked_emails" = "عَناوينُ البَريدِ الإلِكتُرونيّ المُرتَبِطَة"; +"account_link_email" = "رَبطُ بَريدٍ إلِكتُرونيّ"; + +// Account +"account_save_changes" = "حِفظُ التَّغَيُّرات"; +"room_event_encryption_verify_ok" = "تَأكِيدُ التَّحَقُّق"; +"room_event_encryption_verify_message" = "لِلتَحَقُّق مِن إِمكانيَّة الوُثُوق بِهَذِه الجَلسَة، يُرجَى التَّوَاصُل مَعَ المَالِك بِاِستِخدام بَعض الوَسَائِل الأُخرَى (عَلَى سَبِيلِ المِثَال شَخصيًّا أَو عَن طَرِيق مُكَالَمَة هَاتِفيَّة) وَاِسأَلهُ عَمَّا إِذَا كَانَ المِفتَاح الَّذِي يَرَاه فِي إعدادَات المُستَخدِم لِهَذِهِ الجَلسَة يَتَطَابَقُ مَعَ المِفتَاح أَدناه:\n\nاِسم الجَلسَة: %@\nمُعَرِّف الجَلسَة: %@\nمِفتَاح الجَلسَة: %@\n\nإِذَا تَطَابق، اِضغَط عَلَى زِرِّ التَّحَقُّق أَدناه. إِذَا لَم يَحدُث ذَلِك، فَهَذَا يَعنِي أَنَّ شَخصًا آخَر يَعتَرَضُ هَذِهِ الجَلسَة وَرُبَّما تُوَدُّ الضَّغطَ عَلَى زِرُّ الإضافَةِ لِلقَائِمَة السَّوداء بَدَلَا مِن ذَلِك.\n\n سَوفَ تَكُونُ عَمَلِيَّةُ التَّحَقُّقِ هَذِهِ أَكثَرُ تَطَوُّرًا في المُستَقبَل."; +"room_event_encryption_verify_title" = "التَّحَقُّقُ مِنَ الجَلسَة\n\n"; +"room_event_encryption_info_unblock" = "الإزالَة مِنَ القائِمَةِ السَّوداء"; +"room_event_encryption_info_block" = "الإضافَةُ إلى القائِمَةِ السَّوداء"; +"room_event_encryption_info_unverify" = "إلغَاءُ التَّحَقُّق"; +"room_event_encryption_info_verify" = "يَجري التَّحَقُّق..."; +"room_event_encryption_info_device_blocked" = "ضِمنُ القائِمَةِ السَّوداء"; +"room_event_encryption_info_device_not_verified" = "غَيرُ مُتَحَقَّقٍ مِنه"; +"room_event_encryption_info_device_verified" = "مُتَحَقَّقٌ مِنه"; +"room_event_encryption_info_device_fingerprint" = "بَصمَة Ed25519\n"; +"room_event_encryption_info_device_verification" = "التَّحَقُّق\n"; +"room_event_encryption_info_device_id" = "المُعَرِّف\n"; +"room_event_encryption_info_device_name" = "الاِسمُ العَامّ\n"; +"room_event_encryption_info_device_unknown" = "جَلسَةٌ غَيرَ مَعرُوفة\n"; +"room_event_encryption_info_device" = "\nمَعلُومَاتُ جَلسَةِ المُرسِل\n"; +"room_event_encryption_info_event_none" = "لَا شَيء"; +"room_event_encryption_info_event_unencrypted" = "غَيرُ مُعَمَى"; +"room_event_encryption_info_event_decryption_error" = "خَطَأٌ فِي فَكِّ التَّعميَة\n"; +"room_event_encryption_info_event_session_id" = "مُعَرِّفُ الجَلسَة\n"; +"room_event_encryption_info_event_algorithm" = "خَوارِزميَّة\n"; +"room_event_encryption_info_event_fingerprint_key" = "مُطَالَبَةُ مِفتَاحِ بَصمَة Ed25519\n"; +"room_event_encryption_info_event_identity_key" = "مِفتَاحُ هُويَّة Curve25519\n"; +"room_event_encryption_info_event_user_id" = "مُعَرِّفُ المُستَخدِم\n"; +"room_event_encryption_info_event" = "مَعلُومَاتُ الحَدَث\n"; + +// Encryption information +"room_event_encryption_info_title" = "مَعلُومَاتُ تَعمِيَةِ النِّهايَة-إلى-النِّهايَة\n\n"; +"device_details_delete_prompt_message" = "هَذِهِ العَمَلِيَّة تَتَطَلَّبُ مُصادَقةً إضافيَة.\nللاِستِمرار، يُرجَى إدخَالُ كَلِمَةُ المُرُورِ الخاصَّةِ بِك."; +"device_details_delete_prompt_title" = "المُصادَقَة"; +"device_details_rename_prompt_message" = "إنَّ اِسمَ الجَلسَةِ العَامّ مَرئيٌّ لِلأشخَاصِ الَّذِينَ تَتَواصَلُ مَعَهُم"; +"device_details_rename_prompt_title" = "اِسمُ الجَلسَة"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_last_seen" = "آخِرُ ظُهور\n"; +"device_details_identifier" = "المُعَرِّف\n"; +"device_details_name" = "الاِسمُ العَامّ\n"; + +// Devices +"device_details_title" = "مَعلُومَاتُ الجَلسَة\n"; +"notification_settings_room_rule_title" = "الغُرفَة: '%@'"; +"settings_enter_validation_token_for" = "أدخِل رَمزَ المُصادَقَة لِأجل %@:"; +"settings_enable_push_notifications" = "تَفعِيلُ دَفعِ الإِشعَارات"; +"settings_enable_inapp_notifications" = "تَفعِيلُ الإِشعَاراتِ دَاخِلَ التَّطبِيق"; + +// Settings +"settings" = "الإعدَادَات"; +"room_displayname_more_than_two_members" = "العُضو %@ وَعَدَد %@ آخَرُون"; +"room_displayname_two_members" = "العُضو %@ وَ %@"; + +// room display name +"room_displayname_empty_room" = "غُرفَةٌ فَارِغَة"; +"notice_in_reply_to" = "رَدًّا عَلَى"; +"notice_sticker" = "مُلصَق"; +"notice_crypto_error_unknown_inbound_session_id" = "إنَّ جَلسَةَ المُرسِل لَم تُرسِل إلَينا المَفاتيح لِهَذِهِ الرِّسَالَة."; +"notice_crypto_unable_to_decrypt" = "** يَتَعَذَّرُ فَكَّ التَّعميَة: %@ **"; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "لَقَد جَعَلَ %@ الرَّسائِلَ المُستَقبَليَّة مَرئيَّةٌ لِلجَميع، مُنذُ أنِ اِنضَمُّوا."; +"notice_room_history_visible_to_members_from_joined_point" = "لَقَد جَعَلَ %@ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة، مِنَ النُّقطَةِ الَّتي اِنضَمُّوا فِيهَا."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "لَقَد جَعَلَ %@ الرَّسائِلَ المُستَقبَليَّة مَرئيَّةٌ لِلجَميع، مُنذُ أن تَمَّت دَعوَتُهُم."; +"notice_room_history_visible_to_members_from_invited_point" = "لَقَد جَعَلَ %@ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة، مِنَ النُّقطَةِ الَّتي تَمَّت دَعوَتُهُم فِيهَا."; +"notice_room_history_visible_to_members_for_dm" = "لَقَد جَعَلَ %@ الرَّسائِلَ المُستَقبَليَّة مَرئيَّةٌ لِجَميعِ أعضاءِ الغُرفَة."; +"notice_room_history_visible_to_members" = "لَقَد جَعَلَ %@ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة."; +"notice_room_history_visible_to_anyone" = "لَقَد جَعَلَ %@ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِأَيّ شَخص."; +"notice_error_unknown_event_type" = "حَدثٌ غَيرُ مَعرُوفِ النَّوع"; +"notice_error_unexpected_event" = "حَدَثٌ غَيرُ مُتَوَقَّع"; +"notice_error_unsupported_event" = "حَدَثٌ غَيرُ مَدعُوم"; +"notice_redaction" = "لَقَد نَقَّحَ %@ حَدَث (المُعَرِّف: %@)"; +"notice_feedback" = "حَدَثُ اِنطِباع (المُعَرِّف: %@): %@"; +"notice_unsupported_attachment" = "مُرفَقٌ غَيرُ مَدعُوم: %@"; +"notice_invalid_attachment" = "مُرفَقٌ غَيرُ صَالِح"; +"notice_file_attachment" = "مُرفَقُ مَلَفّ"; +"notice_location_attachment" = "مُرفَقُ مَوقِعٍ جُغرَافِيّ"; +"notice_video_attachment" = "مُرفَق مَقطَع مَرئي"; +"notice_audio_attachment" = "مُرفَق صَوت"; +"notice_image_attachment" = "مُرفَق صُّورَة"; +"notice_encryption_enabled_unknown_algorithm" = "لَقَد شَغَّلَ %1$@ تَعميَة النِّهايَة-إلى-النِّهايَة (خَوارِزميَّة غَير مُتَعَرَّف عَليها %2$@)."; +"notice_encryption_enabled_ok" = "لَقَد شَغَّلَ %@ تَعميَة النِّهايَة-إلى-النِّهايَة."; +"power_level" = "مُستَوى القُوَّة"; +"public" = "عَامّ"; +"private" = "خاصّ"; +"default" = "الاِفتراضي"; +"not_supported_yet" = "غَيرُ مَدعُومَةٍ حَتَّى الآن"; +"error_common_message" = "لَقَد حَدَثَ خَطَأ. يُرجَى المُحاوَلَة مَرَّةً أُخرَى."; +"error" = "خَطَأ"; +"unsent" = "غَيرُ مُرسَلَة"; +"offline" = "غَيرُ مُتَّصِل"; + +// Others +"user_id_title" = "مُعَرِّف المُستَخدِم:"; +"e2e_passphrase_not_match" = "عِبارَاتُ المُرُورِ يَجِبُ أن تَكُونَ مُتَطابَقة"; +"e2e_passphrase_create" = "إنشاءُ عِبارَةِ مُرُور"; +"e2e_passphrase_empty" = "عِبارَةُ المُرُورِ يَجِبُ ألَا تَكونَ خَالِيَة"; +"e2e_passphrase_confirm" = "تَأكيدُ عِبارَةِ المُرُور"; +"e2e_export_prompt" = "تُتيحُ لَكَ هَذِهِ العَمَلِيَّة تَصدير مَفاتيح الرَّسائِل الَّتي قَد تَلَقَّيتَها فِي الغُرَف المُعَمّاة إلى مَلَفّ مَحَلِّيّ. يُمكِنُكَ بَعدَ ذَلِكَ أن تَستَورِدَ المَلَفّ إلى عَميل Matrix آخر في المُستَقبَل، لِكَي يَتَمَكَّن هَذَا العَميل أيضًا مِن فَكّ تَعمِيَة هَذِهِ الرَّسائِل.\nالمَلَفّ الَّذِي قَد تَمَّ تَصديرُه سَيَسمَحُ لِأيّ شَخص يُمكِنَهُ قِرَاءته أن يَفُكّ تَعمِيَة أيّ رَسائِل مُعمّاة يُمكِنُكَ رُؤيَتها، لِذَلِك يَجِبُ أن تَكُونَ حَريصًا عَلَى إبقائه آمِن."; +"e2e_export" = "تَصدير"; + +// E2E export +"e2e_export_room_keys" = "تَصديرُ مَفاتيحِ الغُرفَة"; +"e2e_passphrase_enter" = "أدخِل عِبارَةَ المُرُور"; +"e2e_import" = "اِستيراد"; +"e2e_import_prompt" = "تُتِيحُ لَكَ هَذِهِ العَمَلِيَّة اِستيراد المَفاتيح الَّتي قَد صَدَّرتَهَا مُسبقًا مِن عَميل Matrix آخر. أنتَ سَتَتَمَكَّن بَعدَ ذَلِك مِن فَكّ تَّعميَة جَميع رَسائِل الَّتي يُمكِن لِلعَميل الآخر فَكّ تَعمِيَتها.\nإنَّ المَلَفّ الْمُصَدَّر مَحميّ بِعِبارَة مُرُور. يَجِبُ إدخال عِبارَة المُرُور هُنا لِفَكّ تَعمِيَة المَلَفّ."; + +// E2E import +"e2e_import_room_keys" = "اِستيرادُ مَفاتيحِ الغُرفَة"; +"format_time_d" = "ي"; +"format_time_h" = "س"; +"format_time_m" = "د"; + +// Time +"format_time_s" = "ث"; +"search_searching" = "يَجري البَحث..."; + +// Search +"search_no_results" = "لَا تُوجَدُ نَتائِج"; + +// Groups +"contact_local_contacts" = "جِهاتُ الاِتِّصالِ المَحَلِّيَّة"; + +// Contacts +"contact_mx_users" = "مُستَخدِمُو Matrix"; +"attachment_e2e_keys_import" = "يَجري الاِستيراد..."; +"attachment_e2e_keys_file_prompt" = "يَحتَوي هَذَا المَلَفّ عَلَى مَفاتيح تَعمِيَة قَد تمَّ تَصديرُها مِن عَميلِ Matrix.\nهَل تُريدُ عَرضَ مُحتَوى المَلفّ أمِ اِستيرادُ المَفاتيحِ الَّتي يَحويها؟"; + +// Settings screen +"settings_title_config" = "الإعداد"; +"notice_room_third_party_registered_invite_by_you" = "أنتَ قَد قَبلتَ دَعوَة %@"; +"notice_room_third_party_revoked_invite" = "لَقَد ألغَى %@ دَعوَة %@ لِلاِنضِمام إلى الغُرفَة"; +"notice_room_third_party_registered_invite" = "لَقَد قَبَلَ %@ دَعوَةَ %@‏"; +"ssl_only_accept" = "فَقَطّ اِقبَل الشَّهادَة إذا نَشَرَ مُدير الخادِم بَصمَة تُطابِق البَصمَة أعلَاه."; +"ssl_expected_existing_expl" = "لَقَد تَغَيَّرَت الشَّهادَة الَّتي قَد كانَت مَوثُوقَة مُسبَقًا إلى أُخرَى غَير مَوثُوقَة. مِنَ المُمكِن أنَّ الخادِم قَد جَدَّدَ شَهادَته. تَواصَل مَعَ المُدير لِلحُصُول عَلَى البَصمَة المُتَوَقَّعَة."; +"ssl_unexpected_existing_expl" = "تَمَّ تَغيِير الشَّهادَة الَّتي قَد كانَت مَوثُوقة مِن قِبَل هاتِفك. هَذَا غَيرُ طَبِيعِيّ لِلغَايَة. يُوصَى بِعَدَم قُبُول هَذِهِ الشَّهادَة الجَديدَة."; +"ssl_cert_new_account_expl" = "إذَا قَالَ مُديرُ الخادِم أنَّ هَذَا مُتَوَقَّع، فَتَأكَّد مِن تَطابُق البَصمَة أدناه مَعَ البَصمَة الَّتي قَد قَدَّمَها."; +"ssl_cert_not_trust" = "هَذَا قَد يَعني أنَّ شَخصًا ما يَعتَرِضُ حَرَكَة المُرُور الخَاصَّةِ بِك بِخُبث، أو أنَّ هَاتِفَكَ لا يَثِقُ في الشَّهادَة المُقَدَّمَة مِنَ الخادِمِ البَعيد."; +"notification_settings_per_word_info" = "تُطابَق الكَلِمات مَعَ حالَة الأحرُف بِشَكل غَير حَساس، وَقَد تَتَضَمَّن حَرف البَدَل *. وَبِالتَّالي:\nإنَّ foo تَتَطابَق مَعَ السِّلسِلَة foo المُحاطَة بِمُحَدِّدِات الكَلِمَة (مِثل عَلامات التَّرقيم وَالمَسافَة البَيضاء أو بِدايَة/نِهايَة السَّطر).\nإنَّ *foo تَتَطابَق مَعَ أي كَلِمَة تَبدَأُ بfoo.\nإنَّ *foo* تَتَطابَق مع أي كَلِمَة مِن هَذَا القَبيل وَتَتَضَمَّن الثَّلاث أحرُف foo."; +"notification_settings_global_info" = "تَُحفَظُ إعدادات الإشعَارات في حِسابِ المُستَخدِم الخاصِّ بِك وَتَتِمُّ مُشارَكَتَها بَينَ جَمِيعِ العُمَلاء الَّذينَ يَدعَمُونَها (بِما في ذَلِكَ إشعَاراتُ سَطحِ المَكتَب).\n\nيَتِمُّ تَطبيق القَواعِد بِالتَرتيب؛ أوَّل قاعِدَة تَتَطَابَق تُحَدِّد النَّتيجَة لِلرِسالَة.\nإذًا: الإِشعَارات وَفقًا لِلكَلِمَة أكثَرُ أولَويَّة مِنَ الإِشعَارات وَفقًا لِلغُرفَة الَّتِي أيضًا أكثَرُ أولَويَّة مِنَ الإِشعَارات وَفقًا لِلمُرسِل.\nبِالنِّسبَةِ لِلقَواعِد المُتَعَدِّدَة مِن نَفسِ النَّوع، تَكُونُ الأَولَويَّة لِأوَّل قاعِدَة تَتَطابَق في القائِمَة."; +"login_error_login_email_not_yet" = "لَم يُنقَر عَلَى الرَّابِط الَّذي في البَريد الإلِكتُرونيّ حَتَّى الآن"; +"ssl_could_not_verify" = "تَعَذَّرَ التَّحَقُّق مِن هُوِيَّة الخَادِم البَعيد."; +"ssl_fingerprint_hash" = "بَصمَة (%@):"; +"ssl_remain_offline" = "تَجاهُل"; +"ssl_logout_account" = "تَسجِيلُ الخُرُوج"; + +// unrecognized SSL certificate +"ssl_trust" = "الوُثُوق"; +"call_invite_expired" = "لَقَد اِنتَهَت صَلاحيَّةُ دَعوَة المُكالَمَة"; +"incoming_voice_call" = "مُكالَمَةٌ صَوتيَّةٌ وَارِدَة"; +"incoming_video_call" = "مُكالَمَةٌ مَرئيَّةٌ وَارِدَة"; +"call_ring" = "تَجري المُكالَمَة…"; +"call_ended" = "اِنتَهَت المُكالَمَة"; +"call_connecting" = "الاِتِّصالُ جارٍ…"; + +// Settings keys + +// call string +"call_waiting" = "يَجري الاِنتِظار…"; +"settings_config_user_id" = "مُعَرِّفُ المُستَخدِم: %@"; +"settings_config_identity_server" = "خادِم الهُويَّة: %@"; + +// gcm section +"settings_config_home_server" = "الخادِم الرَّئيسي: %@"; +"notification_settings_notify_all_other" = "أخطِرني لِكَافَّةِ الرَّسائِل/الغُرَف الأُخرَى"; +"notification_settings_by_default" = "بِشَكلٍ اِفتِراضي..."; +"notification_settings_suppress_from_bots" = "كَتْمُ الإشعَارات مِنَ الرُّوبُوتَات"; +"notification_settings_receive_a_call" = "أخطِرني عِندَما أَتَلَقَّى مُكالَمَة"; +"notification_settings_people_join_leave_rooms" = "أخطِرني عِندَما يَنضَمّ الأشخاص أو يُغادِرُوا الغُرَف"; +"notification_settings_invite_to_a_new_room" = "أخطِرني عِندَما أُدعَى إلى غُرفَة جَديدَة"; +"notification_settings_just_sent_to_me" = "أخطِرني بِالصَّوت حَولَ الرَّسَائِل الَّتي أُرسِلَت إليَّ فَقَط"; +"notification_settings_contain_my_display_name" = "أخطِرني بِالصَّوت حَولَ الرَّسَائِل الَّتي تَحتَوي عَلَى الاِسم الظّاهِر الخاصّ بِي"; +"notification_settings_contain_my_user_name" = "أخطِرني بِالصَّوت حَولَ الرَّسَائِل الَّتي تَحتَوي عَلَى اِسم المُستَخدِم الخاصّ بِي"; +"notification_settings_other_alerts" = "تَنبيهاتٌ أُخرَى"; +"notification_settings_select_room" = "حَّدِد غُرفَة"; +"notification_settings_sender_hint" = "user:domain.com@"; +"notification_settings_per_sender_notifications" = "الإِشعَاراتٌ وَفقًا لِلمُرسِل"; +"notification_settings_per_room_notifications" = "الإِشعَاراتُ وَفقًا لِلغُرفَة"; +"notification_settings_custom_sound" = "صَوتٌ مُخَصَّص"; +"notification_settings_highlight" = "إبرَاز"; +"notification_settings_word_to_match" = "كَلِمَةٌ لِلمُطابَقَة"; +"notification_settings_never_notify" = "لا تُخطِرني أبَدًا"; +"notification_settings_always_notify" = "أخطِرني دَومًا"; +"notification_settings_per_word_notifications" = "الإِشعَاراتُ وَفقًا لِلكَلِمَة"; +"notification_settings_enable_notifications_warning" = "جَميعُ الإِشعَاراتِ مُعَطَّلَةٌ حالِيًّا لِكُلِ الأجهِزَة."; +"notification_settings_enable_notifications" = "تَفعِيلُ الإِشعَارات"; + +// Notification settings screen +"notification_settings_disable_all" = "تَعطيلُ كَافَّةِ الإِشعَارات"; +"settings_title_notifications" = "الإِشعَارات"; + +// contacts list screen +"invitation_message" = "أوَدُّ أن أتَحَدَّثَ مَعكَ بِاستِخدامِ matrix. يرُجَى زيارَةُ المَوقِع https://matrix.org لِلحُصُولِ عَلَى مَزيدٍ مِنَ المَعلُومات."; + +// members list Screen + +// accounts list Screen + +// image size selection + +// invitation members list Screen + +// room creation dialog Screen + +// room info dialog Screen + +// room details dialog screen +"login_error_must_start_http" = "عُنوانُ URL يَجِبُ أن يَبدَأ بِبروتوكل //:[s]http"; + +// Login Screen +"login_error_already_logged_in" = "مُسَجِّل الدُّخُولِ بِالفِعل"; +"message_unsaved_changes" = "تُوجَدُ تَغيِيرات غَير مَحفُوظَة. المُغادَرَة سَوفَ تَستَبعِدَها."; +"unban" = "رَفع-الحَظْر"; +"ban" = "حَظْر"; +"kick" = "طَرد من المحادثة"; +"num_members_other" = "عَدَد %@ مُستَخدِم"; +"num_members_one" = "عَدَد %@ مُستَخدِم"; +"membership_ban" = "حَظْر"; +"membership_leave" = "غادَر"; +"membership_invite" = "مَدعُوّ"; +"create_account" = "إنشاءُ حِساب"; +"login" = "تَسجيلُ الدُّخُول"; +"create_room" = "إنشاءُ غُرفَة"; + +// actions +"action_logout" = "تَسجِيلُ الخُرُوج"; +"delete" = "حَذف"; +"share" = "مُشارَكَة"; +"redact" = "إزالَة"; +"resend" = "إعادَة الإرسَال"; +"copy_button_name" = "نَسخ"; +"send" = "إرسَال"; + +// Room Screen + +// general errors + +// Home Screen + +// Last seen time + +// call events + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /console/src/main/res/values/strings.xml. +*/ + + +// titles + +// button names +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "أنتَ قَد جَعَلتَ الرَّسائِلَ المُستَقبَليَّة مَرئيَّة لِلجَميع، مُنذُ أنِ اِنضَمُّوا."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "أنتَ قَد جَعَلتَ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة، مِن النُّقطَة الَّتي اِنضَمُّوا فِيهَا."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "أنتَ قَد جَعَلتَ الرَّسائِلَ المُستَقبَليَّة مَرئيَّة لِلجَميع، مُنذُ أن تَمَّت دَعوَتُهُم."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "أنتَ قَد جَعَلتَ تَأريخ الغُرفَة المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة، مِنَ النُّقطَةِ الَّتي تَمَّت دَعوَتُهُم فِيهَا."; +"notice_room_history_visible_to_members_by_you_for_dm" = "أنتَ قَد جَعَلتَ الرَّسائِل المُستَقبَليَّة مَرئيَّة لِجَميع أعضاء الغُرفَة."; +"notice_room_history_visible_to_members_by_you" = "أنتَ قَد جَعَلتَ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة."; +"notice_room_history_visible_to_anyone_by_you" = "أنتَ قَد جَعَلتَ تَأريخ الغُرفَة المُستَقبَليّ مَرئي لِأَيّ شَخص."; +"notice_redaction_by_you" = "أنتَ قَد نَقَّحتَ حَدَث (المُعَرِّف: %@))"; +"notice_encryption_enabled_unknown_algorithm_by_you" = "أنتَ قَد شَغَّلتَ تَعمِيَة النِّهايَة-إلى-النِّهايَة. (خَوارِزميَّة غَير مُتَعَرَّف عَليها %@)."; +"notice_encryption_enabled_ok_by_you" = "أنتَ قَد فعَّلتَ تَعمِيَة النِّهايَة-إلى-النِّهايَة."; +"notice_room_created_by_you_for_dm" = "أنتَ قَد اِنضَمَمت."; +"notice_room_created_by_you" = "أنتَ قَد أنشأتَ الغُرفَة وَهَيَّأَتَها."; +"notice_profile_change_redacted_by_you" = "أنتَ قَد حدَّثتَ مَلفَّكَ الشَّخصي %@"; +"notice_event_redacted_by_you" = " بِواسِطَتِك"; +"notice_room_topic_removed_by_you" = "أنتَ قَد أزلتَ المَوضُوع"; +"notice_room_name_removed_by_you_for_dm" = "أنتَ قَد أزَلتَ الاِسم"; +"notice_room_name_removed_by_you" = "أنتَ قَد أزَلتَ اِسم الغُرفَة"; +"notice_conference_call_request_by_you" = "أنتَ قَد طَلبتَ عَقد اِجتِمَاع VoIP"; +"notice_ended_video_call_by_you" = "أنتَ قَد أنهيتَ المُكالَمَة"; +"notice_answered_video_call_by_you" = "أنتَ قَد أجَبتَ عَلَى المُكالَمَة"; +"notice_placed_video_call_by_you" = "أنتَ قَد أجرَيتَ مُكالَمَةً مَرئيَّة"; +"notice_placed_voice_call_by_you" = "أنتَ قَد أجرَيتَ مُكالَمَةً صَوتيَّة"; +"notice_room_name_changed_by_you_for_dm" = "أنتَ قَد غيَّرتَ الاِسم إلى %@."; +"notice_room_name_changed_by_you" = "أنتَ قَد غيَّرتَ اِسمَ الغُرفَةِ إلى %@."; +"notice_topic_changed_by_you" = "أنتَ قَد غيَّرتَ المَوضُوع إلى \"%@\"."; +"notice_display_name_removed_by_you" = "أنتَ قَد أزَلتَ اِسمكَ الظّاهِر"; +"notice_display_name_changed_from_by_you" = "أنتَ قَد غيَّرتَ اِسمكَ الظّاهِر مِن %@ إلى %@"; +"notice_display_name_set_by_you" = "أنتَ قَد عيَّنتَ اِسمكَ الظّاهِر إلى %@"; +"notice_avatar_url_changed_by_you" = "أنتَ قَد غيَّرتَ صُّورَتكَ الرَّمزية"; +"notice_room_withdraw_by_you" = "أنتَ قَد سَحبتَ دَعوَة %@"; +"notice_room_ban_by_you" = "أنتَ قَد حَظرتَ %@"; +"notice_room_unban_by_you" = "أنتَ قَد رَفعتَ الحَظرَ عَن %@"; +"notice_room_kick_by_you" = "أنتَ قَد حَذفتَ %@"; +"notice_room_reject_by_you" = "أنتَ قَد رَفضتَ الدَعوَة"; +"notice_room_join_by_you" = "أنتَ قَد اِنضَمَمت"; +"notice_room_leave_by_you" = "أنتَ قَد غادَرت"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "أنتَ قد ألغيتَ دَعوَة %@"; +"notice_room_third_party_revoked_invite_by_you" = "أنتَ قَد ألغيتَ دَعوَة %@ لِلاِنضِمام إلى الغُرفَة"; +"notice_room_third_party_invite_by_you_for_dm" = "أنتَ قَد دَعوتَ %@"; +"notice_room_third_party_invite_by_you" = "أنتَ قَد أرسَلتَ دَعوَةً إلى %@ لِلاِنضِمامِ إلى الغُرفَة"; +"notice_room_invite_you" = "لَقَد دَعاكَ %@"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "أنتَ قد دَعوتَ %@"; +"notice_conference_call_finished" = "لَقَد اِنتَهَى اِجتِمَاع VoIP"; +"notice_conference_call_started" = "لَقَد بَدأ اِجتِمَاع VoIP"; +"notice_conference_call_request" = "لَقَد طَلَبَ %@ عَقد اِجتِمَاع VoIP"; +"notice_ended_video_call" = "لَقَد أنهَى %@ المُكالَمَة"; +"notice_answered_video_call" = "لَقَد أجابَ %@ عَلَى المُكالَمَة"; +"notice_placed_video_call" = "لَقَد أجرَى %@ مُكالَمَة مَرئيَّة"; +"notice_placed_voice_call" = "لَقَد أجرَى %@ مُكالَمَة صَوتيَّة"; +"notice_room_name_changed_for_dm" = "لَقَد غيَّرَ %@ الاِسم إلى %@."; +"notice_room_name_changed" = "لَقَد غيَّرَ %@ اِسم الغُرفَة إلى %@."; +"notice_topic_changed" = "لَقَد غيَّرَ %@ المَوضُوع إلى \"%@\"."; +"notice_display_name_removed" = "لَقَد أزالَ %@ اِسمهُ الظّاهِر"; +"notice_display_name_changed_from" = "لَقَد غيَّرَ %@ اِسمُهُ الظّاهِر مِن %@ إلى %@"; +"notice_display_name_set" = "لَقَد عيَّنَ %@ اِسمُهُ الظّاهِر إلى %@"; +"notice_avatar_url_changed" = "لَقَد غيَّرَ %@ صُّورَتَهُ الرَّمزية"; +"notice_room_reason" = ". السَّبَب: %@"; +"notice_room_withdraw" = "لَقَد سَحَبَ %@ دَعوَة %@"; +"notice_room_ban" = "إنَّ %@ قَد حَظَرَ %@"; +"notice_room_unban" = "لَقَد رَفَعَ %@ الحَظرَ عَن %@"; +"notice_room_kick" = "إنَّ %@ قَد حَذَفَ %@"; +"notice_room_reject" = "لَقَد رَفَضَ %@ الدَّعوَة"; +"notice_room_leave" = "لَقَد غَادَرَ %@"; +"notice_room_third_party_invite" = "لَقَد أرسَلَ %@ دَعوَةً إلى %@ لِلاِنضِمامِ إلى الغُرفَة"; +"notice_room_join" = "لَقَد اِنضَمَّ %@"; +"notice_room_third_party_revoked_invite_for_dm" = "لَقَد ألغَى %@ دَعوَة %@"; +"notice_room_third_party_invite_for_dm" = "إنَّ %@ قَد أضافَ %@"; + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /matrix-sdk/src/main/res/values/strings.xml. +*/ + +"notice_room_invite" = "إنَّ %@ قَد أضافَ %@"; +"language_picker_default_language" = "الاِفتراضي (%@)"; + +// Language picker +"language_picker_title" = "اِختَر لُغَةً"; + +// Country picker +"country_picker_title" = "اِختَر بَلَدًا"; +"local_contacts_access_discovery_warning" = "لاِكتِشاف جِهات الاِتِّصال الَّتي تَستَخدِمُ Matrix بِالفِعل، يُمكِنُ %@ إرسَال عَناوين البَريد الإلِكتُرونيّ وأرقام الهَواتِف الَّتي في دَفتَرِ العَناوين الخاصِّ بِك إلى خادِمِ هُويَّة Matrix المُختار. يَتِّمُ تَجزِئة البَياناتِ الشَّخصيَّة قَبلَ إرسالِها حَيثُما كانَت مَدعُومَة - يُرجى مُراجَعَة سياسَة الخُصُوصيَّة الخاصَّة بِخادِم الهُويَّة لِلحُصُولِ عَلَى المَزيدِ مِنَ التَّفاصيل."; +"local_contacts_access_discovery_warning_title" = "اِكتِشافُ المُستَخدِمين"; +"local_contacts_access_not_granted" = "اِكتِشافُ المُستَخدِمين مِن جِهاتِ الاِتِّصالِ المَحَلِّيَّة يَتَطَلَّب الوُصُول إلَى جِهاتِ الاِتِّصالِ الخاصّةِ بِك لَكِنّ %@ لَيسَ لَدَيهِ الاِذن لاِستِخدامَها"; +"microphone_access_not_granted_for_call" = "المُكالَمَاتُ المَرئيَّة تَتَطَلَّب الوُصُول إلَى المِيكرُوفُون لَكِنّ %@ لَيسَ لَدَيهِ الاِذن لاِستِخدامه"; + +// Permissions +"camera_access_not_granted_for_call" = "المُكالَمَاتُ المَرئيَّة تَتَطَلَّب الوُصُول إلَى الكاميرة لَكِنّ %@ لَيسَ لَدَيهِ الاِذن لاِستِخدامها"; +"ssl_homeserver_url" = "عُنوانُ URL لِلخادِم الرَّئيسي: %@"; +"user_id_placeholder" = "مِثال: bob:homeserver@"; +"network_error_not_reachable" = "يُرجَى التَّحَقُّق مِن اِتِّصالَكَ بِالشَبَكَة"; +"call_more_actions_dialpad" = "لَوحَةُ الاِتِّصَال"; +"call_more_actions_transfer" = "النَّقل"; +"call_more_actions_audio_use_device" = "مُكَبِّر صَوت الجِّهَاز"; +"call_more_actions_audio_use_headset" = "اِستِخدامُ صَوتَ سمَّاعَةِ الرَّأس"; +"call_more_actions_change_audio_device" = "تَغيِيرُ جِهَازِ الصَوت"; +"call_more_actions_unhold" = "الاِستِئنَاف"; +"call_more_actions_hold" = "التَّمَسُّك"; +"call_remote_holded" = "لقد عَلَّقَ %@ المكالمة"; +"call_holded" = "أنتَ قَد عَلَّقتَ المُكالَمَة"; +"notice_declined_video_call_by_you" = "أنتَ قَد رَفَضتَ المُكالَمَة"; +"notice_declined_video_call" = "لَقَد رَفضَ %@ المُكالَمَة"; +"resume_call" = "اِستِئنَاف"; +"call_transfer_to_user" = "التَّحويلُ إلَى %@"; +"call_consulting_with_user" = "اِستِشارَة مَعَ %@"; +"call_video_with_user" = "مُكالَمَةٌ مَرئيَّةٌ مَع %@"; +"call_voice_with_user" = "مُكالَمَةٌ صَوتيَّةٌ مَع %@"; +"call_ringing" = "الرَّنِينُ جَارٍ…"; +"e2e_passphrase_too_short" = "عِبارَة المُرُور قَصِيرَةٌ جِدًا (يَجِبُ ألَّا يَقِلَّ طُولهَا عَن %d أحرف)"; +"microphone_access_not_granted_for_voice_message" = "الرَسائِلُ الصَوتيَّةُ تتطَلَبُ الوصُولَ إلَى المِيكرُوفُون لَكِنَ %@ ليسَ لَديهِ إذنٌ لِاستِخدَامِه"; +"message_reply_to_sender_sent_a_voice_message" = "أرسَلَ رِسَالَةً صَوتيَّة."; +"attachment_unsupported_preview_message" = "هذا النوع من المَلَفّ غير مَدعُوم."; +"attachment_unsupported_preview_title" = "غَير قادر على المُعايَنَة"; +"attachment_large_with_resolution" = "كَبير %@ (~%@)"; +"attachment_medium_with_resolution" = "مُتَوسط %@ (~%@)"; +"attachment_small_with_resolution" = "صَغير %@ (~%@)"; +"attachment_size_prompt_message" = "يُمكنك إيقاف هذا من الإعدَادَات."; +"attachment_size_prompt_title" = "تأكيد الحَجم للإرسَال"; +"message_reply_to_sender_sent_their_location" = "شَارك موقعهُم."; +"room_displayname_all_other_members_left" = "%@ (غادر)"; diff --git a/Riot/Assets/bg.lproj/Vector.strings b/Riot/Assets/bg.lproj/Vector.strings index b431419e1..62a612174 100644 --- a/Riot/Assets/bg.lproj/Vector.strings +++ b/Riot/Assets/bg.lproj/Vector.strings @@ -1394,3 +1394,459 @@ // Call Bar "callbar_only_single_active" = "Докоснете за връщане в разговора (%@)"; + + +// MARK: - MatrixKit + + +// room details dialog screen +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Регистрация:"; +"login_server_url_placeholder" = "URL (напр. https://matrix.org)"; +"login_home_server_title" = "Home сървър адрес:"; +"login_home_server_info" = "Сървърът Ви съхранява цялата кореспонденция и профилни данни"; +"login_identity_server_title" = "Адрес на сървър за самоличност:"; +"login_identity_server_info" = "Matrix предоставя сървъри за самоличност, които проследяват кои имейли и т.н. на кои Matrix идентификатори принадлежат. В момента съществува само https://matrix.org."; +"login_user_id_placeholder" = "Matrix ID (напр. @ivan:matrix.org или ivan)"; +"login_password_placeholder" = "Парола"; +"login_optional_field" = "по избор"; +"login_display_name_placeholder" = "Име (напр. Иван Георгиев)"; +"login_email_info" = "Задайте имейл адрес, за да позволите на другите потребители да Ви намерят по-лесно в Matrix и да можете да възстановите Вашата парола в бъдеще."; +"login_email_placeholder" = "Имейл адрес"; +"login_prompt_email_token" = "Моля, въведете кода за потвърждение от имейл адреса:"; +"login_error_title" = "Неуспешно влизане в профила"; +"login_error_no_login_flow" = "Не успяхме да извлечем информация за автентикация от този Home сървър"; +"login_error_do_not_support_login_flows" = "В момента не поддържаме методите за влизане, определени от този Home сървър"; +"login_error_registration_is_not_supported" = "В момента не се поддържа регистрация"; +"login_error_forbidden" = "Невалидно потребителско име или парола"; +"login_error_unknown_token" = "Не е разпознат указаният тоукън за достъп"; +"login_error_bad_json" = "Грешно формиран JSON"; +"login_error_not_json" = "Не съдържаше валиден JSON"; +"login_error_limit_exceeded" = "Бяха изпратени твърде много заявки"; +"login_error_user_in_use" = "Това потребителско име е вече заето"; +"login_error_login_email_not_yet" = "Все още не сте кликнали върху връзката в имейла"; +"login_use_fallback" = "Използване на страница заместител"; +"login_leave_fallback" = "Откажи"; +"login_invalid_param" = "Невалиден параметър"; +"register_error_title" = "Неуспешна регистрация"; +"login_error_forgot_password_is_not_supported" = "В момента не се поддържа \"Забравена парола\""; +"login_mobile_device" = "Мобилно устройство"; +"login_tablet_device" = "Таблет"; +"login_desktop_device" = "Работен плот"; +// Action +"no" = "Не"; +"yes" = "Да"; +"abort" = "Прекрати"; +"discard" = "Откажи"; +"dismiss" = "Затвори"; +"sign_up" = "Регистрация"; +"submit" = "Изпрати"; +"submit_code" = "Изпрати код"; +"set_default_power_level" = "Възвръщане нивото на достъп"; +"set_moderator" = "Направи модератор"; +"set_admin" = "Направи администратор"; +"start_chat" = "Започни чат"; +"start_voice_call" = "Започни гласов разговор"; +"start_video_call" = "Започни видео разговор"; +"mention" = "Спомени"; +"select_account" = "Изберете профил"; +"attach_media" = "Прикачи файл от галерията"; +"capture_media" = "Направи снимка/видео"; +"invite_user" = "Покани matrix потребител"; +"resend_message" = "Изпрати съобщението отново"; +"reset_to_default" = "Връщане към ниво по подразбиране"; +"select_all" = "Избери всички"; +"cancel_upload" = "Откажи качването"; +"cancel_download" = "Откажи свалянето"; +"show_details" = "Покажи детайлите"; +"answer_call" = "Отговори на повикването"; +"reject_call" = "Откажи повикването"; +"ignore" = "Игнорирай"; +"unignore" = "Премахни игнорирането"; +// Events formatter +"notice_avatar_changed_too" = "(аватарът също беше променен)"; +"notice_room_name_removed" = "%@ премахна името на стаята"; +"notice_room_topic_removed" = "%@ премахна темата"; +"notice_event_redacted" = "<изтрито%@>"; +"notice_event_redacted_by" = " от %@"; +"notice_event_redacted_reason" = " [причина: %@]"; +"notice_profile_change_redacted" = "%@ обнови своя профил %@"; +"notice_room_created" = "%@ създаде и конфигурира стаята."; +"notice_room_join_rule" = "Правилото за присъединяване е: %@"; +"notice_room_power_level_intro" = "Нивата на достъп на членовете в стаята са:"; +"end_call" = "Прекрати разговора"; +"notice_room_power_level_acting_requirement" = "Минималните нива на достъп, които потребител трябва да има за следните действия са:"; +"notice_room_power_level_event_requirement" = "Минималните нива на достъп отнасящи се към събития са:"; +"notice_room_aliases" = "Адресите на стаята са: %@"; +"notice_room_related_groups" = "Групите, асоциирани с тази стая, са: %@"; +"notice_encrypted_message" = "Шифровано съобщение"; +"notice_encryption_enabled" = "%@ включи шифроването от край до край (алгоритъм %@)"; +"notice_image_attachment" = "прикачена снимка"; +"notice_audio_attachment" = "прикачено аудио"; +"notice_video_attachment" = "прикачено видео"; +"notice_location_attachment" = "прикачено местоположение"; +"notice_file_attachment" = "прикачен файл"; +"notice_invalid_attachment" = "невалидно прикачване"; +"notice_unsupported_attachment" = "Прикачен файл, който не се поддържа: %@"; +"notice_feedback" = "Събитие за обратна връзка (id: %@): %@"; +"notice_redaction" = "%@ изтри събитие (id: %@)"; +"notice_error_unsupported_event" = "Събитие, което не се поддържа"; +"notice_error_unexpected_event" = "Неочаквано събитие"; +"notice_error_unknown_event_type" = "Непознат вид на събитието"; +"notice_room_history_visible_to_anyone" = "%@ направи бъдещата история на стаята видима за всеки."; +"notice_room_history_visible_to_members" = "%@ направи бъдещата история на стаята видима за всички членове."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ направи бъдещата история на стаята видима за всички членове, от момента на поканването им в нея."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ направи бъдещата история на стаята видима за всички членове, от момента на присъединяването им в нея."; +"notice_crypto_unable_to_decrypt" = "** Неуспешно разшифроване: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "Сесията на подателя не изпрати ключовете за това съобщение."; +// room display name +"room_displayname_empty_room" = "Празна стая"; +"room_displayname_two_members" = "%@ и %@"; +"room_displayname_more_than_two_members" = "%@ и %u други"; +// Settings +"settings" = "Настройки"; +"settings_enable_inapp_notifications" = "Включване на известия в приложението"; +"settings_enable_push_notifications" = "Включване на известия"; +"settings_enter_validation_token_for" = "Въведете код за потвърждение за %@:"; +"notification_settings_room_rule_title" = "Стая: '%@'"; +// Devices +"device_details_title" = "Информация за сесията\n"; +"device_details_name" = "Публично име\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Последно видян\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "Публичното име на сесията е видимо за всеки, с който комуникирате"; +"device_details_delete_prompt_title" = "Автентикация"; +"device_details_delete_prompt_message" = "Тази операция изискра допълнителна автентикация.\nЗа да продължите, моля, въведете Вашата парола."; +// Encryption information +"room_event_encryption_info_title" = "Информация за шифроване от край до край\n\n"; +"room_event_encryption_info_event" = "Информация за събитие\n"; +"room_event_encryption_info_event_user_id" = "ID на потребител\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519 ключ за самоличност\n"; +"room_event_encryption_info_event_fingerprint_key" = "Заявен ключов отпечатък Ed25519\n"; +"room_event_encryption_info_event_algorithm" = "Алгоритъм\n"; +"room_event_encryption_info_event_session_id" = "ID на сесия\n"; +"room_event_encryption_info_event_decryption_error" = "Грешка при разшифроване\n"; +"room_event_encryption_info_event_unencrypted" = "нешифрован"; +"room_event_encryption_info_event_none" = "няма"; +"room_event_encryption_info_device" = "\nИнформация за сесията на подателя\n"; +"room_event_encryption_info_device_unknown" = "неизвестна сесия\n"; +"room_event_encryption_info_device_name" = "Публично име\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "Потвърждение\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519 отпечатък\n"; +"room_event_encryption_info_device_verified" = "Потвърдено"; +"room_event_encryption_info_device_not_verified" = "НЕ е потвърдено"; +"room_event_encryption_info_device_blocked" = "В черния списък"; +"room_event_encryption_info_unblock" = "Отблокирай"; +"room_event_encryption_info_block" = "Блокирай"; +"room_event_encryption_info_verify" = "Потвърди..."; +"room_event_encryption_info_unverify" = "Махни потвържд."; +"room_event_encryption_verify_title" = "Потвърди сесията\n\n"; +"room_event_encryption_verify_ok" = "Потвърди"; +// Account +"account_save_changes" = "Запази промените"; +"account_link_email" = "Свържи имейл"; +"account_linked_emails" = "Свързани имейли"; +"account_email_validation_title" = "Очакване на потвърждение"; +"account_email_validation_message" = "Моля, проверете своя имейл адрес и натиснете връзката, която той съдържа. След като направите това, натиснете продължи."; +"account_email_validation_error" = "Неуспешно потвърждение на имейл адрес. Моля, проверете своя имейл адрес и натиснете връзката, която той съдържа. След като направите това, натиснете продължи"; +"account_msisdn_validation_title" = "Очакване на потвърждение"; +"account_msisdn_validation_message" = "Изпратихме Ви SMS с код за активиране. Моля, въведете този код по-долу."; +"account_msisdn_validation_error" = "Неуспешно потвърждение на телефонен номер."; +"account_error_display_name_change_failed" = "Неуспешна смяна на име"; +"account_error_picture_change_failed" = "Неуспешна смяна на профилната снимка"; +"account_error_matrix_session_is_not_opened" = "Matrix сесията не е отворена"; +"account_error_email_wrong_title" = "Невалиден имейл адрес"; +"account_error_email_wrong_description" = "Това не изглежда да е валиден имейл адрес"; +"account_error_msisdn_wrong_title" = "Невалиден телефонен номер"; +"account_error_msisdn_wrong_description" = "Това не изглежда да е валиден телефонен номер"; +// Room creation +"room_creation_name_title" = "Име на стая:"; +"room_creation_name_placeholder" = "(напр. lunchGroup)"; +"room_creation_alias_title" = "Псевдоним на стая:"; +"room_creation_alias_placeholder" = "(напр. #foo:example.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(напр. #foo%@)"; +"room_creation_participants_title" = "Участници:"; +"room_creation_participants_placeholder" = "(напр. @ivan:homeserver1; @georgi:homeserver2...)"; +// Room +"room_please_select" = "Моля, изберете стая"; +"room_error_join_failed_title" = "Неуспешно присъединяване към стаята"; +"room_error_join_failed_empty_room" = "В момента не е възможно да се присъедините отново към празна стая."; +"room_error_name_edition_not_authorized" = "Нямате право да редактирате името на тази стая"; +"room_error_topic_edition_not_authorized" = "Нямате право да редактирате темата на тази стая"; +"room_error_cannot_load_timeline" = "Неуспешно зареждане на хронологията"; +"room_error_timeline_event_not_found_title" = "Неуспешно зареждане на позицията в хронологията"; +"room_error_timeline_event_not_found" = "Беше направен опит да се зареди конкретна точка в хронологията на тази стая, но не я намери"; +"room_left" = "Вие напуснахте стаята"; +"room_no_power_to_create_conference_call" = "Трябва да имате разрешение за изпращане на покани, за да може да започнете групов разговор в тази стая"; +"room_no_conference_call_in_encrypted_rooms" = "Не се поддържат групови разговори в шифровани стаи"; +// Room members +"room_member_ignore_prompt" = "Сигурни ли сте, че искате да скриете всички съобщения от този потребител?"; +"room_member_power_level_prompt" = "Няма да можете да възвърнете тази промяна, тъй като повишавате този потребител до същото ниво на достъп като Вашето.\nСигурни ли сте?"; +// Attachment +"attachment_size_prompt" = "Изпратете с размер:"; +"attachment_original" = "Оригинален: %@"; +"attachment_small" = "Малък: %@"; +"attachment_medium" = "Среден: %@"; +"attachment_large" = "Голям: %@"; +"attachment_cancel_download" = "Отказване на свалянето?"; +"attachment_cancel_upload" = "Отказване на качването?"; +"attachment_multiselection_size_prompt" = "Изпратете снимките с размер:"; +"attachment_multiselection_original" = "Оригинален"; +"attachment_e2e_keys_file_prompt" = "Файлът съдържа ключове за шифроване, експортирани от Matrix клиент.\nИскате ли да видите съдържанието на файла или да импортирате ключовете, които съдържа?"; +"attachment_e2e_keys_import" = "Импортиране..."; +// Contacts +"contact_mx_users" = "Matrix потребители"; +"contact_local_contacts" = "Локални контакти"; +// Groups +// Search +"search_no_results" = "Няма резултати"; +"search_searching" = "В процес на търсене..."; +// Time +"format_time_s" = "сек"; +"format_time_m" = "мин"; +"format_time_h" = "ч"; +"format_time_d" = "д"; +// E2E import +"e2e_import_room_keys" = "Импортиране на ключове за стая"; +"e2e_import_prompt" = "Този процес позволява да импортирате ключове за шифроване, които преди сте експортирали от друг Matrix клиент. Тогава ще можете да разшифровате всяко съобщение, което другият клиент може да разшифрова. Експортираният файл може да бъде предпазен с парола. Трябва да въведете парола тук, за да разшифровате файла."; +"e2e_import" = "Импортирай"; +"e2e_passphrase_enter" = "Въведи парола"; +// E2E export +"e2e_export_room_keys" = "Експортиране на ключове за стая"; +"e2e_export_prompt" = "Този процес Ви позволява да експортирате във файл ключовете за съобщения в шифровани стаи. Така ще можете да импортирате файла в друг Matrix клиент, така че той също да може да разшифрова такива съобщения.\nЕкспортираният файл ще позволи на всеки, който може да го прочете, да разшифрова всяко шифровано съобщение, което можете да видите. Трябва да го държите на сигурно място."; +"e2e_export" = "Експортирай"; +"e2e_passphrase_confirm" = "Потвърди парола"; +"e2e_passphrase_empty" = "Паролата не трябва да е празна"; +"e2e_passphrase_not_match" = "Паролите трябва да съвпадат"; +// Others +"user_id_title" = "ID на потребител:"; +"offline" = "офлайн"; +"unsent" = "Неизпратено"; +"error" = "Грешка"; +"not_supported_yet" = "Все още не се поддържа"; +"default" = "по подразбиране"; +"private" = "Лична"; +"public" = "Публична"; +"power_level" = "Ниво на достъп"; +"network_error_not_reachable" = "Моля, проверете интернет връзката си"; +"user_id_placeholder" = "напр.: @ivan:homeserver"; +"ssl_homeserver_url" = "Адрес на Home сървър: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Видео разговорите изискват достъп до камерата, но %@ няма разрешение да я използва"; +"microphone_access_not_granted_for_call" = "Разговорите изискват достъп до микрофона, но %@ няма разрешение да го използва"; +"local_contacts_access_not_granted" = "Откриване на потребители от локални контакти изисква достъп до контактите Ви, но %@ няма разрешение да ги използва"; +"local_contacts_access_discovery_warning_title" = "Откриване на потребители"; +"local_contacts_access_discovery_warning" = "За да открие контакти използващи Matrix, %@ може да изпрати имейл адресите и телефонните номера от телефонния указател към избрания от вас Matrix сървър за самоличност. Ако се поддържа, личните данни могат да бъдат хеширани преди изпращане - вижте политиката за поверителност на сървъра за самоличност за повече информация."; +// Country picker +"country_picker_title" = "Избор на държава"; +// Language picker +"language_picker_title" = "Избор на език"; +"language_picker_default_language" = "По подразбиране (%@)"; +"notice_room_invite" = "%@ покани %@"; +"notice_room_third_party_invite" = "%@ изпрати покана на %@ да се присъедини към стаята"; +"notice_room_third_party_registered_invite" = "%@ прие поканата за %@"; +"notice_room_join" = "%@ се присъедини"; +"notice_room_leave" = "%@ напусна"; +"notice_room_reject" = "%@ отхвърли поканата"; +"notice_room_kick" = "%@ изгони %@"; +"notice_room_unban" = "%@ отблокира %@"; +"notice_room_ban" = "%@ блокира %@"; +"notice_room_withdraw" = "%@ оттегли поканата си за %@"; +"notice_room_reason" = ". Причина: %@"; +"notice_avatar_url_changed" = "%@ смени своята профилна снимка"; +"notice_display_name_set" = "%@ си сложи име %@"; +"notice_display_name_changed_from" = "%@ смени своето име от %@ на %@"; +"notice_display_name_removed" = "%@ премахна своето име"; +"notice_topic_changed" = "%@ промени темата на \"%@\"."; +"notice_room_name_changed" = "%@ промени името на стаята на %@."; +"notice_placed_voice_call" = "%@ започна гласов разговор"; +"notice_placed_video_call" = "%@ започна видео разговор"; +"notice_answered_video_call" = "%@ отговори на повикването"; +"notice_ended_video_call" = "%@ прекрати разговора"; +"notice_conference_call_request" = "%@ заяви VoIP групов разговор"; +"notice_conference_call_started" = "Започна VoIP конференция"; +"notice_conference_call_finished" = "VoIP конференцията приключи"; +// button names +"ok" = "ОК"; +"send" = "Изпрати"; +"copy_button_name" = "Копирай"; +"resend" = "Изпрати отново"; +"redact" = "Премахни"; +"share" = "Сподели"; +"set_power_level" = "Ниво на достъп"; +"delete" = "Изтрий"; +// actions +"action_logout" = "Излез"; +"create_room" = "Създай стая"; +"login" = "Влез"; +"create_account" = "Създай профил"; +"membership_invite" = "Поканен"; +"membership_leave" = "Напуснал"; +"membership_ban" = "Блокиран"; +"num_members_one" = "%@ потребител"; +"num_members_other" = "%@ потребители"; +"kick" = "Изгони"; +"ban" = "Блокирай"; +"unban" = "Отблокирай"; +"message_unsaved_changes" = "Има незапазени промени. При напускане ще се загубят."; +// Login Screen +"login_error_already_logged_in" = "Вече сте в профила си"; +"login_error_must_start_http" = "URL адресът трябва да започва с http[s]://"; +// contacts list screen +"invitation_message" = "Бих искал да си пиша с Вас в matrix. За повече информация, моля, посетете уебсайта http://matrix.org."; +// Settings screen +"settings_title_config" = "Конфигурация"; +"settings_title_notifications" = "Известия"; +// Notification settings screen +"notification_settings_disable_all" = "Изключване на всички известия"; +"notification_settings_enable_notifications" = "Включване на известия"; +"notification_settings_enable_notifications_warning" = "В момента всички известия към всички устройства са изключени."; +"notification_settings_always_notify" = "Известяване винаги"; +"notification_settings_never_notify" = "Известяване никога"; +"notification_settings_word_to_match" = "дума, която да потърсим"; +"notification_settings_highlight" = "Подчертаване"; +"notification_settings_custom_sound" = "Индивидуален звук"; +"notification_settings_per_room_notifications" = "Известия за конкретна стая"; +"notification_settings_per_sender_notifications" = "Известия за конкретен подател"; +"notification_settings_sender_hint" = "@потребител:domain.com"; +"notification_settings_select_room" = "Избиране на стая"; +"notification_settings_other_alerts" = "Други известия"; +"notification_settings_contain_my_user_name" = "Известявай ме със звук за съобщения, съдържащи потребителското ми име"; +"notification_settings_contain_my_display_name" = "Известявай ме със звук за съобщения, съдържащи името ми"; +"notification_settings_just_sent_to_me" = "Известявай ме със звук за съобщения изпратени само до мен"; +"notification_settings_invite_to_a_new_room" = "Известявай ме, когато съм поканен в нова стая"; +"notification_settings_people_join_leave_rooms" = "Известявай ме, когато хората се присъединяват или напускат стаи"; +"notification_settings_receive_a_call" = "Известявай ме, когато получавам обаждане"; +"notification_settings_suppress_from_bots" = "Блокирай известията от ботове"; +"notification_settings_by_default" = "По подразбиране..."; +"notification_settings_notify_all_other" = "Известявай ме за всички други съобщения/стаи"; +"notification_settings_per_word_notifications" = "Известия за конкретна дума"; +// gcm section +// call string +"call_waiting" = "Изчакване..."; +"call_connecting" = "Свързване…"; +"call_ended" = "Разговорът приключи"; +"call_ring" = "Позвъняване..."; +"incoming_video_call" = "Входящо видео повикване"; +"incoming_voice_call" = "Входящо гласово повикване"; +"call_invite_expired" = "Поканата за разговор изтече"; +// unrecognized SSL certificate +"ssl_trust" = "Довери се"; +"ssl_logout_account" = "Излез"; +"ssl_remain_offline" = "Игнорирай"; +"ssl_fingerprint_hash" = "Отпечатък (%@):"; +"ssl_could_not_verify" = "Неуспешно потвърждаване на самоличността на отдалечения сървър."; +"ssl_cert_not_trust" = "Това може да означава, че някой злонамерено прихваща Вашата връзка, или че телефонът Ви не се доверява на сертификата, предоставен от отдалечения сървър."; +"ssl_cert_new_account_expl" = "Ако администраторът на сървъра е обявил, че това е нормално, уверете се, че отпечатъкът по-долу съвпада с този, предоставен от него."; +"ssl_unexpected_existing_expl" = "Сертификатът е различен от този, на който телефонът Ви се доверява. Това е МНОГО НЕОБИЧАЙНО. Препоръчваме да НЕ ПРИЕМАТЕ този нов серфитикат."; +"ssl_expected_existing_expl" = "Сертификатът се промени от такъв, който е бил доверен, на такъв който вече не е. Сървърът може да е подновил своя сертификат. Свържете се с администратора за правилния отпечатък."; +"ssl_only_accept" = "Приемайте сертификата САМО ако администратора на сървъра е публикувал отпечатък, който съвпада с този по-горе."; +"room_event_encryption_verify_message" = "За да потвърдите, че на това устройство може да се вярва, моля свържете се със собственика му по друг начин (напр. на живо или чрез телефонен разговор) и го попитайте дали ключът, който той вижда в неговите настройки на потребителя за това устройство, съвпада с ключа по-долу:\n\n\tИме на сесията: %@\n\tID на сесията: %@\n\tКлюч на сесията: %@\n\nАко съвпада, моля натиснете бутона за потвърждение по-долу. Ако не, то тогава някой друг имитира тази сесия и вероятно искате вместо това да натиснете бутона за черен списък.\n\nВ бъдеще този процес на потвърждение ще бъде по-лесен."; +"notification_settings_global_info" = "Настройки на известията се пазят в потребителския Ви профил и се споделят измежду всички клиенти, които ги поддържат (включително и известия на работния плот).\n\nПравилата се проверяват по ред; първото съвпадащо правило дефинира резултата за съобщението.\nТака че: Известията за конкретна дума са по-важни от известията за конкретна стая, които пък са по-важни от известията за конкретен потребител.\nАко има няколко еднотипни правила, с приоритет е първото съвпадащо."; +"notification_settings_per_word_info" = "Съвпаденията за думите се правят без взимане под внимание на малка/главна буква. Могат да съдържат и * wildcard символ. Така че:\nfoo намира съвпадения за низа foo, ограден от разделители за дума (напр. пунктуация и празно място или начало/край на ред).\nfoo* намира съвпадения във всяка дума започваща с foo.\n*foo* намира съвпадения във всяка дума включваща някъде в себе си низа foo."; +"notice_sticker" = "стикер"; +"notice_in_reply_to" = "В отговор на"; +"error_common_message" = "Възникна грешка. Моля опитайте пак по-късно."; +// Reply to message +"message_reply_to_sender_sent_an_image" = "изпрати снимка."; +"message_reply_to_sender_sent_a_video" = "изпрати видео."; +"message_reply_to_sender_sent_an_audio_file" = "изпрати аудио файл."; +"message_reply_to_sender_sent_a_file" = "изпрати файл."; +"message_reply_to_message_to_reply_to_prefix" = "В отговор на"; +"login_error_resource_limit_exceeded_title" = "Надхвърлен лимит за ресурс"; +"login_error_resource_limit_exceeded_message_default" = "Този сървър е надхвърлил някой свой лимит."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Този сървър е достигнал своя лимит за потребители на месец."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nМоля, свържете се с администратора на услугата за да продължите да я използвате."; +"login_error_resource_limit_exceeded_contact_button" = "Свържи се с администратора"; +"e2e_passphrase_create" = "Създай парола"; +"account_error_push_not_allowed" = "Уведомленията не са разрешени"; +"notice_room_third_party_revoked_invite" = "%@ оттегли поканата за присъединяването на %@ към стаята"; +"device_details_rename_prompt_title" = "Име на сесията"; +"notice_encryption_enabled_ok" = "%@ включи шифроване от-край-до-край."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ включи шифроване от-край-до-край (неразпознат алгоритъм %2$@)."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Направихте бъдещите съобщения видими за всички, от момента на присъединяването им."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Направихте бъдещата история на стаята видима за всички нейни членове, от момента на присъединяването им."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Направихте бъдещите съобщения видими за всички, от момента на поканването им."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Направихте бъдещата история на стаята видима за всички нейни членове, от момента на поканването им."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Направихте бъдещите съобщения видими за всички членове на стаята."; +"notice_room_history_visible_to_members_by_you" = "Направихте бъдещата история на стаята видима за всички нейни членове."; +"notice_room_history_visible_to_anyone_by_you" = "Направихте бъдещата история на стаята видима за всички."; +"notice_redaction_by_you" = "Редактирахте събитие (идентификатор: %@)"; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Включихте шифроване от-край-до-край (непознат алгоритъм %@)."; +"notice_encryption_enabled_ok_by_you" = "Включихте шифроване от-край-до-край."; +"notice_room_created_by_you_for_dm" = "Присъединихте се."; +"notice_room_created_by_you" = "Създадохте и конфигурирахте стаята."; +"notice_profile_change_redacted_by_you" = "Обновихте %@ профила си"; +"notice_event_redacted_by_you" = " от вас"; +"notice_room_topic_removed_by_you" = "Премахнахте темата"; +"notice_room_name_removed_by_you_for_dm" = "Премахнахте името"; +"notice_room_name_removed_by_you" = "Премахнахте името на стаята"; +"notice_conference_call_request_by_you" = "Направихте заявка за VoIP конференция"; +"notice_ended_video_call_by_you" = "Прекратихте разговора"; +"notice_answered_video_call_by_you" = "Отговорихте на разговора"; +"notice_placed_video_call_by_you" = "Започнахте видео разговор"; +"notice_placed_voice_call_by_you" = "Започнахте гласов разговор"; +"notice_room_name_changed_by_you_for_dm" = "Променихте името на %@."; +"notice_room_name_changed_by_you" = "Променихте името на стаята на %@."; +"notice_topic_changed_by_you" = "Променихте темата на \"%@\"."; +"notice_display_name_removed_by_you" = "Премахнахте името си"; +"notice_display_name_changed_from_by_you" = "Променихте името си от %@ на %@"; +"notice_display_name_set_by_you" = "Променихте името си на %@"; +"notice_avatar_url_changed_by_you" = "Променихте снимката си"; +"notice_room_withdraw_by_you" = "Оттеглихте поканата на %@"; +"notice_room_ban_by_you" = "Блокирахте %@"; +"notice_room_unban_by_you" = "Отблокирахте %@"; +"notice_room_kick_by_you" = "Изгонихте %@"; +"notice_room_reject_by_you" = "Отхвърлихте поканата"; +"notice_room_leave_by_you" = "Напуснахте"; +"notice_room_join_by_you" = "Присъединихте се"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Оттеглихте поканата на %@"; +"notice_room_third_party_revoked_invite_by_you" = "Оттеглихте поканата от %@ за присъединяване към стаята"; +"notice_room_third_party_registered_invite_by_you" = "Приехте поканата за %@"; +"notice_room_third_party_invite_by_you_for_dm" = "Поканихте %@"; +"notice_room_third_party_invite_by_you" = "Изпратихте покана към %@ за присъединяване в стаята"; +"notice_room_invite_you" = "%@ ви покани"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "Поканихте %@"; +"notice_room_name_changed_for_dm" = "%@ промени името на %@."; +"notice_room_third_party_revoked_invite_for_dm" = "%@ оттегли поканата от %@"; +"notice_room_third_party_invite_for_dm" = "%@ покани %@"; +"room_left_for_dm" = "Напуснахте"; +"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" = "%@ направи бъдещите съобщения видими за всички членове в стаята."; +"notice_room_aliases_for_dm" = "Псевдонимите са: %@"; +"notice_room_power_level_intro_for_dm" = "Нивата на достъп на членовете са:"; +"notice_room_join_rule_public_by_you_for_dm" = "Направихте стаята публична."; +"notice_room_join_rule_public_by_you" = "Направихте тази стая публична."; +"notice_room_join_rule_public_for_dm" = "%@ направи стаята публична."; +"notice_room_join_rule_public" = "%@ направи стаята публична."; +"notice_room_join_rule_invite_by_you_for_dm" = "Направихте достъпа да е само за поканени."; +"notice_room_join_rule_invite_by_you" = "Направихте тази стая достъпна само за поканени."; +"notice_room_join_rule_invite_for_dm" = "%@ направи достъпа да е само за поканени."; +// New +"notice_room_join_rule_invite" = "%@ направи стаята достъпна само за поканени."; +"notice_room_created_for_dm" = "%@ се присъедини."; +"notice_room_name_removed_for_dm" = "%@ премахна името"; +"call_transfer_to_user" = "Прехвърли към %@"; +"call_consulting_with_user" = "Консултация с %@"; +"call_video_with_user" = "Видео разговор с %@"; +"call_voice_with_user" = "Гласов разговор с %@"; +"call_more_actions_dialpad" = "Панел за набиране"; +"call_more_actions_transfer" = "Прехвърляне"; +"call_more_actions_audio_use_headset" = "Използвай звук от слушалките"; +"call_more_actions_audio_use_device" = "Използвай звук от устройството"; +"call_more_actions_change_audio_device" = "Смени аудио устройството"; +"call_more_actions_unhold" = "Възобнови"; +"call_more_actions_hold" = "Задръж"; +"call_holded" = "Задържахте разговора"; +"call_remote_holded" = "%@ задържа разговора"; +"call_ringing" = "Звънене…"; +"notice_declined_video_call_by_you" = "Отказахте разговора"; +"notice_declined_video_call" = "%@ отказа разговора"; +"e2e_passphrase_too_short" = "Паролата е прекалено кратка (трябва да е дълга поне %d символа)"; +"resume_call" = "Възобнови"; diff --git a/Riot/Assets/ca.lproj/Vector.strings b/Riot/Assets/ca.lproj/Vector.strings index 33d53e913..401009009 100644 --- a/Riot/Assets/ca.lproj/Vector.strings +++ b/Riot/Assets/ca.lproj/Vector.strings @@ -560,3 +560,356 @@ // Accessibility "accessibility_checkbox_label" = "casella de selecció"; "auth_login_single_sign_on" = "Inicia sessió amb inici senzill"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +"login_password_placeholder" = "Contrasenya"; +"login_optional_field" = "opcional"; +"login_email_placeholder" = "Adreça de correu electrònic"; +// Login Screen +"login_create_account" = "Crear compte:"; +"login_server_url_placeholder" = "URL (ex. https://matrix.org)"; +"login_home_server_title" = "Servidor hoste:"; +"login_home_server_info" = "El teu servidor hoste desa totes les teves converses i dades del compte"; +"login_identity_server_title" = "Servidor d'identitat:"; +"login_identity_server_info" = "Matrix proporciona servidors d'identitat per fer un seguiment dels correus electrònics etc. que pertanyen als identificadors Matrix. Actualment només existeix https://matrix.org."; +"login_user_id_placeholder" = "ID a Matrix (ex @bob:matrix.org o bob)"; +"login_display_name_placeholder" = "Mostra nom (ex. Bob Obson)"; +// room details dialog screen +"login_email_info" = "Especificar una adreça de correu electrònic permet que altres usuaris et trobin més fàcilment a Matrix i et proporcionarà una manera de restablir la teva contrasenya en el futur."; +"login_prompt_email_token" = "Introduïu el teu codi de validació de correu electrònic:"; +"login_error_title" = "Error d'inici de sessió"; +"login_error_no_login_flow" = "No hem pogut recuperar la informació d'autenticació d'aquest servidor hoste"; +"login_error_do_not_support_login_flows" = "Actualment no admetem cap o tots els fluxos d'inici de sessió definits per aquest servidor hoste"; +"login_error_registration_is_not_supported" = "El registre no és suportat per ara"; +"login_error_forbidden" = "Nom d'usuari/contrasenya invàlid"; +"login_error_unknown_token" = "No s'ha reconegut el token d'accés especificat"; +"login_error_bad_json" = "JSON incorrecte"; +"login_error_not_json" = "No contenia JSON vàlid"; +"login_error_limit_exceeded" = "S'han enviat massa sol·licituds"; +"login_error_user_in_use" = "Aquest nom d'usuari ja està en ús"; +"login_error_login_email_not_yet" = "L'enllaç del correu electrònic que encara no heu fet clic"; +"login_use_fallback" = "Usa la pàgina de devolució"; +"login_leave_fallback" = "Cancel·lar"; +"login_invalid_param" = "Paràmetre invàlid"; +"register_error_title" = "Error de registre"; +"login_error_forgot_password_is_not_supported" = "Contrasenya oblidada encara no es suportat"; +"login_mobile_device" = "Mòbil"; +"login_tablet_device" = "Tableta"; +"login_desktop_device" = "Escriptori"; +// Action +"no" = "No"; +"yes" = "Sí"; +"abort" = "Avortar"; +"discard" = "Descarta"; +"dismiss" = "Omet"; +"sign_up" = "Registre"; +"submit" = "Presentar"; +"submit_code" = "Presentar codi"; +"set_default_power_level" = "Restablir el nivell de potència"; +"set_moderator" = "Establir el Moderador"; +"set_admin" = "Establir l'Administrador"; +"start_chat" = "Iniciar xat"; +"start_voice_call" = "Iniciar trucada de veu"; +"start_video_call" = "Iniciar vídeo trucada"; +"mention" = "Mencionar"; +"select_account" = "Selecciona un compte"; +"attach_media" = "Adjunta mitjans de la biblioteca"; +"capture_media" = "Fes una foto o un vídeo"; +"invite_user" = "Convida usuari Matrix"; +"reset_to_default" = "Estableix per defecte"; +"resend_message" = "Reenvia el missatge"; +"select_all" = "Selecciona-ho tot"; +"cancel_upload" = "Cancel·la la pujada"; +"cancel_download" = "Cancel·la la descàrrega"; +"show_details" = "Mostra els detalls"; +"answer_call" = "Respon la trucada"; +"reject_call" = "Rebutja la trucada"; +"end_call" = "Penja"; +"ignore" = "Ignora"; +"unignore" = "Deixa de ignorar"; +// Events formatter +"notice_avatar_changed_too" = "(també s'ha canviat l'avatar)"; +"notice_room_name_removed" = "%@ ha eliminat el nom de la sala"; +"notice_room_topic_removed" = "%@ ha eliminat el tema"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " per %@"; +"notice_event_redacted_reason" = " [motiu: %@]"; +"notice_profile_change_redacted" = "%@ ha actualitzat el seu perfil %@"; +"notice_room_created" = "%@ ha creat la sala"; +"notice_room_join_rule" = "La norma per entrar és: %@"; +"notice_room_power_level_intro" = "El nivell de potència dels participants és:"; +"notice_room_power_level_acting_requirement" = "Els nivells de potència mínims que un usuari ha de tenir abans d'actuar són:"; +"notice_room_power_level_event_requirement" = "Els nivells mínims de potència relacionats als esdeveniments són:"; +"notice_room_aliases" = "Els àlies de la sala són: %@"; +"notice_room_related_groups" = "Els grups associats amb aquesta sala són: %@"; +"notice_encrypted_message" = "Missatge xifrat"; +"notice_encryption_enabled" = "%@ ha activat el xifrat punt a punt (algoritme %@)"; +"notice_image_attachment" = "adjunt d'imatge"; +"notice_audio_attachment" = "adjunt d'àudio"; +"notice_video_attachment" = "adjunt de vídeo"; +"notice_location_attachment" = "adjunt de localització"; +"notice_file_attachment" = "adjunt de fitxer"; +"notice_invalid_attachment" = "adjunt invàlid"; +"notice_unsupported_attachment" = "Adjunt no suportat: %@"; +"notice_feedback" = "Esdeveniment de resposta (id: %@): %@"; +"notice_redaction" = "%@ ha redactat un esdeveniment (id: %@)"; +"notice_error_unsupported_event" = "Esdeveniment no suportat"; +"notice_error_unexpected_event" = "Esdeveniment inesperat"; +"notice_error_unknown_event_type" = "Tipus desconegut d'esdeveniment"; +"notice_room_history_visible_to_anyone" = "%@ ha fet visible per qualsevol l'històric futur de la sala."; +"notice_room_history_visible_to_members" = "%@ ha fet visible per tots els participants l'històric futur de la sala."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ ha fet visible l'històric futur de la sala per a tots els membres, a partir de que hi són convidats."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ ha fet visible l'històric futur de la sala a tots els membres, des de que entren a la sala."; +"notice_crypto_unable_to_decrypt" = "** No es pot desxifrar: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "El dispositiu del remitent no ha enviat les claus per aquest missatge."; +// room display name +"room_displayname_empty_room" = "Sala buida"; +"room_displayname_two_members" = "%@ i %@"; +"room_displayname_more_than_two_members" = "%@ i %u més"; +// Settings +"settings" = "Configuració"; +"settings_enable_inapp_notifications" = "Habilitar les notificacions de les App integrades"; +"settings_enable_push_notifications" = "Activar notificacions push"; +"settings_enter_validation_token_for" = "Introduir el codi de validació per %@:"; +"notification_settings_room_rule_title" = "Sala: '%@'"; +// Devices +"device_details_title" = "Informació del dispositiu\n"; +"device_details_name" = "Nom\n"; +"device_details_identifier" = "ID del dispositiu\n"; +"device_details_last_seen" = "Vist per últim cop\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "Nom del dispositiu:"; +"device_details_delete_prompt_title" = "Autenticació"; +"device_details_delete_prompt_message" = "Aquesta operació necessita que t'autentiquis.\nPer continuar, introdueix la teva contrasenya."; +// Encryption information +"room_event_encryption_info_title" = "Informació del xifrat punt a punt\n\n"; +"room_event_encryption_info_event" = "Informació del esdeveniment\n"; +"room_event_encryption_info_event_user_id" = "ID d'usuari\n"; +"room_event_encryption_info_event_identity_key" = "Clau de la identitat Curve25519\n"; +"room_event_encryption_info_event_fingerprint_key" = "Empremta digital Ed25519 reclamada\n"; +"room_event_encryption_info_event_algorithm" = "Algoritme\n"; +"room_event_encryption_info_event_session_id" = "ID de la sessió\n"; +"room_event_encryption_info_event_decryption_error" = "Error de desxifrat\n"; +"room_event_encryption_info_event_unencrypted" = "no xifrat"; +"room_event_encryption_info_event_none" = "cap"; +"room_event_encryption_info_device" = "\nInformació del dispositiu del remitent\n"; +"room_event_encryption_info_device_unknown" = "dispositiu desconegut\n"; +"room_event_encryption_info_device_name" = "Nom\n"; +"room_event_encryption_info_device_id" = "ID del dispositiu\n"; +"room_event_encryption_info_device_verification" = "Verificació\n"; +"room_event_encryption_info_device_fingerprint" = "Empremta digital Ed25519\n"; +"room_event_encryption_info_device_verified" = "Verificat"; +"room_event_encryption_info_device_not_verified" = "NO verificat"; +"room_event_encryption_info_device_blocked" = "Bloquejat"; +"room_event_encryption_info_verify" = "Verifica..."; +"room_event_encryption_info_unverify" = "No verificar"; +"room_event_encryption_info_block" = "Llista negre"; +"room_event_encryption_info_unblock" = "Desbloquejar"; +"room_event_encryption_verify_title" = "Verifica el dispositiu\n\n"; +"room_event_encryption_verify_message" = "Per a verificar que aquest dispositiu pot ser confiable si us plau contacta el seu propietari per altres mijans (ex. trucant-lo al telèfon) i pregunta-li si la clau que veu a la configuració d'usuari d'aquest dispositiu coincideix amb la clau següent:\n\n\tNom del dispositiu: %@\n\tID del dispositiu: %@\n\tClau del dispositiu: %@\n\nSi coincideix, prem el botó verificar de sota. Si no coincideix es que algú altre està interceptant aquest dispositiu i probablement vols prema el botó de bloquejar a canvi.\n\nEn el futur aquest procés de verificació serà més sofisticat."; +"room_event_encryption_verify_ok" = "Verifica"; +// Account +"account_save_changes" = "Desar canvis"; +"account_link_email" = "Vincular correu electrònic"; +"account_linked_emails" = "Correus electrònics vinculats"; +"account_email_validation_title" = "Verificació pendent"; +"account_email_validation_message" = "Revisa el teu correu electrònic i fes clic a l'enllaç que conté. Un cop fet això, fes clic a continua."; +"account_email_validation_error" = "No ha estat possible verificar l'adreça de correu electrònic. Mira el correu electrònic i fes clic en l'enllaç que conté. Un cop fet això, fes clic per continuar"; +"account_msisdn_validation_title" = "Verificació pendent"; +"account_msisdn_validation_message" = "Hem enviat un SMS amb un codi d'activació. Introdueix aquest codi a continuació."; +"account_msisdn_validation_error" = "No es pot verificar el número de telèfon."; +"account_error_display_name_change_failed" = "Ha fallat el canvi del nom a mostrar"; +"account_error_picture_change_failed" = "Ha fallat el canvi de foto"; +"account_error_matrix_session_is_not_opened" = "No està oberta la sessió Matrix"; +"account_error_email_wrong_title" = "Adreça de correu electrònic no valida"; +"account_error_email_wrong_description" = "Aquest no sembla ser un correu electrònic vàlid"; +"account_error_msisdn_wrong_title" = "Número de telèfon invalid"; +"account_error_msisdn_wrong_description" = "Aquest no sembla ser un número de telèfon vàlid"; +// Room creation +"room_creation_name_title" = "Nom de la sala:"; +"room_creation_name_placeholder" = "(ex. collaesmorzar)"; +"room_creation_alias_title" = "Àlies de sala:"; +"room_creation_alias_placeholder" = "(ex. #foo:exemple.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(ex. #foo%@)"; +"room_creation_participants_title" = "Participants:"; +"room_creation_participants_placeholder" = "(ex. @jordi:servidorhoste1; @juan:servidorhoste2...)"; +// Room +"room_please_select" = "Si us plau tria una sala"; +"room_error_join_failed_title" = "No s'ha pogut entrar a la sala"; +"room_error_join_failed_empty_room" = "Actualment no es pot tornar a entrar a una sala buida."; +"room_error_name_edition_not_authorized" = "No tens permís per editar el nom d'aquesta sala"; +"room_error_topic_edition_not_authorized" = "No tens permís per editar el tema d'aquesta sala"; +"room_error_cannot_load_timeline" = "No s'ha pogut carregar la línia de temps"; +"room_error_timeline_event_not_found_title" = "No s'ha pogut carregar la posició de la línia de temps"; +"room_error_timeline_event_not_found" = "Aquesta aplicació estava intentant carregar un punt especific en la línia de temps d'aquesta sala però no l'ha trobat"; +"room_left" = "Has sortit de la sala"; +"room_no_power_to_create_conference_call" = "Necessites permís per a convidar a iniciar una conferència en aquesta sala"; +"room_no_conference_call_in_encrypted_rooms" = "No es poden fer conferències en sales xifrades"; +// Room members +"room_member_ignore_prompt" = "Estàs segur que vols amagar tots els missatges d'aquest usuari?"; +"room_member_power_level_prompt" = "Si puges aquest usuari al mateix nivell de poder que el teu després no podràs desfer el canvi.\nEstàs segur?"; +// Attachment +"attachment_size_prompt" = "Ho vols enviar com a:"; +"attachment_original" = "Mida actual: %@"; +"attachment_small" = "Petit: %@"; +"attachment_medium" = "Mitjà: %@"; +"attachment_large" = "Gran: %@"; +"attachment_cancel_download" = "Cancel·lar la descàrrega?"; +"attachment_cancel_upload" = "Cancel·lar la pujada?"; +"attachment_multiselection_size_prompt" = "Vols enviar imatges com a:"; +"attachment_multiselection_original" = "Mida actual"; +"attachment_e2e_keys_file_prompt" = "Aquest fitxer conté claus xifrades exportades des d'un client Matrix.\nVols veure el contingut del fitxer o importar les claus que conté?"; +"attachment_e2e_keys_import" = "Importa..."; +// Contacts +"contact_mx_users" = "Usuaris de Matrix"; +"contact_local_contacts" = "Contactes locals"; +// Groups +// Search +"search_no_results" = "Sense resultats"; +"search_searching" = "Cercant..."; +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "h"; +"format_time_d" = "d"; +// E2E import +"e2e_import_room_keys" = "Importa les claus de la sala"; +"e2e_import_prompt" = "Aquest procés et pemet importar les claus de xifratge que previament has exportat des de un altre client Matrix. Després podràs desxifrar qualsevol missatge que l'altre client pugui xifrar.\nEl fitxer exportat està protegit amb una contrasenya. Hauries de introduir la contrasenya aquí per desxifrar-l'ho."; +"e2e_import" = "Importa"; +"e2e_passphrase_enter" = "Introduir contrasenya"; +// E2E export +"e2e_export_room_keys" = "Exporta les claus E2E de la sala"; +"e2e_export_prompt" = "Aquest procés et permet exportar a un fitxer local les claus dels missatges que has rebut de sales xifrades. A continuació, podràs importar el fitxer a un altre client Matrix en el futur, de manera que aquest client també podrà desxifrar aquests missatges.\nEl fitxer exportat permetrà que qualsevol que pugui llegir-lo per desxifrar qualsevol dels missatges xifrats que tu pots veure, així que has de tenir cura de mantenir-lo segur."; +"e2e_export" = "Exporta les claus E2E"; +"e2e_passphrase_confirm" = "Confirma la contrasenya"; +"e2e_passphrase_empty" = "La contrasenya no ha de estar buida"; +"e2e_passphrase_not_match" = "Les contrasenyes han de coincidir"; +// Others +"user_id_title" = "ID d'usuari:"; +"offline" = "fora de línia"; +"unsent" = "No enviats"; +"error" = "Error"; +"not_supported_yet" = "Encara no suportat"; +"default" = "per defecte"; +"private" = "Privat"; +"public" = "Públic"; +"power_level" = "Nivell de potència"; +"network_error_not_reachable" = "Si us plau verifica la teva connexió de xarxa"; +"user_id_placeholder" = "ex: @jordi:servidorhoste"; +"ssl_homeserver_url" = "URL del Servidor Hoste: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Les vídeo trucades necessiten permís per accedir a la Càmera però %@ no té permís per utilitzar-la"; +"microphone_access_not_granted_for_call" = "Les trucades necessiten accedir al Micròfon però %@ no té permís per utilitzar-lo"; +"local_contacts_access_not_granted" = "El descobriment dels usuaris en els contactes locals requereix l'accés als vostres contactes, però %@ no té permís per utilitzar-lo"; +"local_contacts_access_discovery_warning_title" = "Descobriment d'usuaris"; +"local_contacts_access_discovery_warning" = "%@ vol pujar les adreces de correu i els números de telèfon dels teus Contactes per a poder descobrir usuaris"; +// Country picker +"country_picker_title" = "Escull un país"; +// Language picker +"language_picker_title" = "Escull l'idioma"; +"language_picker_default_language" = "Per defecte (%@)"; +"notice_room_invite" = "%@ ha convidat a %@"; +"notice_room_third_party_invite" = "%@ ha enviat una invitació %@ per entrar a la sala"; +"notice_room_third_party_registered_invite" = "%@ ha acceptat la invitació per a %@"; +"notice_room_join" = "%@ s'ha unit a la sala"; +"notice_room_leave" = "%@ ha marxat"; +"notice_room_reject" = "%@ ha rebutjat la invitació"; +"notice_room_kick" = "%@ ha fet fora a %@"; +"notice_room_unban" = "%@ ha readmès a %@"; +"notice_room_ban" = "%@ ha expulsat a %@"; +"notice_room_withdraw" = "%@ ha anul·lat la invitació de %@"; +"notice_room_reason" = ". Motiu: %@"; +"notice_avatar_url_changed" = "%@ ha canviat el seu avatar"; +"notice_display_name_set" = "%@ ha canviat el seu nom a %@"; +"notice_display_name_changed_from" = "%@ ha canviat el seu nom de %@ a %@"; +"notice_display_name_removed" = "%@ ha eliminat el seu nom visible"; +"notice_topic_changed" = "%@ ha canviat el tema a: %@"; +"notice_room_name_changed" = "%@ ha canviat el nom de la sala a: %@"; +"notice_placed_voice_call" = "%@ ha iniciat una trucada de veu"; +"notice_placed_video_call" = "%@ ha iniciat una vídeo conferència"; +"notice_answered_video_call" = "%@ ha contestat la trucada"; +"notice_ended_video_call" = "%@ ha finalitzat la trucada"; +"notice_conference_call_request" = "%@ ha sol·licitat una conferència VoIP"; +"notice_conference_call_started" = "Conferència VoIP iniciada"; +"notice_conference_call_finished" = "Conferència VoIP finalitzada"; +// button names +"ok" = "D'acord"; +"send" = "Envia"; +"copy_button_name" = "Copia"; +"resend" = "Reenvia"; +"redact" = "Elimina"; +"share" = "Comparteix"; +"set_power_level" = "Nivell de potència"; +"delete" = "Esborra"; +// actions +"action_logout" = "Tancar sessió"; +"create_room" = "Crear sala"; +"login" = "Iniciar sessió"; +"create_account" = "Crear compte"; +"membership_invite" = "Convidat"; +"membership_leave" = "Ha sortit"; +"membership_ban" = "Expulsat"; +"num_members_one" = "usuari %@"; +"num_members_other" = "Usuaris de %@"; +"kick" = "Fer fora"; +"ban" = "Expulsa"; +"unban" = "Readmetre"; +"message_unsaved_changes" = "Hi ha canvis no desats. Si ho deixes es perdran."; +// Login Screen +"login_error_already_logged_in" = "Ja autenticat"; +"login_error_must_start_http" = "La URL ha de començar per http[s]://"; +// contacts list screen +"invitation_message" = "M'agradaría xatejar amb tu amb matrix. Si us plau visita el lloc http://matrix.org per a més informació."; +// Settings screen +"settings_title_config" = "Configuració"; +"settings_title_notifications" = "Notificacions"; +// Notification settings screen +"notification_settings_disable_all" = "Desactiva totes les notificacions"; +"notification_settings_enable_notifications" = "Activa les notificacions"; +"notification_settings_enable_notifications_warning" = "Totes les notificacions de tots els dispositius estan actualment desactivades."; +"notification_settings_global_info" = "Els ajustos de les notificacions son desades en el teu compte i compartides amb tots els clients que les suporten (incloent les notificacions d'escriptori).\n\nLes normes son aplicades en ordre; la primera norma que coincideix defineix el resultat del missatge.\nPer tant: es notificacions per paraula són més importants que les notificacions per sales i aquestes són més importants que les notificacions per remitents.\nPer a diverses normes del mateix tipus, la primera de la llista que coincideix té prioritat."; +"notification_settings_per_word_notifications" = "Notificacions per paraula"; +"notification_settings_per_word_info" = "Les paraules coincideixen amb el cas de forma insensible i poden incloure un comodí *. Per tant:\nfoo coincideix amb la cadena foo rodejada de delimitadors de paraules (p. ex. puntuació i espai en blanc o inici/final de línia).\nfoo* coincideix amb qualsevol paraula que començi per foo.\n* foo* coincideix amb qualsevol paraula que inclogui les 3 lletres foo."; +"notification_settings_always_notify" = "Notifica sempre"; +"notification_settings_never_notify" = "Mai notifica"; +"notification_settings_word_to_match" = "paraula coincident"; +"notification_settings_highlight" = "Ressaltat"; +"notification_settings_custom_sound" = "So personaltizat"; +"notification_settings_per_room_notifications" = "Notificacions per sala"; +"notification_settings_per_sender_notifications" = "Notificacions per remitent"; +"notification_settings_sender_hint" = "@usuari:domini.com"; +"notification_settings_select_room" = "Escull una sala"; +"notification_settings_other_alerts" = "Altres avisos"; +"notification_settings_contain_my_user_name" = "Notificar-me amb un so els missatges que continguin el meu nom d'usuari"; +"notification_settings_contain_my_display_name" = "Notificar-me amb un so els missatges que continguin el meu nom visible"; +"notification_settings_just_sent_to_me" = "Notificar-me amb un so els missatges enviats per mi"; +"notification_settings_invite_to_a_new_room" = "Notificar-me quan sigui convidat a una nova sala"; +"notification_settings_people_join_leave_rooms" = "Notificar-me quan algú entri o marxi de les sales"; +"notification_settings_receive_a_call" = "Notificar-me quan rebi una trucada"; +"notification_settings_suppress_from_bots" = "Suprimir les notificacions de robots"; +"notification_settings_by_default" = "Per defecte..."; +"notification_settings_notify_all_other" = "Notifica tots els altres missatges/sales"; +// gcm section +// call string +"call_waiting" = "Esperant..."; +"call_connecting" = "Establint la trucada..."; +"call_ended" = "Trucada finalitzada"; +"call_ring" = "Trucant..."; +"incoming_video_call" = "Vídeo trucada entrant"; +"incoming_voice_call" = "Trucada de veu entrant"; +"call_invite_expired" = "Invitació de trucada ha caducat"; +// unrecognized SSL certificate +"ssl_trust" = "Confia"; +"ssl_logout_account" = "Tancar sessió"; +"ssl_remain_offline" = "Ignora"; +"ssl_fingerprint_hash" = "Empremta digital (%@):"; +"ssl_could_not_verify" = "No s'ha pogut verificar la identitat del servidor remot."; +"ssl_cert_not_trust" = "Això pot voler dir que algú està maliciosament interceptant el tràfic o que el teu telèfon no confia en el certificat proporcionat pel servidor remot."; +"ssl_cert_new_account_expl" = "Si l'administrador del servidor ha dit que això és correcte, assegura't que la següent empremta digital coincideix amb la que t'ha donat."; +"ssl_unexpected_existing_expl" = "El certificat ha canviat respecte al que el teu telèfon hi havia confiat. Això es MOLT INUSUAL. Es recomana que NO ACCEPTIS aquest nou certificat."; +"ssl_expected_existing_expl" = "El certificat ha canviat del prèviament confiat a un que no es confiable. El servidor pot haver renovat el certificat. Posa't en contacte amb l'administrador del servidor per obtenir l'empremta digital desitjada."; +"ssl_only_accept" = "NOMÉS accepteu el certificat si l'administrador del servidor ha publicat una empremta digital que coincideixi amb l'anterior."; diff --git a/Riot/Assets/cy.lproj/Vector.strings b/Riot/Assets/cy.lproj/Vector.strings index 248905f90..b88ac420a 100644 --- a/Riot/Assets/cy.lproj/Vector.strings +++ b/Riot/Assets/cy.lproj/Vector.strings @@ -1006,3 +1006,376 @@ "device_verification_self_verify_alert_message" = "Defnyddiwch y sesiwn hon i wirio'ch un newydd, gan roi mynediad iddo i negeseuon wedi'u hamgryptio :%@\nOs na wnaethoch fewngofnodi i'r sesiwn hon, mae'n bosibl y bydd eich cyfrif mewn perygl.."; "device_verification_self_verify_alert_cancel_action" = "Nid fi oedd hwn"; "device_verification_self_verify_start_verify_action" = "Dechrau gwirio"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Creu cyfrif:"; +"login_server_url_placeholder" = "URL (e.e. https://matrix.org)"; +"login_home_server_title" = "URL Hafanweinydd:"; +"login_home_server_info" = "Mae'ch hafanweinydd yn cadw'ch holl sgyrsiau a gwybodaeth cyfrif"; +"login_identity_server_title" = "URL Gweinydd Adnabod:"; +"login_identity_server_info" = "Mae Matrix yn darparu gweinyddwyr adnabod i olrhain pa e-byst ac ati sy'n perthyn i IDau Matrix. Dim ond https://matrix.org sy'n bodoli ar hyn o bryd."; +"login_user_id_placeholder" = "ID Matrix (e.g. @bob:matrix.org neu bob)"; +"login_password_placeholder" = "Cyfrinair"; +"login_optional_field" = "dewisol"; +"login_display_name_placeholder" = "Enw arddangos (e.e. Jac y Jwc)"; +"login_email_info" = "Mae nodi cyfeiriad e-bost yn caniatáu i ddefnyddwyr eraill ddod o hyd i chi ar Matrix yn haws, a bydd yn rhoi ffordd i chi ailosod eich cyfrinair yn y dyfodol."; +"login_email_placeholder" = "Cyfeiriad E-bost"; +"login_prompt_email_token" = "Rhowch eich tocyn gwirio e-bost:"; +"login_error_title" = "Methwyd Mewngofnodi"; +"login_error_no_login_flow" = "Methom ni â chasglu gwybodaeth gwirio gan y Hafanweinydd hwn"; +"login_error_do_not_support_login_flows" = "Ar hyn o bryd nid ydym yn cefnogi unrhyw lif mewngofnodi, neu'rrhan ohono, a ddiffinnir gan y Hafanweinydd hwn"; +"login_error_registration_is_not_supported" = "Ni chefnogir cofrestru ar hyn o bryd"; +"login_error_forbidden" = "Enw defnyddiwr/cyfrinair annilys"; +"login_error_unknown_token" = "Ni chydnabuwyd y tocyn mynediad a nodwyd"; +"login_error_bad_json" = "JSON camffurfiedig"; +"login_error_not_json" = "Nid oedd yn cynnwys JSON dilys"; +"login_error_limit_exceeded" = "Mae gormod o geisiadau wedi'u hanfon"; +"login_error_user_in_use" = "Defnyddir yr enw defnyddiwr hwn eisoes"; +"login_error_login_email_not_yet" = "Nid yw'r ddolen e-bost wedi'i chlicio eto"; +"login_use_fallback" = "Defnyddiwch dudalen wrth gefn"; +"login_leave_fallback" = "Canslo"; +"login_invalid_param" = "Paramadr Annilys"; +"register_error_title" = "Methwyd Cofrestri"; +"login_error_forgot_password_is_not_supported" = "Ni chefnogir cyfrinair anghofedig ar hyn o bryd"; +"login_mobile_device" = "Ffôn Symudol"; +"login_tablet_device" = "Llechen"; +"login_desktop_device" = "Cyfrifiadur"; +"login_error_resource_limit_exceeded_title" = "Ty hwnt i'r Terfyn Adnoddau"; +"login_error_resource_limit_exceeded_message_default" = "Mae'r hafanweinydd hwn wedi rhagori ar un o'i derfynau adnoddau."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Mae'r hafanweinydd hwn wedi cyrraedd ei derfyn Defnyddiwr Gweithredol Misol."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nCysylltwch â'ch gweinyddwr gwasanaeth i barhau i ddefnyddio'r gwasanaeth hwn."; +"login_error_resource_limit_exceeded_contact_button" = "Cysylltu â Gweinyddwr"; +// Action +"no" = "Na"; +"yes" = "Ie"; +"abort" = "Cefnu"; +"discard" = "Taflu"; +"dismiss" = "Wfftio"; +"sign_up" = "Cofrestri"; +"submit" = "Anfon"; +"submit_code" = "Anfon côd"; +"set_power_level" = "Gosod Lefel Pŵer"; +"set_default_power_level" = "Ail-osod Lefel Pŵer"; +"set_moderator" = "Gosod Cymredolwr"; +"set_admin" = "Gosod Gweinyddwr"; +"start_chat" = "Dechrau Sgwrs"; +"start_voice_call" = "Dechrau Galwad Llais"; +"start_video_call" = "Dechrau Galwad Fideo"; +"mention" = "Crybwyll"; +"select_account" = "Dewis cyfrif"; +"attach_media" = "Ategu Cyfryngau o'r Llyfrgell"; +"capture_media" = "Tynnu Llun/Fideo"; +"invite_user" = "Gwahodd Defnyddiwr Matrix"; +"reset_to_default" = "Ailosod i'r diofyn"; +"resend_message" = "Ail-anfon y neges"; +"select_all" = "Dewis y cyfan"; +"cancel_upload" = "Canslo Uwchlwytho"; +"cancel_download" = "Canslo Lawrlwytho"; +"show_details" = "Dangos Manylion"; +"answer_call" = "Ateb Galwad"; +"reject_call" = "Gwrthod Galwad"; +"end_call" = "Gorffen Galwad"; +"ignore" = "Anwybyddu"; +"unignore" = "Dad-anwybyddu"; +// Events formatter +"notice_avatar_changed_too" = "(newidiwyd rhithffurf hefyd)"; +"notice_room_name_removed" = "Tynnodd %@ enw'r ystafell"; +"notice_room_topic_removed" = "Fe wnaeth %@ ddileu'r pwnc"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " gan %@"; +"notice_event_redacted_reason" = " [rheswm: %@]"; +"notice_profile_change_redacted" = "Diweddarodd %@ eu proffil %@"; +"notice_room_created" = "Creodd %@ yr ystafell"; +"notice_room_join_rule" = "Y rheol ymuno yw: %@"; +"notice_room_power_level_intro" = "Lefel pŵer aelodau'r ystafell yw:"; +"notice_room_power_level_acting_requirement" = "Y lefelau pŵer lleiaf y mae'n rhaid i ddefnyddiwr eu cael cyn gweithredu yw:"; +"notice_room_power_level_event_requirement" = "Isafswm y lefelau pŵer sy'n gysylltiedig â digwyddiadau yw:"; +"notice_room_aliases" = "Arallenwau'r ystafell yw: %@"; +"notice_room_related_groups" = "Y grwpiau sy'n gysylltiedig â'r ystafell hon yw: %@"; +"notice_encrypted_message" = "Neges amgryptiedig"; +"notice_encryption_enabled" = "Trodd %@ ar amgryptio o'r dechrau i'r diwedd (algorithm %@)"; +"notice_image_attachment" = "atodiad llun"; +"notice_audio_attachment" = "atodiad sain"; +"notice_video_attachment" = "atodiad fideo"; +"notice_location_attachment" = "atodiad lleoliad"; +"notice_file_attachment" = "atodiad ffeil"; +"notice_invalid_attachment" = "atodiad annilys"; +"notice_unsupported_attachment" = "Atodiad heb gefnogaeth: %@"; +"notice_feedback" = "Digwyddiad adborth (id: %@): %@"; +"notice_redaction" = "Golygodd %@ ddigwyddiad (id: %@)"; +"notice_error_unsupported_event" = "Digwyddiad heb gefnogaeth"; +"notice_error_unexpected_event" = "Digwyddiad annisgwyl"; +"notice_error_unknown_event_type" = "Math digwyddiad anhysbys"; +"notice_room_history_visible_to_anyone" = "Gwnaeth %@ hanes ystafell y dyfodol yn weladwy i unrhyw un."; +"notice_room_history_visible_to_members" = "Gwnaeth %@ hanes ystafell y dyfodol yn weladwy i holl aelodau'r ystafell."; +"notice_room_history_visible_to_members_from_invited_point" = "Gwnaeth %@ hanes ystafell y dyfodol yn weladwy i holl aelodau'r ystafell, o'r pwynt y cawsant eu gwahodd."; +"notice_room_history_visible_to_members_from_joined_point" = "Gwnaeth %@ hanes ystafell y dyfodol yn weladwy i holl aelodau'r ystafell, o'r pwynt yr ymunon nhw ag ef."; +"notice_crypto_unable_to_decrypt" = "** Methu dadgryptio: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "Nid yw sesiwn yr anfonwr wedi anfon yr allweddi ar gyfer y neges hon atom."; +"notice_sticker" = "sticer"; +"notice_in_reply_to" = "Mewn ateb i"; +// room display name +"room_displayname_empty_room" = "Ystafell gwag"; +"room_displayname_two_members" = "%@ a %@"; +"room_displayname_more_than_two_members" = "%@ a %@ eraill"; +// Settings +"settings" = "Gosodiadau"; +"settings_enable_inapp_notifications" = "Galluogi hysbysiadau Mewn-App"; +"settings_enable_push_notifications" = "Galluogi gwth-hysbysiadau"; +"settings_enter_validation_token_for" = "Rhowch docyn dilysu ar gyfer %@:"; +"notification_settings_room_rule_title" = "Ystafell: '%@'"; +// Devices +"device_details_title" = "Gwybodaeth sesiwn\n"; +"device_details_name" = "Enw Cyhoeddus\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Gwelwyd ddiweddaf\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_title" = "Enw Sesiwn"; +"device_details_rename_prompt_message" = "Mae enw cyhoeddus sessiwn yn weladwy i'r bobl rydych chi'n cyfathrebu â nhw"; +"device_details_delete_prompt_title" = "Dilysu"; +"device_details_delete_prompt_message" = "Mae angen dilysu ychwanegol ar gyfer y gweithgaredd hon.\nI barhau, nodwch eich cyfrinair."; +// Encryption information +"room_event_encryption_info_title" = "Gwybodaeth amgryptio dechrau i'r diwedd\n\n"; +"room_event_encryption_info_event" = "Gwybodaeth digwyddiad\n"; +"room_event_encryption_info_event_user_id" = "ID Defnyddiwr\n"; +"room_event_encryption_info_event_identity_key" = "Allwedd adnabod Curve25519\n"; +"room_event_encryption_info_event_fingerprint_key" = "Allwedd llofnod Ed25519 â hawliedig\n"; +"room_event_encryption_info_event_algorithm" = "Algorithm\n"; +"room_event_encryption_info_event_session_id" = "ID Sesiwn\n"; +"room_event_encryption_info_event_decryption_error" = "Gwall Dadgryptio\n"; +"room_event_encryption_info_event_unencrypted" = "digryptiedig"; +"room_event_encryption_info_event_none" = "dim"; +"room_event_encryption_info_device" = "\nGwybodaeth am sesiwn yr anfonwr\n"; +"room_event_encryption_info_device_unknown" = "sesiwn anhysbys\n"; +"room_event_encryption_info_device_name" = "Enw Cyhoeddus\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "Gwirio\n"; +"room_event_encryption_info_device_fingerprint" = "Llofnod Ed25519\n"; +"room_event_encryption_info_device_verified" = "Wedi Gwirio"; +"room_event_encryption_info_device_not_verified" = "HEB ei wirio"; +"room_event_encryption_info_device_blocked" = "Gwaharddiedig"; +"room_event_encryption_info_verify" = "Gwirio…"; +"room_event_encryption_info_unverify" = "Dad-wirio"; +"room_event_encryption_info_block" = "Gwahardd"; +"room_event_encryption_info_unblock" = "Dad-wahardd"; +"room_event_encryption_verify_title" = "Gwirio sesiwn\n\n"; +"room_event_encryption_verify_message" = "I wirio y gellir ymddiried yn y sesiwn hon, cysylltwch â'i pherchennog gan ddefnyddio rhyw fodd arall (e.e. yn bersonol neu alwad ffôn) a gofynnwch iddynt a yw'r allwedd a welant yn eu Gosodiadau Defnyddiwr ar gyfer y sesiwn hon yn cyfateb i'r allwedd isod:\n\nEnw'r sesiwn: %@\nID y sesiwn: %@\nAllwedd y sesiwn: %@\n\nOs yw'n cyd-fynd, pwyswch y botwm gwirio isod. Os nad yw'n gwneud hynny, yna mae rhywun arall yn rhyng-gipio'r sesiwn hon ac mae'n debyg eich y dylech wasgu'r botwm gwahardd yn lle.\n\nYn y dyfodol bydd y broses gwirio hon yn fwy soffistigedig."; +"room_event_encryption_verify_ok" = "Gwirio"; +// Account +"account_save_changes" = "Cadw newidiadau"; +"account_link_email" = "Dolen E-bost"; +"account_linked_emails" = "E-byst cysylltiedig"; +"account_email_validation_title" = "Aros am wirio"; +"account_email_validation_message" = "Gwiriwch eich e-bost a chliciwch ar y ddolen sydd ynddo. Ar ôl gwneud hyn, cliciwch parhau."; +"account_email_validation_error" = "Methu gwirio cyfeiriad e-bost. Gwiriwch eich e-bost a chliciwch ar y ddolen sydd ynddo. Ar ôl gwneud hyn, cliciwch parhau"; +"account_msisdn_validation_title" = "Aros am wirio"; +"account_msisdn_validation_message" = "Rydyn ni wedi anfon neges testyn gyda chod actifadu. Rhowch y cod hwn isod."; +"account_msisdn_validation_error" = "Methu gwirio rhif ffôn."; +"account_error_display_name_change_failed" = "Methwyd newid enw arddangos"; +"account_error_picture_change_failed" = "Methwyd newid llun"; +"account_error_matrix_session_is_not_opened" = "Nid yw 'r sesiwn Matrix yn agored"; +"account_error_email_wrong_title" = "Cyfeiriad E-bost Annilys"; +"account_error_email_wrong_description" = "Nid yw hwn yn edrych fel cyfeiriad e-bost dilys"; +"account_error_msisdn_wrong_title" = "Rhif Ffôn Annilys"; +"account_error_msisdn_wrong_description" = "Nid yw hwn yn edrych fel rhif ffôn dilys"; +"account_error_push_not_allowed" = "Ni chaniateir hysbysiadau"; +// Room creation +"room_creation_name_title" = "Enw ystafell:"; +"room_creation_name_placeholder" = "(e.e. criwCinio)"; +"room_creation_alias_title" = "Arallenw ystafell:"; +"room_creation_alias_placeholder" = "(e.e. #foo:example.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(e.e. #foo%@)"; +"room_creation_participants_title" = "Cyfranogwyr:"; +"room_creation_participants_placeholder" = "(e.e. @daf:hafanweinydd1; @gwil:hafanweinydd2...)"; +// Room +"room_please_select" = "Dewisiwch ystafell"; +"room_error_join_failed_title" = "Methwyd ymuno â'r ystafell"; +"room_error_join_failed_empty_room" = "Ar hyn o bryd nid yw'n bosibl ail-ymuno ag ystafell wag."; +"room_error_name_edition_not_authorized" = "Nid oes gennych awdurdod i olygu enw'r ystafell hon"; +"room_error_topic_edition_not_authorized" = "Nid oes gennych awdurdod i olygu pwnc yr ystafell hon"; +"room_error_cannot_load_timeline" = "Methwyd llwytho llinell amser"; +"room_error_timeline_event_not_found_title" = "Methwyd llwytho safle llinell amser"; +"room_error_timeline_event_not_found" = "Roedd y rhaglen yn ceisio llwytho pwynt penodol yn llinell amser yr ystafell hon ond nid oedd yn gallu dod o hyd iddo"; +"room_left" = "Gadawsoch yr ystafell"; +"room_no_power_to_create_conference_call" = "Mae angen caniatâd arnoch i wahodd i ddechrau cynhadledd yn yr ystafell hon"; +"room_no_conference_call_in_encrypted_rooms" = "Ni chefnogir galwadau cynhadledd mewn ystafelloedd wedi'u hamgryptio"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "anfonwyd llun."; +"message_reply_to_sender_sent_a_video" = "anfonwyd fideo."; +"message_reply_to_sender_sent_an_audio_file" = "anfonwyd ffeil sain."; +"message_reply_to_sender_sent_a_file" = "anfonwyd ffeil."; +"message_reply_to_message_to_reply_to_prefix" = "Mewn ateb i"; +// Room members +"room_member_ignore_prompt" = "Ydych chi'n siŵr eich bod chi eisiau cuddio pob neges oddi wrth y defnyddiwr hwn?"; +"room_member_power_level_prompt" = "Ni fyddwch yn gallu dadwneud y newid hwn gan eich bod yn hyrwyddo'r defnyddiwr i gael yr un lefel pŵer â chi'ch hun.\nYdych chi'n siwr?"; +// Attachment +"attachment_size_prompt" = "Ydych chi am anfon fel:"; +"attachment_original" = "Maint Gwirioneddol: %@"; +"attachment_small" = "Bach: %@"; +"attachment_medium" = "Canolig: %@"; +"attachment_large" = "Mawr: %@"; +"attachment_cancel_download" = "Canslo y lawrlwythiad?"; +"attachment_cancel_upload" = "Canslo yr uwchlwythiad?"; +"attachment_multiselection_size_prompt" = "Hoffech chi anfon llun fel:"; +"attachment_multiselection_original" = "Maint Gwirioneddol"; +"attachment_e2e_keys_file_prompt" = "Mae'r ffeil hon yn cynnwys allweddi amgryptio a allfudwyd o gleient Matrix.\nYdych chi eisiau gweld cynnwys y ffeil neu fewnfudo'r allweddi sydd ynddo?"; +"attachment_e2e_keys_import" = "Mewnfudo..."; +// Contacts +"contact_mx_users" = "Defnyddwyr Matrix"; +"contact_local_contacts" = "Cysylltiadau Lleol"; +// Groups +// Search +"search_no_results" = "Dum Canluniadau"; +"search_searching" = "Chwilio ar y gweill..."; +// Time +"format_time_s" = "e"; +"format_time_m" = "m"; +"format_time_h" = "a"; +"format_time_d" = "d"; +// E2E import +"e2e_import_room_keys" = "Mewnfudo allweddi ystafell"; +"e2e_import_prompt" = "Mae'r broses hon yn caniatáu ichi fewnfudo allweddi amgryptio yr oeddech wedi'u hallfudo o'r blaen o gleient Matrix arall. Yna byddwch yn gallu dadgryptio unrhyw negeseuon y gallai'r cleient arall eu dadgryptio.\nMae'r ffeil allfudo wedi'i gwarchod gyda chyfrinair. Dylech nodi'r cyfrinair yma, i ddadgryptio'r ffeil."; +"e2e_import" = "Mewnfudo"; +"e2e_passphrase_enter" = "Rhowch cyfrinair"; +// E2E export +"e2e_export_room_keys" = "Allfudo allweddi ystafell"; +"e2e_export_prompt" = "Mae'r broses hon yn caniatáu ichi allfudo i ffeil leol yr allweddi ar gyfer negeseuon rydych wedi'u derbyn mewn ystafelloedd amgryptiedig. Yna byddwch chi'n gallu mewnfudo'r ffeil i gleient Matrix arall yn y dyfodol, fel y bydd y cleient hwnnw hefyd yn gallu dadgryptio'r negeseuon hyn.\nBydd y ffeil a allfudir yn caniatáu i unrhyw un sy'n gallu ei darllen ddadgryptio unrhyw negeseuon amgryptiedig y gallwch eu gweld, felly dylech fod yn ofalus i'w cadw'n ddiogel."; +"e2e_export" = "Allfudo"; +"e2e_passphrase_confirm" = "Cadarnhau cyfrinair"; +"e2e_passphrase_empty" = "Ni chaniateir cyfrinair gwag"; +"e2e_passphrase_not_match" = "Rhaid i'r cyfrineiriau gyfateb"; +"e2e_passphrase_create" = "Creu cyfrinair"; +// Others +"user_id_title" = "ID Defnyddiwr:"; +"offline" = "all-lein"; +"unsent" = "Heb eu danfon"; +"error" = "Gwall"; +"error_common_message" = "Digwyddodd gwall. Rhowch gynning eto nes ymlaen."; +"not_supported_yet" = "Heb ei gefnogi eto"; +"default" = "diofyn"; +"private" = "Preifat"; +"public" = "Cyhoeddus"; +"power_level" = "Lefel Pŵer"; +"network_error_not_reachable" = "Gwiriwch eich cysylltedd rhwydwaith"; +"user_id_placeholder" = "eng: @gwil:hafanweinydd"; +"ssl_homeserver_url" = "URL Hafanweinydd: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Mae galwadau fideo angen mynediad i'r Camera ond nid oes gan %@ ganiatâd i'w ddefnyddio"; +"microphone_access_not_granted_for_call" = "Mae galwadau fideo angen mynediad i'r Meicroffon ond nid oes gan %@ ganiatâd i'w ddefnyddio"; +"local_contacts_access_not_granted" = "Mae darganfyddiad defnyddwyr o gysylltiadau lleol angen mynediad i'ch cysylltiadau ond nid oes gan %@ ganiatâd i'w ddefnyddio"; +"local_contacts_access_discovery_warning_title" = "Darganfod defnyddwyr"; +"local_contacts_access_discovery_warning" = "I ddarganfod cysylltiadau sydd eisoes yn defnyddio Matrix, gall %@ anfon cyfeiriadau e-bost a rhifau ffôn yn eich llyfr cyfeiriadau at y gweinydd adnabod Matrix o'ch dewis. Pan gânt eu cefnogi, mae data personol yn cael ei amgodio cyn ei anfon - gwiriwch bolisi preifatrwydd eich gweinydd adnabod i gael mwy o fanylion."; +// Country picker +"country_picker_title" = "Dewiswch wlad"; +// Language picker +"language_picker_title" = "Dewiswch iaith"; +"language_picker_default_language" = "Diofyn (%@)"; +"notice_room_invite" = "Mae %@ wedi gwahodd %@"; +"notice_room_third_party_invite" = "Anfonodd %@ wahoddiad i %@ i ymuno â'r ystafell"; +"notice_room_third_party_registered_invite" = "Derbyniodd %@ y gwahoddiad am %@"; +"notice_room_third_party_revoked_invite" = "Tynnodd %@ y gwahoddiad i %@ ymuno â'r ystafell"; +"notice_room_join" = "Ymunodd %@"; +"notice_room_leave" = "Gadawodd %@"; +"notice_room_reject" = "Gwrthododd %@ y gwahoddiad"; +"notice_room_kick" = "Ciciodd %@ %@"; +"notice_room_unban" = "Dad-waharddodd %@ %@"; +"notice_room_ban" = "Gwaharddod %@ %@"; +"notice_room_withdraw" = "Tynnodd %@ wahoddiad %@ yn ôl"; +"notice_room_reason" = ". Rheswm: %@"; +"notice_avatar_url_changed" = "Newidiodd %@ eu rhithffurf"; +"notice_display_name_set" = "Gosododd %@ eu henw arddangos i %@"; +"notice_display_name_changed_from" = "Newidiodd %@ eu henw arddangos o %@ i %@"; +"notice_display_name_removed" = "Tynnodd %@ eu henw arddangos"; +"notice_topic_changed" = "Newidiodd %@ y pwnc i: %@"; +"notice_room_name_changed" = "Newidiodd %@ enw'r ystafell i: %@"; +"notice_placed_voice_call" = "Gosododd %@ alwad llais"; +"notice_placed_video_call" = "Gosododd %@ alwad fideo"; +"notice_answered_video_call" = "Atebodd %@ y galwad"; +"notice_ended_video_call" = "Gorffenodd %@ y galwad"; +"notice_conference_call_request" = "Gofynnodd %@ am gynhadledd VoIP"; +"notice_conference_call_started" = "Dechreuwyd cynhadledd VoIP"; +"notice_conference_call_finished" = "Gorffenwyd cynhadledd VoIP"; +// button names +"ok" = "Iawn"; +"send" = "Anfon"; +"copy_button_name" = "Copi"; +"resend" = "Ail-anfon"; +"redact" = "Tynnu"; +"share" = "Rhannu"; +"delete" = "Dileu"; +// actions +"action_logout" = "Allgofnodi"; +"create_room" = "Creu Ystafell"; +"login" = "Mewngofnodi"; +"create_account" = "Creu Cyfrif"; +"membership_invite" = "Gwahoddwyd"; +"membership_leave" = "Gadawodd"; +"membership_ban" = "Gwaharddedig"; +"num_members_one" = "%@ defnyddiwr"; +"num_members_other" = "%@ defnyddiwr"; +"kick" = "Cic"; +"ban" = "Gwahardd"; +"unban" = "Dad-wahardd"; +"message_unsaved_changes" = "Mae yna newidiadau heb eu cadw. Bydd gadael yn golygu eu colli."; +// Login Screen +"login_error_already_logged_in" = "Wedi mewngofnodi eisoes"; +"login_error_must_start_http" = "Rhaid i URL ddechrau â http[s]://"; +// room details dialog screen +// contacts list screen +"invitation_message" = "Hoffwn sgwrsio â chi gyda Matrix. Os gwelwch yn dda, ewch i'r wefan https://matrix.org i gael mwy o wybodaeth."; +// Settings screen +"settings_title_config" = "Gosodiadau"; +"settings_title_notifications" = "Hysbysebiadau"; +// Notification settings screen +"notification_settings_disable_all" = "Analluogi pob hysbysiad"; +"notification_settings_enable_notifications" = "Galluogi hysbysiadau"; +"notification_settings_enable_notifications_warning" = "Ar hyn o bryd mae pob hysbysiad wedi eu hanalluogi ar gyfer pob dyfais."; +"notification_settings_global_info" = "Mae gosodiadau hysbysiadau yn cael eu cadw i'ch cyfrif defnyddiwr ac yn cael eu rhannu rhwng yr holl gleientiaid sy'n eu cefnogi (gan gynnwys hysbysiadau cyfrifiadur).\n\nCymhwysir rheolau mewn trefn; mae'r rheol gyntaf sy'n cyfateb yn diffinio canlyniad y neges.\nFelly: Mae hysbysiadau fesul gair yn bwysicach na hysbysiadau fesul ystafell sy'n bwysicach na hysbysiadau fesul anfonwr.\nAr gyfer rheolau lluosog o'r un math, mae'r un gyntaf yn y rhestr sy'n cyfateb yn cael blaenoriaeth."; +"notification_settings_per_word_notifications" = "Hysbysiadau fesul gair"; +"notification_settings_per_word_info" = "Mae geiriau'n cyfateb priflythrennau a rhai bach, a gallant gynnwys * cerdyn gwyllt. Felly:\nmae foo yn cyd-fynd â'r testyn foo wedi'i amgylchynu gan amffinyddion geiriau (e.e. atalnodi a gofod gwyn neu ddechrau / diwedd llinell).\nmae foo* yn cyfateb i unrhyw air o'r fath sy'n dechrau foo.\nmae *foo* yn cyfateb i unrhyw air o'r fath sy'n cynnwys y 3 llythyren foo."; +"notification_settings_always_notify" = "Rhowch wybod bob amser"; +"notification_settings_never_notify" = "Peidiwch byth â hysbysu"; +"notification_settings_word_to_match" = "gair yw gyfateb"; +"notification_settings_highlight" = "Amlygiad"; +"notification_settings_custom_sound" = "Sain addasol"; +"notification_settings_per_room_notifications" = "Hysbysiadau fesul ystafell"; +"notification_settings_per_sender_notifications" = "Hysbysiadau fesul anfonwr"; +"notification_settings_sender_hint" = "@defnyddiwr:parth.com"; +"notification_settings_select_room" = "Dewisiwch ystafell"; +"notification_settings_other_alerts" = "Rhybuddion Eraill"; +"notification_settings_contain_my_user_name" = "Rhowch wybod i mi gyda sain am negeseuon sy'n cynnwys fy enw defnyddiwr"; +"notification_settings_contain_my_display_name" = "Rhowch wybod i mi gyda sain am negeseuon sy'n cynnwys fy enw arddangos"; +"notification_settings_just_sent_to_me" = "Rhowch wybod i mi gyda sain am negeseuon â anfonwyd ataf yn unig"; +"notification_settings_invite_to_a_new_room" = "Rhowch wybod i mi pan gaf wahoddiad i ystafell newydd"; +"notification_settings_people_join_leave_rooms" = "Rhowch wybod i mi pan fydd pobl yn ymuno neu'n gadael ystafelloedd"; +"notification_settings_receive_a_call" = "Rhowch wybod i mi pan fyddaf yn derbyn galwad"; +"notification_settings_suppress_from_bots" = "Atal hysbysiadau o botiau"; +"notification_settings_by_default" = "Yn ddiofyn..."; +"notification_settings_notify_all_other" = "Hysbysu am yr holl negeseuon / ystafelloedd eraill"; +// gcm section +// call string +"call_waiting" = "Aros..."; +"call_connecting" = "Cysylltu galwad..."; +"call_ended" = "Gorffenwyd y galwad"; +"call_ring" = "Yn galw..."; +"incoming_video_call" = "Galwad Fideo sy'n dod i mewn"; +"incoming_voice_call" = "Galwad Llais sy'n dod i mewn"; +"call_invite_expired" = "Gwahoddiad Galwad wedi dod i ben"; +// unrecognized SSL certificate +"ssl_trust" = "Ymddiried"; +"ssl_logout_account" = "Allgofnodi"; +"ssl_remain_offline" = "Anwybyddu"; +"ssl_fingerprint_hash" = "Llofnod (%@):"; +"ssl_could_not_verify" = "Methwyd gwirio gweinyddwr adnabod pell."; +"ssl_cert_not_trust" = "Gallai hyn olygu bod rhywun yn rhyng-gipio eich traffig yn faleisus, neu nad yw'ch ffôn yn ymddiried yn y dystysgrif a ddarperir gan y gweinydd pell."; +"ssl_cert_new_account_expl" = "Os yw gweinyddwr y gweinydd wedi dweud bod disgwyl hyn, sicrhewch fod yr llofnod isod yn cyfateb i'r llofnod a ddarperir ganddynt."; +"ssl_unexpected_existing_expl" = "Mae'r dystysgrif wedi newid o un yr oedd eich ffôn yn ymddiried ynddo. Mae hyn yn ANNISGWYL IAWN. Argymhellir i chi BEIDIO Â DERBYN y dystysgrif newydd hon."; +"ssl_expected_existing_expl" = "Mae'r dystysgrif wedi newid o un yr ymddiriedwyd ynddo o'r blaen i un nad oes ymddiried ynddo. Efallai bod y gweinydd wedi adnewyddu ei dystysgrif. Cysylltwch â gweinyddwr y gweinydd i gael y llofnod disgwyliedig."; +"ssl_only_accept" = "Peidiwch a derbyn y dystysgrif ONIBAI bod gweinyddwr y gweinydd wedi cyhoeddi llofnod sy'n cyfateb i'r un uchod."; +"notice_encryption_enabled_ok" = "Trodd %@ amgryptio o'r dechrau i'r diwedd ymlaen."; +"notice_encryption_enabled_unknown_algorithm" = "Trodd %@ amgryptio o'r dechrau i'r diwedd ymlaen (algorithm anghydnabyddedig %2$@)."; diff --git a/Riot/Assets/da.lproj/Vector.strings b/Riot/Assets/da.lproj/Vector.strings index 8b1378917..e3dbb85af 100644 --- a/Riot/Assets/da.lproj/Vector.strings +++ b/Riot/Assets/da.lproj/Vector.strings @@ -1 +1,7 @@ + + +// MARK: - MatrixKit + + + diff --git a/Riot/Assets/de.lproj/Vector.strings b/Riot/Assets/de.lproj/Vector.strings index c8244e25a..4ddccf894 100644 --- a/Riot/Assets/de.lproj/Vector.strings +++ b/Riot/Assets/de.lproj/Vector.strings @@ -1635,3 +1635,506 @@ "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"; +"location_sharing_open_open_street_maps" = "In OpenStreetMap öffnen"; +"onboarding_use_case_title" = "Mit wem wirst du am meisten chatten?"; +"onboarding_use_case_message" = "Wir helfen dir, dich zu verbinden."; +"onboarding_use_case_personal_messaging" = "Freunde und Familie"; +"onboarding_use_case_work_messaging" = "Teams"; +"onboarding_use_case_community_messaging" = "Gemeinschaften"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Noch nicht sicher? Du kannst"; +"onboarding_use_case_skip_button" = "diese Frage überspringen"; +"onboarding_use_case_existing_server_message" = "Willst du einen existierenden Server beitreten?"; +"onboarding_use_case_existing_server_button" = "MIt Server verbinden"; +"search_filter_placeholder" = "Filtern"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Konto erstellen:"; +"login_server_url_placeholder" = "URL (z.B. https://matrix.org)"; +"login_home_server_title" = "Heimserver-URL:"; +"login_home_server_info" = "Dein Heimserver speichert alle deine Gespräche und Benutzerkontodaten"; +"login_identity_server_title" = "Identitätsserver-URL:"; +"login_identity_server_info" = "Matrix stellt Identitätsserver bereit, um feststellen zu können, welche E-Mail-Adressen, etc. zu welchen Matrix-IDs gehören. Momentan existiert nur https://vector.im."; +"login_user_id_placeholder" = "Matrix-ID (z.B. @bob:matrix.org oder bob)"; +"login_password_placeholder" = "Passwort"; +"login_optional_field" = "optional"; +"login_display_name_placeholder" = "Anzeigename (z.B. Peter Pan)"; +"login_email_placeholder" = "E-Mail-Adresse"; +"login_error_title" = "Anmeldung fehlgeschlagen"; +"login_email_info" = "Die Eingabe einer E-Mail-Adresse erleichtert es anderen Benutzern, dich auf Matrix zu finden. Außerdem kannst du mit der hinterlegten E-Mail-Adresse dein Passwort zurücksetzen."; +"login_prompt_email_token" = "Gib das E-Mail-Validierungstoken ein:"; +"login_error_no_login_flow" = "Die Authentifizierungsinformation von diesem Heimserver konnte nicht abgerufen werden"; +"login_error_do_not_support_login_flows" = "Momentan werden einige oder alle der von diesem Heimserver definierten Authentifizierungspfade nicht unterstützt"; +"login_error_registration_is_not_supported" = "Registrierung wird momentan nicht unterstützt"; +"login_error_forbidden" = "Benutzername oder Passwort ungültig"; +"login_error_unknown_token" = "Das angegebene Zugriffstoken wurde nicht erkannt"; +"login_error_bad_json" = "Deformiertes JSON"; +"login_error_not_json" = "Enthielt kein valides JSON"; +"login_error_limit_exceeded" = "Zu viele Anfragen wurden gesendet"; +"login_error_user_in_use" = "Dieser Benutzername wird bereits verwendet"; +"login_error_login_email_not_yet" = "Der Email-Link wurde noch nicht angeklickt"; +"login_use_fallback" = "Benutze die Ersatzseite"; +"login_leave_fallback" = "Abbrechen"; +"login_invalid_param" = "Ungültiger Parameter"; +"register_error_title" = "Registrierung fehlgeschlagen"; +"login_error_forgot_password_is_not_supported" = "\"Passwort vergessen\" wird momentan nicht unterstützt"; +"login_mobile_device" = "Mobilgerät"; +"login_tablet_device" = "Tablet"; +"login_desktop_device" = "Desktop"; +"login_error_resource_limit_exceeded_title" = "Ressourcengrenzwert überschritten"; +"login_error_resource_limit_exceeded_message_default" = "Dieser Heimserver hat eine seiner Ressourcengrenzwerte überschritten."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Dieser Heimserver hat sein Grenzwert an monatlich aktiven Nutzern erreicht."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nBitte kontaktiere deinen Dienstadministrator um mit der Nutzung dieses Dienstes fortzufahren."; +"login_error_resource_limit_exceeded_contact_button" = "Kontaktiere Administrator"; +// Action +"no" = "Nein"; +"yes" = "Ja"; +"abort" = "Abbrechen"; +"discard" = "Verwerfen"; +"dismiss" = "Ablehnen"; +"sign_up" = "Registrieren"; +"submit" = "Absenden"; +"submit_code" = "Code übermitteln"; +"set_power_level" = "Berechtigungsstufe setzen"; +"set_default_power_level" = "Berechtigungsstufe zurücksetzen"; +"set_moderator" = "Moderator setzen"; +"set_admin" = "Administrator setzen"; +"start_chat" = "Chat starten"; +"start_voice_call" = "Sprachanruf starten"; +"start_video_call" = "Videoanruf starten"; +"mention" = "Erwähnung"; +"select_account" = "Wähle ein Konto"; +"attach_media" = "Medien aus der Bibliothek anhängen"; +"capture_media" = "Foto/Video aufnehmen"; +"invite_user" = "Matrixbenutzer einladen"; +"reset_to_default" = "Auf Standardeinstellungen zurücksetzen"; +"resend_message" = "Nachricht erneut senden"; +"select_all" = "Alles auswählen"; +"cancel_upload" = "Hochladen abbrechen"; +"cancel_download" = "Herunterladen abbrechen"; +"show_details" = "Zeige Details"; +"answer_call" = "Anruf annehmen"; +"reject_call" = "Anruf abweisen"; +"end_call" = "Anruf beenden"; +"ignore" = "Ignorieren"; +"unignore" = "Ignorieren aufheben"; +// Events formatter +"notice_avatar_changed_too" = "(Avatar wurde auch geändert)"; +"notice_room_name_removed" = "%@ hat den Raumnamen gelöscht"; +"notice_room_name_removed_for_dm" = "%@ hat den Namen gelöscht"; +"notice_room_topic_removed" = "%@ hat das Raumthema gelöscht"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " durch %@"; +"notice_event_redacted_reason" = " [Grund: %@]"; +"notice_profile_change_redacted" = "%@ aktualisierte sein Profil %@"; +"notice_room_created" = "%@ hat den Raum erstellt und konfiguriert."; +"notice_room_created_for_dm" = "%@ ist beigetreten."; +// Old +"notice_room_join_rule" = "Die Beitrittsregel ist: %@"; +// New +"notice_room_join_rule_invite" = "%@ hat den Raum auf \"nur-einladen\" gestellt."; +"notice_room_join_rule_invite_for_dm" = "%@ hat auf Einladungen beschränkt."; +"notice_room_join_rule_invite_by_you" = "Du hast den Raumbeitritt auf Einladungen beschränkt."; +"notice_room_join_rule_invite_by_you_for_dm" = "Du hast dies auf Einladungen beschränkt."; +"notice_room_join_rule_public" = "%@ hat den Raum öffentlich gemacht."; +"notice_room_join_rule_public_for_dm" = "%@ hat es öffentlich gemacht."; +"notice_room_join_rule_public_by_you" = "Du hast den Raum öffentlich gemacht."; +"notice_room_join_rule_public_by_you_for_dm" = "Du hast es öffentlich gemacht."; +"notice_room_power_level_intro" = "Die Berechtigungsstufe der Teilnehmer ist:"; +"notice_room_power_level_intro_for_dm" = "Die Berechtigungsstufe der Teilnehmer ist:"; +"notice_room_power_level_acting_requirement" = "Die minimale Berechtigungsstufe, die ein Benutzer zum Handeln benötigt:"; +"notice_room_power_level_event_requirement" = "Die minimalen Berechtigungsstufen bezogen auf Ereignisse:"; +"notice_room_aliases" = "Die Raumnamenaliase sind: %@"; +"notice_room_aliases_for_dm" = "Die Namenaliase sind: %@"; +"notice_room_related_groups" = "Die Gruppen, die mit diesem Raum verknüpft sind: %@"; +"notice_encrypted_message" = "Verschlüsselte Nachricht"; +"notice_encryption_enabled_ok" = "%@ hat die Ende-zu-Ende-Verschlüsselung aktiviert."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ hat die Ende-zu-Ende-Verschlüsselung aktiviert (unbekannter Algorithmus %2$@)."; +"notice_image_attachment" = "angehängtes Bild"; +"notice_audio_attachment" = "Audioanhang"; +"notice_video_attachment" = "Videoanhang"; +"notice_location_attachment" = "Standortanhang"; +"notice_file_attachment" = "Dateianhang"; +"notice_invalid_attachment" = "Ungültige Anhang"; +"notice_unsupported_attachment" = "Nicht unterstützter Anhang: %@"; +"notice_feedback" = "Rückmeldeereignis (id: %@): %@"; +"notice_redaction" = "%@ hat Ereignis geschwärzt (id: %@)"; +"notice_error_unsupported_event" = "Nicht unterstütztes Ereignis"; +"notice_error_unexpected_event" = "Unerwartetes Ereignis"; +"notice_error_unknown_event_type" = "Unbekannter Ereignistyp"; +"notice_room_history_visible_to_anyone" = "%@ hat den zukünftigen Raumverlauf für alle sichtbar gemacht."; +"notice_room_history_visible_to_members" = "%@ hat den zukünftigen Raumverlauf für alle Raumteilnehmer sichtbar gemacht."; +"notice_room_history_visible_to_members_for_dm" = "%@ hat die folgenden Nachrichten für alle Teilnehmer des Raumes sichtbar gemacht."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ hat den zukünftigen Raumverlauf für alle Raumteilnehmer ab deren Einladung sichtbar gemacht."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ hat den zukünftigen Verlauf für alle Raumteilnehmer ab deren Einladung sichtbar gemacht."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ hat den zukünftigen Raumverlauf für alle Raumteilnehmer ab deren Einladung sichtbar gemacht."; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ hat den zukünftigen Verlauf für alle Raumteilnehmer ab deren Einladung sichtbar gemacht."; +"notice_crypto_unable_to_decrypt" = "** Entschlüsselung nicht möglich: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "Die absendende Sitzung hat uns keine Schlüssel für diese Nachricht gesendet."; +"notice_sticker" = "Aufkleber"; +"notice_in_reply_to" = "Als Antwort auf"; +// room display name +"room_displayname_empty_room" = "Leerer Raum"; +"room_displayname_two_members" = "%@ und %@"; +"room_displayname_more_than_two_members" = "%@ und %u andere"; +// Settings +"settings" = "Einstellungen"; +"settings_enable_inapp_notifications" = "Benachrichtigungen innerhalb der App aktivieren"; +"settings_enable_push_notifications" = "Puschbenachrichtigungen aktivieren"; +"settings_enter_validation_token_for" = "Eingabe Validierungstoken für %@:"; +"notification_settings_room_rule_title" = "Raum: '%@'"; +// Devices +"device_details_title" = "Sitzungsinformation\n"; +"device_details_name" = "Öffentlicher Name\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Zuletzt gesehen:\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_title" = "Sitzungsname"; +"device_details_rename_prompt_message" = "Der öffentliche Name einer Sitzung ist für Personen sichtbar, mit denen Sie kommunizieren"; +"device_details_delete_prompt_title" = "Authentifizierung"; +"device_details_delete_prompt_message" = "Diese Aktion erfordert zusätzliche Authentifizierung.\nBitte gib dein Passwort ein."; +// Encryption information +"room_event_encryption_info_title" = "Ende-zu-Ende Verschlüsselungsinformation\n\n"; +"room_event_encryption_info_event" = "Ereignis Information\n"; +"room_event_encryption_info_event_user_id" = "Benutzer-ID\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519 Identitätsschlüssel\n"; +"room_event_encryption_info_event_fingerprint_key" = "Verlangter Ed25519-Fingerabdruck\n"; +"room_event_encryption_info_event_algorithm" = "Algorithmus\n"; +"room_event_encryption_info_event_session_id" = "Sitzungs-ID\n"; +"room_event_encryption_info_event_decryption_error" = "Entschlüsselungsfehler\n"; +"room_event_encryption_info_event_unencrypted" = "nicht verschlüsselt"; +"room_event_encryption_info_event_none" = "keine"; +"room_event_encryption_info_device" = "\nAbsendersitzungsinformation\n"; +"room_event_encryption_info_device_unknown" = "Unbekannte Sitzung\n"; +"room_event_encryption_info_device_name" = "Öffentlicher Name\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "Überprüfung\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519-Fingerabdruck\n"; +"room_event_encryption_info_device_verified" = "Überprüft"; +"room_event_encryption_info_device_not_verified" = "NICHT verifiziert"; +"room_event_encryption_info_device_blocked" = "auf schwarzer Liste"; +"room_event_encryption_info_verify" = "Überprüfe..."; +"room_event_encryption_info_unverify" = "Verifizierung widerrufen"; +"room_event_encryption_info_block" = "Blockieren"; +"room_event_encryption_info_unblock" = "Blockierung aufheben"; +"room_event_encryption_verify_title" = "Überprüfe Sitzung\n\n"; +"room_event_encryption_verify_message" = "Um zu prüfen, dass dieser Sitzung vertraut werden kann, kontaktiere bitte den Eigentümer über einen anderen Weg (z.B. in Person oder mit einem Telefonanruf) und frage ihn, ob der Schlüssel, den er in seinen Benutzereinstellungen für diese Sitzung sieht, dem folgenden Schlüssel entspricht:\n\n\tSitzungs-Name: %@\n\tSitzungs-ID: %@\n\tSitzungsschlüssel: %@\n\nWenn es übereinstimmt, die \"Überprüfe\" Schaltfläche drücken. Wenn nicht, dann hört jemand anderes diese Sitzung ab und du willst stattdessen vermutlich die Schaltfläche \"Blockieren\" drücken.\n\nIn Zukunft wird dieser Überprüfungsprozess ausgefeilter sein."; +"room_event_encryption_verify_ok" = "Überprüfe"; +// Account +"account_save_changes" = "Änderungen speichern"; +"account_link_email" = "Verbinde E-Mail-Adresse"; +"account_linked_emails" = "Verbundene E-Mail-Adressen"; +"account_email_validation_title" = "Verifizierung ausstehend"; +"account_email_validation_message" = "Bitte prüfe deine E-Mails und klicke auf den enthaltenen Link. Wenn dies erledigt ist, klicke auf \"Fortsetzen\"."; +"account_email_validation_error" = "Kann E-Mail-Adresse nicht verifizieren. Bitte prüfe deine E-Mails und klicke auf den enthaltenen Link. Wenn das erledigt ist, Schaltfläche \"Fortfahren\" drücken"; +"account_msisdn_validation_title" = "Verifizierung ausstehend"; +"account_msisdn_validation_message" = "Wir haben eine SMS mit einem Aktivierungscode gesendet. Bitte den Code unten eingeben."; +"account_msisdn_validation_error" = "Kann Telefonnummer nicht verifizieren."; +"account_error_display_name_change_failed" = "Änderung des Anzeigenamens fehlgeschlagen"; +"account_error_picture_change_failed" = "Änderung des Bildes fehlgeschlagen"; +"account_error_matrix_session_is_not_opened" = "Matrixsitzung ist nicht geöffnet"; +"account_error_email_wrong_title" = "Ungültige E-Mail-Adresse"; +"account_error_email_wrong_description" = "Sieht nicht aus wie eine gültige E-Mail-Adresse"; +"account_error_msisdn_wrong_title" = "Ungültige Telefonnummer"; +"account_error_msisdn_wrong_description" = "Sieht nicht wie eine valide Telefonnummer aus"; +"account_error_push_not_allowed" = "Benachrichtigungen nicht erlaubt"; +// Room creation +"room_creation_name_title" = "Raumname:"; +"room_creation_name_placeholder" = "(z.B. MittagessenGruppe)"; +"room_creation_alias_title" = "Raumalias:"; +"room_creation_alias_placeholder" = "(z.B. #foo:example.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(z.B. #foo%@)"; +"room_creation_participants_title" = "Teilnehmer:"; +"room_creation_participants_placeholder" = "(z.B. @laura:heimserver1; @thomas:heimserver2...)"; +// Room +"room_please_select" = "Bitte wähle einen Raum"; +"room_error_join_failed_title" = "Konnte Raum nicht betreten"; +"room_error_join_failed_empty_room" = "Es ist aktuell nicht möglich einen leeren Raum zu betreten."; +"room_error_name_edition_not_authorized" = "Du bist nicht authorisiert den Raumnamen zu ändern"; +"room_error_topic_edition_not_authorized" = "Du bist nicht authorisiert das Raumthema zu ändern"; +"room_error_cannot_load_timeline" = "Konnte Verlauf nicht laden"; +"room_error_timeline_event_not_found_title" = "Konnte Position im Verlauf nicht laden"; +"room_error_timeline_event_not_found" = "Konnte spezifischen Punkt im Verlauf dieses Raumes nicht finden"; +"room_left" = "Du hast den Raum verlassen"; +"room_left_for_dm" = "Du hast die Unterhaltung verlassen"; +"room_no_power_to_create_conference_call" = "Einladungsberechtigung benötigt, um Konferenz in diesem Raum zu starten"; +"room_no_conference_call_in_encrypted_rooms" = "Konferenzgespräche sind in verschlüsselten Räumen nicht unterstützt"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "sandte ein Bild."; +"message_reply_to_sender_sent_a_video" = "sandte ein Video."; +"message_reply_to_sender_sent_an_audio_file" = "sandte eine Audiodatei."; +"message_reply_to_sender_sent_a_file" = "sandte eine Datei."; +"message_reply_to_message_to_reply_to_prefix" = "Als Antwort auf"; +// Room members +"room_member_ignore_prompt" = "Sicher, dass alle Nachrichten von diesem Benutzer versteckt werden sollen?"; +"room_member_power_level_prompt" = "Du kannst diese Änderung nicht rückgangig machen, weil du dem Benutzer die gleiche Berechtigungsstufe gibst, die du selbst hast.\nBist du sicher?"; +// Attachment +"attachment_size_prompt" = "Möchtest du senden als:"; +"attachment_original" = "Originalgröße (%@)"; +"attachment_small" = "Klein (~%@)"; +"attachment_medium" = "Mittel (~%@)"; +"attachment_large" = "Groß (~%@)"; +"attachment_cancel_download" = "Herunterladen abbrechen?"; +"attachment_cancel_upload" = "Hochladen abbrechen?"; +"attachment_multiselection_size_prompt" = "Bilder senden als:"; +"attachment_multiselection_original" = "Originalgröße"; +"attachment_e2e_keys_file_prompt" = "Diese Datei enthält von einem Matrixclient exportierte Schlüssel.\nMöchtest du den Dateiinhalt sehen oder die Schlüssel importieren?"; +"attachment_e2e_keys_import" = "Importiere..."; +// Contacts +"contact_mx_users" = "Matrixbenutzer"; +"contact_local_contacts" = "Lokale Kontakte"; +// Groups +// Search +"search_no_results" = "Nichts gefunden"; +"search_searching" = "Suche wird durchgeführt..."; +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "h"; +"format_time_d" = "t"; +// E2E import +"e2e_import_room_keys" = "Importiere Raumschlüssel"; +"e2e_import_prompt" = "Dieser Prozess erlaubt es dir, Schlüssel zu importieren, die du vorher von einem anderen Matrixclient exportiert hast. Du kannst anschließend alle Nachrichten entschlüsseln, die auch bereits der andere Client entschlüsseln konnte.\nDie Exportdatei ist mit einer Passphrase geschützt. Gib die Passphrase hier ein, um die Datei zu importieren."; +"e2e_import" = "Importieren"; +"e2e_passphrase_enter" = "Passphrase eingeben"; +// E2E export +"e2e_export_room_keys" = "Exportiere Raumschlüssel"; +"e2e_export_prompt" = "Dieser Prozeß erlaubt den Export von Schlüsseln, die du in verschlüsselten Räumen empfangen hast, in eine lokale Datei. Du kannst dann die Datei in einem anderen Matrixclient in Zukunft importieren, so dass dieser Client die Nachrichten auch entschlüsseln kann.\nDie exportierte Datei wird jedem der sie lesen kann erlauben, alle verschlüsselten Nachrichten sehen können, also verwahre die Datei sicher."; +"e2e_export" = "Exportiere"; +"e2e_passphrase_confirm" = "Passphrase bestätigen"; +"e2e_passphrase_empty" = "Die Passphrase darf nicht leer sein"; +"e2e_passphrase_not_match" = "Passphrasen stimmen nicht überein"; +"e2e_passphrase_create" = "Passphrase erzeugen"; +// Others +"user_id_title" = "Benutzer-ID:"; +"offline" = "offline"; +"unsent" = "Nicht gesendet"; +"error" = "Fehler"; +"error_common_message" = "Ein Fehler trat auf. Bitte später erneut probieren."; +"not_supported_yet" = "Noch nicht unterstützt"; +"default" = "Standard"; +"private" = "Privat"; +"public" = "Öffentlich"; +"power_level" = "Berechtigungsstufe"; +"network_error_not_reachable" = "Bitte Netzwerkverbindung prüfen"; +"user_id_placeholder" = "z. B.: @thomas:heimserver"; +"ssl_homeserver_url" = "Heimserver URL: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Video-Anrufe benötigen Zugriff auf die Kamera, aber %@ hat keine Berechtigung"; +"microphone_access_not_granted_for_call" = "Anrufe benötigen Zugriff auf das Mikrofon, aber %@ hat keine Berechtigung"; +"local_contacts_access_not_granted" = "Finden von Benutzern in lokalen Kontakten benötigt Zugriff auf die Kontakte, aber %@ hat keine Berechtigung"; +"local_contacts_access_discovery_warning_title" = "Benutzer finden"; +"local_contacts_access_discovery_warning" = "Um Kontakte zu erkennen, die Matrix bereits verwenden, kann %@ E-Mail-Adressen und Telefonnummern in Ihrem Adressbuch an den von Ihnen ausgewählten Matrix-Identitätsserver senden. Sofern dies unterstützt wird, werden personenbezogene Daten vor dem Senden gehasht. Weitere Informationen finden Sie in den Datenschutzrichtlinien Ihres Identitätsservers."; +// Country picker +"country_picker_title" = "Wähle ein Land"; +// Language picker +"language_picker_title" = "Wähle eine Sprache"; +"language_picker_default_language" = "Standard (%@)"; +"notice_room_invite" = "%@ hat %@ eingeladen"; +"notice_room_third_party_invite" = "%@ sendete eine Einladung an %@ den Raum zu betreten"; +"notice_room_third_party_invite_for_dm" = "%@ hat %@ eingeladen"; +"notice_room_third_party_registered_invite" = "%@ akzeptierte die Einladung für %@"; +"notice_room_third_party_revoked_invite" = "%@ hat die Einladung für %@, dem Raum beizutreten, zurückgezogen"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ hat %@'s Einladung zurückgezogen"; +"notice_room_join" = "%@ betrat den Raum"; +"notice_room_leave" = "%@ hat den Raum verlassen"; +"notice_room_reject" = "%@ lehnte die Einladung ab"; +"notice_room_kick" = "%@ hat %@ entfernt"; +"notice_room_unban" = "%@ entsperrte %@"; +"notice_room_ban" = "%@ sperrte %@"; +"notice_room_withdraw" = "%@ hat %@s Einladung zurückgezogen"; +"notice_room_reason" = ". Grund: %@"; +"notice_avatar_url_changed" = "%@ hat den eigenen Avatar geändert"; +"notice_display_name_set" = "%@ setzte den Anzeigenamen auf %@"; +"notice_display_name_changed_from" = "%@ änderte den Anzeigenamen von %@ auf %@"; +"notice_display_name_removed" = "%@ hat den Anzeigenamen entfernt"; +"notice_topic_changed" = "%@ wechselte das Thema zu %@."; +"notice_room_name_changed" = "%@ änderte den Raumnamen zu %@."; +"notice_room_name_changed_for_dm" = "%@ änderte den Raumnamen zu %@."; +"notice_placed_voice_call" = "%@ tätigte einen Sprachanruf"; +"notice_placed_video_call" = "%@ tätigte einen Videoanruf"; +"notice_answered_video_call" = "%@ hat den Anruf angenommen"; +"notice_ended_video_call" = "%@ hat den Anruf beendet"; +"notice_conference_call_request" = "%@ hat eine VoIP-Konferenz angefragt"; +"notice_conference_call_started" = "VoIP-Konferenz gestartet"; +"notice_conference_call_finished" = "VoIP-Konferenz beendet"; +// Notice Events with "You" +"notice_room_invite_by_you" = "Du hast %@ eingeladen"; +"notice_room_invite_you" = "%@ hat Dich eingeladen"; +"notice_room_third_party_invite_by_you" = "Du hast an %@ eine Einladung gesendet dem Raum beizutreten"; +"notice_room_third_party_invite_by_you_for_dm" = "Du hast %@ eingeladen"; +"notice_room_third_party_registered_invite_by_you" = "Du hast die Einladung für %@ angenommen"; +"notice_room_third_party_revoked_invite_by_you" = "Du hast die Einladung dem Raum %@ beizutreten abgelehnt"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Du hast die Einladung %@'s zurückgezogen"; +"notice_room_join_by_you" = "Du bist beigetreten"; +"notice_room_leave_by_you" = "Du bist ausgetreten"; +"notice_room_reject_by_you" = "Du hast die Einladung abgelehnt"; +"notice_room_kick_by_you" = "Du hast %@ entfernt"; +"notice_room_unban_by_you" = "Du hast %@ entbannt"; +"notice_room_ban_by_you" = "Du hast %@ gebannt"; +"notice_room_withdraw_by_you" = "Du hast die Einladung von %@ zurückgenommen"; +"notice_avatar_url_changed_by_you" = "Du hast dein Profilbild geändert"; +"notice_display_name_set_by_you" = "Du hast deinen Anzeigenamen auf %@ geändert"; +"notice_display_name_changed_from_by_you" = "Du hast deinen Anzeigenamen von %@ zu %@ geändert"; +"notice_display_name_removed_by_you" = "Du hast deinen Anzeigenamen entfernt"; +"notice_topic_changed_by_you" = "Du hast Das Thema zu %@ geändert."; +"notice_room_name_changed_by_you" = "Du hast den Raumnamen zu %@ geändert."; +"notice_room_name_changed_by_you_for_dm" = "Du hast den Namen zu %@ geändert."; +"notice_placed_voice_call_by_you" = "Du hast einen Audioanruf gestartet"; +"notice_placed_video_call_by_you" = "Du hast einen Videoanruf gestartet"; +"notice_answered_video_call_by_you" = "Du hast den Anruf angenommen"; +"notice_ended_video_call_by_you" = "Du hast den Anruf beendet"; +"notice_conference_call_request_by_you" = "Du hast eine VoIP-Konferenz angefordert"; +"notice_room_name_removed_by_you" = "Du hast den Raumnamen entfernt"; +"notice_room_name_removed_by_you_for_dm" = "Du hast den Namen entfernt"; +"notice_room_topic_removed_by_you" = "Du hast das Raumthema entfernt"; +"notice_event_redacted_by_you" = " von dir"; +"notice_profile_change_redacted_by_you" = "Du hast dein Profil %@ aktualisiert"; +"notice_room_created_by_you" = "Du hast den Raum erstellt und konfiguriert."; +"notice_room_created_by_you_for_dm" = "Du bist beigetreten."; +"notice_encryption_enabled_ok_by_you" = "Du hast Ende-zu-Ende-Verschlüsselung aktiviert."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Du hast Ende-zu-Ende-Verschlüsselung aktiviert (unbekannter Algorithmus %@)."; +"notice_redaction_by_you" = "Du hast ein Ereignis geschwärzt (ID: %@)"; +"notice_room_history_visible_to_anyone_by_you" = "Du hast den zukünftigen Nachrichtenverlauf für jeden sichtbar gemacht."; +"notice_room_history_visible_to_members_by_you" = "Du hast den zukünftigen Nachrichtenverlauf für alle Mitglieder des Raums sichtbar gemacht."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Du hast den zukünftigen Nachrichtenverlauf für alle Mitglieder des Raums sichtbar gemacht."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Du hast den zukünftigen Nachrichtenverlauf für alle Mitglieder des Raums ab deren Teilnahme sichtbar gemacht."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Du hast den zukünftigen Nachrichtenverlauf für alle sichtbar gemacht, sobald sie eingeladen werden."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Du hast den zukünftigen Nachrichtenverlauf für alle Mitglieder des Raums ab deren Teilnahme sichtbar gemacht."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Du hast den zukünftigen Nachrichtenverlauf für alle Mitglieder des Raums sichtbar gemacht, ab deren Teilnahme."; +// Room Screen + +// general errors + +// Home Screen + +// Last seen time + +// call events + +// titles + +// button names +"send" = "Senden"; +"copy_button_name" = "Kopieren"; +"resend" = "Erneut senden"; +"redact" = "Entfernen"; +"share" = "Teilen"; +"delete" = "Löschen"; +// actions +"action_logout" = "Abmelden"; +"create_room" = "Erstelle Raum"; +"login" = "Anmelden"; +"create_account" = "Erstelle Konto"; +"membership_invite" = "Eingeladen"; +"membership_leave" = "Verlassen"; +"membership_ban" = "Gesperrt"; +"num_members_one" = "%@ Benutzer"; +"num_members_other" = "%@ Benutzer"; +"kick" = "Entfernen"; +"ban" = "Sperren"; +"unban" = "Entsperren"; +"message_unsaved_changes" = "Es gibt nicht gespeicherte Änderungen. Verlassen wird diese verwerfen."; +// Login Screen +"login_error_already_logged_in" = "Bereits angemeldet"; +"login_error_must_start_http" = "URL muss mit http[s]:// anfangen"; +// members list Screen + +// accounts list Screen + +// image size selection + +// invitation members list Screen + +// room creation dialog Screen + +// room info dialog Screen + +// room details dialog screen +// contacts list screen +"invitation_message" = "Ich würde gerne über Matrix mit dir chatten. Du kannst dich auf https://matrix.org darüber informieren."; +// Settings screen +"settings_title_config" = "Konfiguration"; +"settings_title_notifications" = "Benachrichtigungen"; +// Notification settings screen +"notification_settings_disable_all" = "Alle Benachrichtigungen ausschalten"; +"notification_settings_enable_notifications" = "Benachrichtigungen einschalten"; +"notification_settings_enable_notifications_warning" = "Alle Benachrichtigungen sind momentan für alle Geräte ausgeschaltet."; +"notification_settings_global_info" = "Benachrichtigungseinstellungen werden in deinem Benutzerkonto gespeichert und zwischen allen Clients die das unterstützen geteilt (inklusive Desktop Benachrichtigungen). \n\nRegeln werden der Reihe nach angewandt; die erste Regel, die zutrifft, bestimmt das Resultat für die Nachricht.\nPro-Wort-Benachrichtigungen sind wichtiger als Pro-Raum-Benachrichtigungen, die wichtiger sind wie Pro-Absender-Benachrichtigungen.\nBei mehrfachen Regeln des gleichen Typs wird die erste in der Liste die zutrifft angewendet."; +"notification_settings_per_word_notifications" = "Pro-Wort-Benachrichtigungen"; +"notification_settings_per_word_info" = "Suchwörter ignorieren Groß-/Kleinschreibung und können ein *-Platzhalter enthalten. Beispiele:\nfoo findet den String foo umgeben durch Trennzeichen (Satzzeichen, Leerzeichen, Zeilenanfang/ende).\nfoo* findet Worte die mit foo beginnen.\n*foo* findet jedes Wort das foo an beliebiger Stelle enthält."; +"notification_settings_always_notify" = "Immer benachrichtigen"; +"notification_settings_never_notify" = "Nie benachrichtigen"; +"notification_settings_word_to_match" = "übereinstimmende Wörter"; +"notification_settings_highlight" = "Hervorheben"; +"notification_settings_custom_sound" = "Individueller Klang"; +"notification_settings_per_room_notifications" = "Pro-Raum-Benachrichtigungen"; +"notification_settings_per_sender_notifications" = "Pro-Absender-Benachrichtigungen"; +"notification_settings_sender_hint" = "@benutzer:domaene.com"; +"notification_settings_select_room" = "Wähle einen Raum"; +"notification_settings_other_alerts" = "Andere Alarme"; +"notification_settings_contain_my_user_name" = "Klänge bei Nachrichten die meinen Benutzernamen enthalten"; +"notification_settings_contain_my_display_name" = "Klänge bei Nachrichten die meinen Anzeigenamen enthalten"; +"notification_settings_just_sent_to_me" = "Mich über gerade empfangene Nachrichten mit einem Klang informieren"; +"notification_settings_invite_to_a_new_room" = "Benachrichtige, wenn ich zu einem neuen Raum eingeladen werde"; +"notification_settings_people_join_leave_rooms" = "Benachrichtige, wenn Benutzer einen Raum betreten oder verlassen"; +"notification_settings_receive_a_call" = "Benachrichtige, wenn ich einen Anruf erhalte"; +"notification_settings_suppress_from_bots" = "Unterdrücke Benachrichtigungen von Bots"; +"notification_settings_by_default" = "Als Standard..."; +"notification_settings_notify_all_other" = "Benachrichtige für alle andereren Nachrichten/Räume"; +// gcm section +// Settings keys + +// call string +"call_waiting" = "Warte..."; +"call_connecting" = "Verbinden…"; +"call_ended" = "Anruf beendet"; +"call_ring" = "Rufe an..."; +"incoming_video_call" = "Eingehender Videoanruf"; +"incoming_voice_call" = "Eingehender Sprachanruf"; +"call_invite_expired" = "Anrufeinladung abgelaufen"; +// unrecognized SSL certificate +"ssl_trust" = "Vertrauensstellung"; +"ssl_logout_account" = "Abmelden"; +"ssl_remain_offline" = "Ignorieren"; +"ssl_fingerprint_hash" = "Fingerabdruck (%@):"; +"ssl_could_not_verify" = "Konnte die Identität des Servers nicht verifizieren."; +"ssl_cert_not_trust" = "Das kann bedeuten, dass jemand den Datenverkehr mitliest, oder dass dein Gerät dem Zertifikat des Servers nicht vertraut."; +"ssl_cert_new_account_expl" = "Wenn der Server Administrator gesagt hat, dass dies erwartet wird, stelle sicher, dass der Fingerabdruck unten dem vom Administrator mitgeteilten Fingerabdruck entspricht."; +"ssl_unexpected_existing_expl" = "Das Zertifikat des Servers hat sich geändert, es ist nicht mehr das vertraute Zertifikat. Das ist SEHR UNGEWÖHNLICH! Es wird empfohlen das neue Zertifikat NICHT ZU AKZEPTIEREN."; +"ssl_expected_existing_expl" = "Das Zertifikat des Servers hat sich geändert, es ist nicht mehr das vertraute Zertifikat. Der Server könnte sein Zertifikat erneuert haben. Kontaktiere den Serveradministrator um den Fingerabdruck zu überprüfen."; +"ssl_only_accept" = "Akzeptiere AUSSCHLIESSLICH Zertifikate für die der Serveradministrator einen Fingerprint veröffentlicht hat."; +"call_more_actions_transfer" = "Übertragung"; +"call_more_actions_audio_use_headset" = "Kopfhörer verwenden"; +"call_more_actions_change_audio_device" = "Audiogerät ändern"; +"call_more_actions_unhold" = "Fortsetzen"; +"call_more_actions_hold" = "Halten"; +"call_holded" = "Du hast den Anurf pausiert"; +"call_remote_holded" = "%@ hat den Anruf pausiert"; +"notice_declined_video_call_by_you" = "Du hast den Anruf abgelehnt"; +"notice_declined_video_call" = "%@ hat den Anruf abgelehnt"; +"resume_call" = "Fortsetzen"; +"call_more_actions_dialpad" = "Ziffernblatt"; +"call_more_actions_audio_use_device" = "Lautsprecher"; +"call_transfer_to_user" = "Durchstellen zu %@"; +"call_video_with_user" = "Videoanruf mit %@"; +"call_voice_with_user" = "Sprachanruf mit %@"; +"call_ringing" = "Läuten…"; +"e2e_passphrase_too_short" = "Passphrase zu kurz (Minimum sind %d Zeichen)"; +"call_consulting_with_user" = "Bei %@ anfragen"; +"microphone_access_not_granted_for_voice_message" = "%@ fehlt die Berechtigung, für Sprachnachrichten auf das Mikrofon zuzugreifen"; +"message_reply_to_sender_sent_a_voice_message" = "hat eine Sprachnachricht gesendet."; +"attachment_size_prompt_title" = "Zum Senden die Größe auswählen"; +"attachment_large_with_resolution" = "Groß %@ (~%@)"; +"attachment_medium_with_resolution" = "Mittel %@ (~%@)"; +"attachment_small_with_resolution" = "Klein %@ (~%@)"; +"attachment_size_prompt_message" = "Dies kannst du in den Einstellungen abschalten."; +"attachment_unsupported_preview_message" = "Dieser Dateityp wird nicht unterstützt."; +"attachment_unsupported_preview_title" = "Vorschau kann nicht angezeigt werden"; +"message_reply_to_sender_sent_their_location" = "hat den eigenen Standort geteilt."; +"room_displayname_all_other_members_left" = "%@ (Verlassen)"; diff --git a/Riot/Assets/en.lproj/Untranslated.strings b/Riot/Assets/en.lproj/Untranslated.strings new file mode 100644 index 000000000..d55b74231 --- /dev/null +++ b/Riot/Assets/en.lproj/Untranslated.strings @@ -0,0 +1,23 @@ +/* + Copyright 2015 OpenMarket 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. + */ + +/** These strings will be ignored by Weblate. Useful for WIP **/ + +// MARK: Onboarding Personalisation WIP +"onboarding_congratulations_title" = "Congratulations!"; +"onboarding_congratulations_message" = "Your account\n%@\nhas been created."; +"onboarding_congratulations_personalise_button" = "Personalise profile"; +"onboarding_congratulations_home_button" = "Take me home"; diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 63a0afa4d..ef355b183 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -290,6 +290,8 @@ Tap the + to start adding people."; "room_participants_leave_prompt_title_for_dm" = "Leave"; "room_participants_leave_prompt_msg" = "Are you sure you want to leave the room?"; "room_participants_leave_prompt_msg_for_dm" = "Are you sure you want to leave?"; +"room_participants_leave_processing" = "Leaving"; +"room_participants_leave_success" = "Left room"; "room_participants_remove_prompt_title" = "Confirmation"; "room_participants_remove_prompt_msg" = "Are you sure you want to remove %@ from this chat?"; "room_participants_remove_third_party_invite_prompt_msg" = "Are you sure you want to revoke this invite?"; @@ -617,6 +619,7 @@ Tap the + to start adding people."; "settings_labs_enable_ringing_for_group_calls" = "Ring for group calls"; "settings_labs_enabled_polls" = "Polls"; "settings_labs_enable_threads" = "Threaded messaging"; +"settings_labs_use_only_latest_user_avatar_and_name" = "Show latest avatar and name for users in message history"; "settings_version" = "Version %@"; "settings_olm_version" = "Olm Version %@"; @@ -626,9 +629,7 @@ Tap the + to start adding people."; "settings_third_party_notices" = "Third-party Notices"; "settings_analytics_and_crash_data" = "Send crash and analytics data"; "settings_enable_rageshake" = "Rage shake to report bug"; -"settings_clear_cache" = "Clear cache"; -"settings_change_password" = "Change Matrix account password"; "settings_old_password" = "old password"; "settings_new_password" = "new password"; "settings_confirm_password" = "confirm password"; @@ -1618,8 +1619,6 @@ Tap the + to start adding people."; "secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Confirm"; "secrets_setup_recovery_passphrase_confirm_passphrase_placeholder" = "Confirm phrase"; -"key_backup_setup_passphrase_confirm_passphrase_valid" = "Great!"; -"key_backup_setup_passphrase_confirm_passphrase_invalid" = "Phrase doesn’t match"; "secrets_setup_recovery_passphrase_summary_title" = "Save your Security Phrase"; "secrets_setup_recovery_passphrase_summary_information" = "Remember your Security Phrase. It can be used to unlock your encrypted messages & data."; @@ -1747,6 +1746,7 @@ Tap the + to start adding people."; "home_context_menu_low_priority" = "Low priority"; "home_context_menu_normal_priority" = "Normal priority"; "home_context_menu_leave" = "Leave"; +"home_syncing" = "Syncing"; // MARK: - Favourites @@ -1950,3 +1950,554 @@ Tap the + to start adding people."; "location_sharing_settings_header" = "Location sharing"; "location_sharing_settings_toggle_title" = "Enable location sharing"; + + +// MARK: - MatrixKit + + +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "Matrix"; + +// Login Screen +"login_create_account" = "Create account:"; +"login_server_url_placeholder" = "URL (e.g. https://matrix.org)"; +"login_home_server_title" = "Homeserver URL:"; +"login_home_server_info" = "Your homeserver stores all your conversations and account data"; +"login_identity_server_title" = "Identity server URL:"; +"login_identity_server_info" = "Matrix provides identity servers to track which emails etc. belong to which Matrix IDs. Only https://matrix.org currently exists."; +"login_user_id_placeholder" = "Matrix ID (e.g. @bob:matrix.org or bob)"; +"login_password_placeholder" = "Password"; +"login_optional_field" = "optional"; +"login_display_name_placeholder" = "Display name (e.g. Bob Obson)"; +"login_email_info" = "Specify an email address lets other users find you on Matrix more easily, and will give you a way to reset your password in the future."; +"login_email_placeholder" = "Email address"; +"login_prompt_email_token" = "Please enter your email validation token:"; +"login_error_title" = "Login Failed"; +"login_error_no_login_flow" = "We failed to retrieve authentication information from this homeserver"; +"login_error_do_not_support_login_flows" = "Currently we do not support any or all login flows defined by this homeserver"; +"login_error_registration_is_not_supported" = "Registration is not currently supported"; +"login_error_forbidden" = "Invalid username/password"; +"login_error_unknown_token" = "The access token specified was not recognised"; +"login_error_bad_json" = "Malformed JSON"; +"login_error_not_json" = "Did not contain valid JSON"; +"login_error_limit_exceeded" = "Too many requests have been sent"; +"login_error_user_in_use" = "This user name is already used"; +"login_error_login_email_not_yet" = "The email link which has not been clicked yet"; +"login_use_fallback" = "Use fallback page"; +"login_leave_fallback" = "Cancel"; +"login_invalid_param" = "Invalid parameter"; +"register_error_title" = "Registration Failed"; +"login_error_forgot_password_is_not_supported" = "Forgot password is not currently supported"; +"login_mobile_device"="Mobile"; +"login_tablet_device"="Tablet"; +"login_desktop_device"="Desktop"; +"login_error_resource_limit_exceeded_title" = "Resource Limit Exceeded"; +"login_error_resource_limit_exceeded_message_default" = "This homeserver has exceeded one of its resource limits."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "This homeserver has hit its Monthly Active User limit."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nPlease contact your service administrator to continue using this service."; +"login_error_resource_limit_exceeded_contact_button" = "Contact Administrator"; + +// Action +"no" = "No"; +"yes" = "Yes"; +"abort" = "Abort"; +"discard" = "Discard"; +"dismiss" = "Dismiss"; +"sign_up" = "Sign up"; +"submit" = "Submit"; +"submit_code" = "Submit code"; +"set_power_level" = "Set Power Level"; +"set_default_power_level" = "Reset 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 an account"; +"attach_media" = "Attach Media from Library"; +"capture_media" = "Take Photo/Video"; +"invite_user" = "Invite matrix User"; +"reset_to_default" = "Reset to default"; +"resend_message" = "Resend the message"; +"select_all" = "Select All"; +"cancel_upload" = "Cancel Upload"; +"cancel_download" = "Cancel Download"; +"show_details" = "Show Details"; +"answer_call" = "Answer Call"; +"reject_call" = "Reject Call"; +"end_call" = "End Call"; +"resume_call" = "Resume"; +"ignore" = "Ignore"; +"unignore" = "Unignore"; + +// Events formatter +"notice_avatar_changed_too" = "(avatar was changed too)"; +"notice_room_name_removed" = "%@ removed the room name"; +"notice_room_name_removed_for_dm" = "%@ removed the name"; +"notice_room_topic_removed" = "%@ removed the topic"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " by %@"; +"notice_event_redacted_reason" = " [reason: %@]"; +"notice_profile_change_redacted" = "%@ updated their profile %@"; +"notice_room_created" = "%@ created and configured the room."; +"notice_room_created_for_dm" = "%@ joined."; +// Old +"notice_room_join_rule" = "The join rule is: %@"; +// New +"notice_room_join_rule_invite" = "%@ made the room invite only."; +"notice_room_join_rule_invite_for_dm" = "%@ made this invite only."; +"notice_room_join_rule_invite_by_you" = "You made the room invite only."; +"notice_room_join_rule_invite_by_you_for_dm" = "You made this invite only."; +"notice_room_join_rule_public" = "%@ made the room public."; +"notice_room_join_rule_public_for_dm" = "%@ made this public."; +"notice_room_join_rule_public_by_you" = "You made the room public."; +"notice_room_join_rule_public_by_you_for_dm" = "You made this public."; +"notice_room_power_level_intro" = "The power level of room members are:"; +"notice_room_power_level_intro_for_dm" = "The power level of members are:"; +"notice_room_power_level_acting_requirement" = "The minimum power levels that a user must have before acting are:"; +"notice_room_power_level_event_requirement" = "The minimum power levels related to events are:"; +"notice_room_aliases" = "The room aliases are: %@"; +"notice_room_aliases_for_dm" = "The aliases are: %@"; +"notice_room_related_groups" = "The groups associated with this room are: %@"; +"notice_encrypted_message" = "Encrypted message"; +"notice_encryption_enabled_ok" = "%@ turned on end-to-end encryption."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ turned on end-to-end encryption (unrecognised algorithm %2$@)."; +"notice_image_attachment" = "image attachment"; +"notice_audio_attachment" = "audio attachment"; +"notice_video_attachment" = "video attachment"; +"notice_location_attachment" = "location attachment"; +"notice_file_attachment" = "file attachment"; +"notice_invalid_attachment" = "invalid attachment"; +"notice_unsupported_attachment" = "Unsupported attachment: %@"; +"notice_feedback" = "Feedback event (id: %@): %@"; +"notice_redaction" = "%@ redacted an event (id: %@)"; +"notice_error_unsupported_event" = "Unsupported event"; +"notice_error_unexpected_event" = "Unexpected event"; +"notice_error_unknown_event_type" = "Unknown event type"; +"notice_error_unformattable_event" = "** Unable to render message. Please report a bug"; +"notice_room_history_visible_to_anyone" = "%@ made future room history visible to anyone."; +"notice_room_history_visible_to_members" = "%@ made future room history visible to all room members."; +"notice_room_history_visible_to_members_for_dm" = "%@ made future messages visible to all room members."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ made future room history visible to all room members, from the point they are invited."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ made future messages visible to everyone, from when they get invited."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ made future room history visible to all room members, from the point they joined."; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ made future messages visible to everyone, from when they joined."; +"notice_crypto_unable_to_decrypt" = "** Unable to decrypt: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "The sender's session has not sent us the keys for this message."; +"notice_sticker" = "sticker"; +"notice_in_reply_to" = "In reply to"; + +// room display name +"room_displayname_empty_room" = "Empty room"; +"room_displayname_two_members" = "%@ and %@"; +"room_displayname_more_than_two_members" = "%@ and %@ others"; +"room_displayname_all_other_members_left" = "%@ (Left)"; + +// Settings +"settings" = "Settings"; +"settings_enable_inapp_notifications" = "Enable In-App notifications"; +"settings_enable_push_notifications" = "Enable push notifications"; +"settings_enter_validation_token_for" = "Enter validation token for %@:"; + +"notification_settings_room_rule_title" = "Room: '%@'"; + +// Devices +"device_details_title" = "Session information\n"; +"device_details_name" = "Public Name\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Last seen\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_title" = "Session Name"; +"device_details_rename_prompt_message" = "A session's public name is visible to people you communicate with"; +"device_details_delete_prompt_title" = "Authentication"; +"device_details_delete_prompt_message" = "This operation requires additional authentication.\nTo continue, please enter your password."; + +// Encryption information +"room_event_encryption_info_title" = "End-to-end encryption information\n\n"; +"room_event_encryption_info_event" = "Event information\n"; +"room_event_encryption_info_event_user_id" = "User ID\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519 identity key\n"; +"room_event_encryption_info_event_fingerprint_key" = "Claimed Ed25519 fingerprint key\n"; +"room_event_encryption_info_event_algorithm" = "Algorithm\n"; +"room_event_encryption_info_event_session_id" = "Session ID\n"; +"room_event_encryption_info_event_decryption_error" = "Decryption error\n"; +"room_event_encryption_info_event_unencrypted" = "unencrypted"; +"room_event_encryption_info_event_none" = "none"; +"room_event_encryption_info_device" = "\nSender session information\n"; +"room_event_encryption_info_device_unknown" = "unknown session\n"; +"room_event_encryption_info_device_name" = "Public Name\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "Verification\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519 fingerprint\n"; +"room_event_encryption_info_device_verified" = "Verified"; +"room_event_encryption_info_device_not_verified" = "NOT verified"; +"room_event_encryption_info_device_blocked" = "Blacklisted"; +"room_event_encryption_info_verify" = "Verify..."; +"room_event_encryption_info_unverify" = "Unverify"; +"room_event_encryption_info_block" = "Blacklist"; +"room_event_encryption_info_unblock" = "Unblacklist"; +"room_event_encryption_verify_title" = "Verify session\n\n"; +"room_event_encryption_verify_message" = "To verify that this session can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this session matches the key below:\n\n\tSession name: %@\n\tSession ID: %@\n\tSession key: %@\n\nIf it matches, press the verify button below. If it doesnt, then someone else is intercepting this session and you probably want to press the blacklist button instead.\n\nIn future this verification process will be more sophisticated."; +"room_event_encryption_verify_ok" = "Verify"; + +// Account +"account_save_changes" = "Save changes"; +"account_link_email" = "Link Email"; +"account_linked_emails" = "Linked emails"; + +"account_email_validation_title" = "Verification Pending"; +"account_email_validation_message" = "Please check your email and click on the link it contains. Once this is done, click continue."; +"account_email_validation_error" = "Unable to verify email address. Please check your email and click on the link it contains. Once this is done, click continue"; + +"account_msisdn_validation_title" = "Verification Pending"; +"account_msisdn_validation_message" = "We\'ve sent an SMS with an activation code. Please enter this code below."; +"account_msisdn_validation_error" = "Unable to verify phone number."; + +"account_error_display_name_change_failed" = "Display name change failed"; +"account_error_picture_change_failed" = "Picture change failed"; +"account_error_matrix_session_is_not_opened" = "Matrix session is not opened"; +"account_error_email_wrong_title" = "Invalid Email Address"; +"account_error_email_wrong_description" = "This doesn't appear to be a valid email address"; +"account_error_msisdn_wrong_title" = "Invalid Phone Number"; +"account_error_msisdn_wrong_description" = "This doesn't appear to be a valid phone number"; +"account_error_push_not_allowed" = "Notifications not allowed"; + +// Room creation +"room_creation_name_title" = "Room name:"; +"room_creation_name_placeholder" = "(e.g. lunchGroup)"; +"room_creation_alias_title" = "Room alias:"; +"room_creation_alias_placeholder" = "(e.g. #foo:example.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(e.g. #foo%@)"; +"room_creation_participants_title" = "Participants:"; +"room_creation_participants_placeholder" = "(e.g. @bob:homeserver1; @john:homeserver2...)"; + +// Room +"room_please_select" = "Please select a room"; +"room_error_join_failed_title" = "Failed to join room"; +"room_error_join_failed_empty_room" = "It is not currently possible to join an empty room."; +"room_error_name_edition_not_authorized" = "You are not authorized to edit this room name"; +"room_error_topic_edition_not_authorized" = "You are not authorized to edit this room topic"; +"room_error_cannot_load_timeline" = "Failed to load timeline"; +"room_error_timeline_event_not_found_title" = "Failed to load timeline position"; +"room_error_timeline_event_not_found" = "The application was trying to load a specific point in this room's timeline but was unable to find it"; +"room_left" = "You left the room"; +"room_left_for_dm" = "You left"; +"room_no_power_to_create_conference_call" = "You need permission to invite to start a conference in this room"; +"room_no_conference_call_in_encrypted_rooms" = "Conference calls are not supported in encrypted rooms"; + +// Reply to message +"message_reply_to_sender_sent_an_image" = "sent an image."; +"message_reply_to_sender_sent_a_video" = "sent a video."; +"message_reply_to_sender_sent_an_audio_file" = "sent an audio file."; +"message_reply_to_sender_sent_a_voice_message" = "sent a voice message."; +"message_reply_to_sender_sent_a_file" = "sent a file."; +"message_reply_to_sender_sent_their_location" = "has shared their location."; +"message_reply_to_message_to_reply_to_prefix" = "In reply to"; + +// Room members +"room_member_ignore_prompt" = "Are you sure you want to hide all messages from this user?"; +"room_member_power_level_prompt" = "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.\nAre you sure?"; + +// Attachment +"attachment_size_prompt" = "Do you want to send as:"; +"attachment_size_prompt_title" = "Confirm size to send"; +"attachment_size_prompt_message" = "You can turn this off in settings."; +"attachment_original" = "Actual Size (%@)"; +"attachment_small" = "Small (~%@)"; +"attachment_medium" = "Medium (~%@)"; +"attachment_large" = "Large (~%@)"; +"attachment_small_with_resolution" = "Small %@ (~%@)"; +"attachment_medium_with_resolution" = "Medium %@ (~%@)"; +"attachment_large_with_resolution" = "Large %@ (~%@)"; +"attachment_cancel_download" = "Cancel the download?"; +"attachment_cancel_upload" = "Cancel the upload?"; +"attachment_multiselection_size_prompt" = "Do you want to send images as:"; +"attachment_multiselection_original" = "Actual Size"; +"attachment_e2e_keys_file_prompt" = "This file contains encryption keys exported from a Matrix client.\nDo you want to view the file content or import the keys it contains?"; +"attachment_e2e_keys_import" = "Import..."; +"attachment_unsupported_preview_title" = "Unable to preview"; +"attachment_unsupported_preview_message" = "This file type is not supported."; + +// Contacts +"contact_mx_users" = "Matrix Users"; +"contact_local_contacts" = "Local Contacts"; + +// Groups + +// Search +"search_no_results" = "No Results"; +"search_searching" = "Search in progress..."; + +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "h"; +"format_time_d" = "d"; + +// E2E import +"e2e_import_room_keys" = "Import room keys"; +"e2e_import_prompt" = "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.\nThe export file is protected with a passphrase. You should enter the passphrase here, to decrypt the file."; +"e2e_import" = "Import"; +"e2e_passphrase_enter" = "Enter passphrase"; + +// E2E export +"e2e_export_room_keys" = "Export room keys"; +"e2e_export_prompt" = "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.\nThe exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure."; +"e2e_export" = "Export"; +"e2e_passphrase_confirm" = "Confirm passphrase"; +"e2e_passphrase_empty" = "Passphrase must not be empty"; +"e2e_passphrase_too_short" = "Passphrase too short (It must be at a minimum %d characters in length)"; +"e2e_passphrase_not_match" = "Passphrases must match"; +"e2e_passphrase_create" = "Create passphrase"; + +// Others +"user_id_title" = "User ID:"; +"offline" = "offline"; +"unsent" = "Unsent"; +"error" = "Error"; +"error_common_message" = "An error occured. Please try again later."; +"not_supported_yet" = "Not supported yet"; +"default" = "default"; +"private" = "Private"; +"public" = "Public"; +"power_level" = "Power Level"; +"network_error_not_reachable" = "Please check your network connectivity"; +"user_id_placeholder" = "ex: @bob:homeserver"; +"ssl_homeserver_url" = "Homeserver URL: %@"; + +// Permissions +"camera_access_not_granted_for_call" = "Video calls require access to the Camera but %@ doesn't have permission to use it"; +"microphone_access_not_granted_for_call" = "Calls require access to the Microphone but %@ doesn't have permission to use it"; +"local_contacts_access_not_granted" = "Users discovery from local contacts requires access to you contacts but %@ doesn't have permission to use it"; + +"local_contacts_access_discovery_warning_title" = "Users discovery"; +"local_contacts_access_discovery_warning" = "To discover contacts already using Matrix, %@ can send email addresses and phone numbers in your address book to your chosen Matrix identity server. Where supported, personal data is hashed before sending - please check your identity server's privacy policy for more details."; + +"microphone_access_not_granted_for_voice_message" = "Voice messages require access to the Microphone but %@ doesn't have permission to use it"; + +// Country picker +"country_picker_title" = "Choose a country"; + +// Language picker +"language_picker_title" = "Choose a language"; +"language_picker_default_language" = "Default (%@)"; + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /matrix-sdk/src/main/res/values/strings.xml. +*/ + +"notice_room_invite" = "%@ invited %@"; +"notice_room_third_party_invite" = "%@ sent an invitation to %@ to join the room"; +"notice_room_third_party_invite_for_dm" = "%@ invited %@"; +"notice_room_third_party_registered_invite" = "%@ accepted the invitation for %@"; +"notice_room_third_party_revoked_invite" = "%@ revoked the invitation for %@ to join the room"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ revoked %@'s invitation"; +"notice_room_join" = "%@ joined"; +"notice_room_leave" = "%@ left"; +"notice_room_reject" = "%@ rejected the invitation"; +"notice_room_kick" = "%@ removed %@"; +"notice_room_unban" = "%@ unbanned %@"; +"notice_room_ban" = "%@ banned %@"; +"notice_room_withdraw" = "%@ withdrew %@'s invitation"; +"notice_room_reason" = ". Reason: %@"; +"notice_avatar_url_changed" = "%@ changed their avatar"; +"notice_display_name_set" = "%@ set their display name to %@"; +"notice_display_name_changed_from" = "%@ changed their display name from %@ to %@"; +"notice_display_name_removed" = "%@ removed their display name"; +"notice_topic_changed" = "%@ changed the topic to \"%@\"."; +"notice_room_name_changed" = "%@ changed the room name to %@."; +"notice_room_name_changed_for_dm" = "%@ changed the name to %@."; +"notice_placed_voice_call" = "%@ placed a voice call"; +"notice_placed_video_call" = "%@ placed a video call"; +"notice_answered_video_call" = "%@ answered the call"; +"notice_ended_video_call" = "%@ ended the call"; +"notice_declined_video_call" = "%@ declined the call"; +"notice_conference_call_request" = "%@ requested a VoIP conference"; +"notice_conference_call_started" = "VoIP conference started"; +"notice_conference_call_finished" = "VoIP conference finished"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "You invited %@"; +"notice_room_invite_you" = "%@ invited you"; +"notice_room_third_party_invite_by_you" = "You sent an invitation to %@ to join the room"; +"notice_room_third_party_invite_by_you_for_dm" = "You invited %@"; +"notice_room_third_party_registered_invite_by_you" = "You accepted the invitation for %@"; +"notice_room_third_party_revoked_invite_by_you" = "You revoked the invitation for %@ to join the room"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "You revoked %@'s invitation"; +"notice_room_join_by_you" = "You joined"; +"notice_room_leave_by_you" = "You left"; +"notice_room_reject_by_you" = "You rejected the invitation"; +"notice_room_kick_by_you" = "You removed %@"; +"notice_room_unban_by_you" = "You unbanned %@"; +"notice_room_ban_by_you" = "You banned %@"; +"notice_room_withdraw_by_you" = "You withdrew %@'s invitation"; +"notice_avatar_url_changed_by_you" = "You changed your avatar"; +"notice_display_name_set_by_you" = "You set your display name to %@"; +"notice_display_name_changed_from_by_you" = "You changed your display name from %@ to %@"; +"notice_display_name_removed_by_you" = "You removed your display name"; +"notice_topic_changed_by_you" = "You changed the topic to \"%@\"."; +"notice_room_name_changed_by_you" = "You changed the room name to %@."; +"notice_room_name_changed_by_you_for_dm" = "You changed the name to %@."; +"notice_placed_voice_call_by_you" = "You placed a voice call"; +"notice_placed_video_call_by_you" = "You placed a video call"; +"notice_answered_video_call_by_you" = "You answered the call"; +"notice_ended_video_call_by_you" = "You ended the call"; +"notice_declined_video_call_by_you" = "You declined the call"; +"notice_conference_call_request_by_you" = "You requested a VoIP conference"; +"notice_room_name_removed_by_you" = "You removed the room name"; +"notice_room_name_removed_by_you_for_dm" = "You removed the name"; +"notice_room_topic_removed_by_you" = "You removed the topic"; +"notice_event_redacted_by_you" = " by you"; +"notice_profile_change_redacted_by_you" = "You updated your profile %@"; +"notice_room_created_by_you" = "You created and configured the room."; +"notice_room_created_by_you_for_dm" = "You joined."; +"notice_encryption_enabled_ok_by_you" = "You turned on end-to-end encryption."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "You turned on end-to-end encryption (unrecognised algorithm %@)."; +"notice_redaction_by_you" = "You redacted an event (id: %@)"; +"notice_room_history_visible_to_anyone_by_you" = "You made future room history visible to anyone."; +"notice_room_history_visible_to_members_by_you" = "You made future room history visible to all room members."; +"notice_room_history_visible_to_members_by_you_for_dm" = "You made future messages visible to all room members."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "You made future room history visible to all room members, from the point they are invited."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "You made future messages visible to everyone, from when they get invited."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "You made future room history visible to all room members, from the point they joined."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "You made future messages visible to everyone, from when they joined."; + +// Room Screen + +// general errors + +// Home Screen + +// Last seen time + +// call events + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /console/src/main/res/values/strings.xml. +*/ + + +// titles + +// button names +"send" = "Send"; +"copy_button_name" = "Copy"; +"resend" = "Resend"; +"redact" = "Remove"; +"share" = "Share"; +"delete" = "Delete"; + +// actions +"action_logout" = "Logout"; +"create_room" = "Create Room"; +"login" = "Login"; +"create_account" = "Create Account"; +"membership_invite" = "Invited"; +"membership_leave" = "Left"; +"membership_ban" = "Banned"; +"num_members_one" = "%@ user"; +"num_members_other" = "%@ users"; +"kick" = "Remove from chat"; +"ban" = "Ban"; +"unban" = "Un-ban"; +"message_unsaved_changes" = "There are unsaved changes. Leaving will discard them."; + +// Login Screen +"login_error_already_logged_in" = "Already logged in"; +"login_error_must_start_http" = "URL must start with http[s]://"; + +// members list Screen + +// accounts list Screen + +// image size selection + +// invitation members list Screen + +// room creation dialog Screen + +// room info dialog Screen + +// room details dialog screen + +// contacts list screen +"invitation_message" = "I\'d like to chat with you with matrix. Please, visit the website http://matrix.org to have more information."; + +// Settings screen +"settings_title_config" = "Configuration"; +"settings_title_notifications" = "Notifications"; + +// Notification settings screen +"notification_settings_disable_all" = "Disable all notifications"; +"notification_settings_enable_notifications" = "Enable notifications"; +"notification_settings_enable_notifications_warning" = "All notifications are currently disabled for all devices."; +"notification_settings_global_info" = "Notification settings are saved to your user account and are shared between all clients which support them (including desktop notifications).\n\nRules are applied in order; the first rule which matches defines the outcome for the message.\nSo: Per-word notifications are more important than per-room notifications which are more important than per-sender notifications.\nFor multiple rules of the same kind, the first one in the list that matches takes priority."; +"notification_settings_per_word_notifications" = "Per-word notifications"; +"notification_settings_per_word_info" = "Words match case insensitively, and may include a * wildcard. So:\nfoo matches the string foo surrounded by word delimiters (e.g. punctuation and whitespace or start/end of line).\nfoo* matches any such word that begins foo.\n*foo* matches any such word which includes the 3 letters foo."; +"notification_settings_always_notify" = "Always notify"; +"notification_settings_never_notify" = "Never notify"; +"notification_settings_word_to_match" = "word to match"; +"notification_settings_highlight" = "Highlight"; +"notification_settings_custom_sound" = "Custom sound"; +"notification_settings_per_room_notifications" = "Per-room notifications"; +"notification_settings_per_sender_notifications" = "Per-sender notifications"; +"notification_settings_sender_hint" = "\@user:domain.com"; +"notification_settings_select_room" = "Select a room"; +"notification_settings_other_alerts" = "Other Alerts"; +"notification_settings_contain_my_user_name" = "Notify me with sound about messages that contain my user name"; +"notification_settings_contain_my_display_name" = "Notify me with sound about messages that contain my display name"; +"notification_settings_just_sent_to_me" = "Notify me with sound about messages sent just to me"; +"notification_settings_invite_to_a_new_room" = "Notify me when I am invited to a new room"; +"notification_settings_people_join_leave_rooms" = "Notify me when people join or leave rooms"; +"notification_settings_receive_a_call" = "Notify me when I receive a call"; +"notification_settings_suppress_from_bots" = "Suppress notifications from bots"; +"notification_settings_by_default" = "By default..."; +"notification_settings_notify_all_other" = "Notify for all other messages/rooms"; + +// gcm section +"settings_config_identity_server" = "Identity server: %@"; + +// Settings keys + +// call string +"call_connecting" = "Connecting…"; +"call_ringing" = "Ringing…"; +"call_ended" = "Call ended"; +"incoming_video_call" = "Incoming Video Call"; +"incoming_voice_call" = "Incoming Voice Call"; +"call_invite_expired" = "Call Invite Expired"; +"call_remote_holded" = "%@ held the call"; +"call_holded" = "You held the call"; +"call_more_actions_hold" = "Hold"; +"call_more_actions_unhold" = "Resume"; +"call_more_actions_change_audio_device" = "Change Audio Device"; +"call_more_actions_audio_use_device" = "Device Speaker"; +"call_more_actions_transfer" = "Transfer"; +"call_more_actions_dialpad" = "Dial pad"; +"call_voice_with_user" = "Voice call with %@"; +"call_video_with_user" = "Video call with %@"; +"call_consulting_with_user" = "Consulting with %@"; +"call_transfer_to_user" = "Transfer to %@"; + +// unrecognized SSL certificate +"ssl_trust" = "Trust"; +"ssl_logout_account" = "Logout"; +"ssl_remain_offline" = "Ignore"; +"ssl_fingerprint_hash" = "Fingerprint (%@):"; +"ssl_could_not_verify" = "Could not verify identity of remote server."; +"ssl_cert_not_trust" = "This could mean that someone is maliciously intercepting your traffic, or that your phone does not trust the certificate provided by the remote server."; +"ssl_cert_new_account_expl" = "If the server administrator has said that this is expected, ensure that the fingerprint below matches the fingerprint provided by them."; +"ssl_unexpected_existing_expl" = "The certificate has changed from one that was trusted by your phone. This is HIGHLY UNUSUAL. It is recommended that you DO NOT ACCEPT this new certificate."; +"ssl_expected_existing_expl" = "The certificate has changed from a previously trusted one to one that is not trusted. The server may have renewed its certificate. Contact the server administrator for the expected fingerprint."; +"ssl_only_accept" = "ONLY accept the certificate if the server administrator has published a fingerprint that matches the one above."; + diff --git a/Riot/Assets/eo.lproj/Vector.strings b/Riot/Assets/eo.lproj/Vector.strings index 6bad09c23..826fb2892 100644 --- a/Riot/Assets/eo.lproj/Vector.strings +++ b/Riot/Assets/eo.lproj/Vector.strings @@ -1522,3 +1522,526 @@ "settings_labs_voice_messages" = "Voĉmesaĝoj"; "settings_notifications_disabled_alert_message" = "Por ŝalti sciigojn, iru al agordoj de via aparato."; "settings_device_notifications" = "Aparataj sciigoj"; + + +// MARK: - MatrixKit + + +"notice_crypto_unable_to_decrypt" = "** Ne eblas malĉifri: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "La salutaĵo de la sendanto ne sendis al ni la ŝlosilojn por tiu mesaĝo."; +"notice_in_reply_to" = "Respondanta al"; +// room display name +"room_displayname_empty_room" = "Malplena babilejo"; +"room_displayname_two_members" = "%@ kaj %@"; +"room_displayname_more_than_two_members" = "%@ kaj %@ aliaj"; +// Settings +"settings" = "Agordoj"; +"message_reply_to_message_to_reply_to_prefix" = "Respondanta al"; +"room_event_encryption_verify_title" = "Kontroli salutaĵon\n\n"; + +// members list Screen + +// accounts list Screen + +// image size selection + +// invitation members list Screen + +// room creation dialog Screen + +// room info dialog Screen + +// room details dialog screen +"register_error_title" = "Registriĝo malsukcesis"; +"login_invalid_param" = "Nevalida parametro"; +"login_leave_fallback" = "Nuligi"; +"login_error_login_email_not_yet" = "La retpoŝta ligilo, kiun vi ankoraŭ ne klakis"; +"login_error_user_in_use" = "Tiu ĉi uzantonomo jam estas uzata"; +"login_error_limit_exceeded" = "Tro multaj petoj sendiĝis"; +"login_error_not_json" = "Ne enhavis validajn JSON-datumojn"; +"login_error_bad_json" = "Misformitaj JSON-datumoj"; +"login_error_unknown_token" = "La donita ĵetono de aliro ne rekoniĝis"; +"login_error_forbidden" = "Nevalidaj uzantonomo aŭ pasvorto"; +"login_error_registration_is_not_supported" = "Registriĝo ne estas nun subtenata"; +"login_error_do_not_support_login_flows" = "Nuntempe ni subtenas neniujn manierojn de salutado difinitajn de tiu ĉi hejmservilo"; +"login_error_no_login_flow" = "Ni malsukcesis akiri informojn pri aŭtentikigo de ĉi tiu hejmservilo"; +"login_error_title" = "Malsukcesis saluto"; +"login_prompt_email_token" = "Bonvolu enigi vian ĵetonon de retpoŝta validigo:"; +"login_email_placeholder" = "Retpoŝtadreso"; +"login_email_info" = "Specifu retpoŝtadresojn por ebligi vian pli facilan troviĝon de aliaj uzantoj, kaj ankaŭ por restarigi vian pasvorton okaze de perdo."; +"login_display_name_placeholder" = "Prezenta nomo (ekz. Ivano Ĥlestakov)"; +"login_optional_field" = "malnepra"; +"login_password_placeholder" = "Pasvorto"; +"login_user_id_placeholder" = "Identigilo de Matrix (ekz. @ivano:matrix.org aŭ ivano)"; +"login_identity_server_info" = "Matrix havas identigajn servilojn por scii, kiuj retleteroj ktp. bezonas al kiuj identigiloj de Matrix. Nur https://matrix.org ekzistas nuntempe."; +"login_identity_server_title" = "URL de identiga servilo:"; +"login_home_server_info" = "Via hejmservilo konservas ĉiujn viajn interparolojn kaj datumojn de konto"; +"login_home_server_title" = "URL de hejmservilo:"; +"login_server_url_placeholder" = "URL (ekz. https://matrix.org)"; + +// Login Screen +"login_create_account" = "Krei konton:"; +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "Matrix"; +"login_desktop_device" = "Tabla komputilo"; +"login_tablet_device" = "Tabulkomputilo"; +"login_mobile_device" = "Telefono"; +"room_event_encryption_verify_message" = "Por certigi, ke ĉi tiu salutaĵo povas esti fidata, bonvolu kontakti ĝian posedanton per alia maniero (ekz. persone aŭ per telefona voko) kaj demandu, ĉu la ŝlosilo, kiun ĝi vidas en siaj agordoj de uzanto por ĉi tiu salutaĵo, akordas kun la ĉi-suba:\n\n\tNomo de salutaĵo: %@\n\tIdentigilo de salutaĵo: %@\n\tŜlosilo de salutaĵo: %@\n\nSe la ŝlosilo akordas, premu la kontrolan butonon ĉi-sube. Se ne, iu alia subaŭskultas la salutaĵon, kaj vi probable volas anstataŭe malpermesi ĝin.\n\nĈi tiu kontrola procedo plifaciliĝos estontece."; +"room_event_encryption_info_device_fingerprint" = "Fingrospuro je Ed25519\n"; +"room_event_encryption_info_event_fingerprint_key" = "Asertita ŝlosilo de fingrospuro je Ed25519\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"notice_feedback" = "Responda okazo (identigilo: %@): %@"; +"discard" = "Forĵeti"; +"abort" = "Ĉesigi"; +"login_use_fallback" = "Uzi repaŝan paĝon"; +"ssl_only_accept" = "Akceptu la atestilon NUR SE administranto de la servilo publikigis fingrospuron, kiu akordas kun la ĉi-supra."; +"ssl_expected_existing_expl" = "La atestilo ŝanĝiĝis de atestilo antaŭe fidata al alia, kiu ne estas fidata. Eble la servilo renovigis sian atestilon. Kontaktu la administranton de la servilo por ricevi la atendindan fingrospuron."; +"ssl_unexpected_existing_expl" = "La atestilo ŝanĝiĝis de tiu, kiun fidis via telefono. Tio estas TRE STRANGA. Oni rekomendas, ke vi NE AKCEPTU ĉi tiun novan atestilon."; +"ssl_cert_new_account_expl" = "Se la administranto de la servilo diris, ke tio atendindas, certigu, ke la ĉi-suba fingrospuro akordas kun la fingrospuro donita de la administranto."; +"ssl_cert_not_trust" = "Tio povus signifi, ke iu malice subaŭskultas vian rettrafikon, aŭ ke via telefono ne fidas la atestilon donitan de la fora servilo."; +"ssl_could_not_verify" = "Ne povis kontroli identecon de fora servilo."; +"ssl_fingerprint_hash" = "Fingrospuro (%@):"; +"ssl_remain_offline" = "Malatenti"; +"ssl_logout_account" = "Adiaŭi"; + +// unrecognized SSL certificate +"ssl_trust" = "Fidi"; +"call_transfer_to_user" = "Transdoni al %@"; +"call_consulting_with_user" = "Konsultante kun %@"; +"call_video_with_user" = "Vidvoko kun %@"; +"call_voice_with_user" = "Voĉvoko kun %@"; +"call_more_actions_dialpad" = "Ciferplato"; +"call_more_actions_transfer" = "Transdoni"; +"call_more_actions_audio_use_device" = "Soni aparate"; +"call_more_actions_audio_use_headset" = "Soni kapaŭskultile"; +"call_more_actions_change_audio_device" = "Ŝanĝi sonaparaton"; +"call_more_actions_unhold" = "Daŭrigi"; +"call_more_actions_hold" = "Paŭzigi"; +"call_holded" = "Vi paŭzigis la vokon"; +"call_remote_holded" = "%@ paŭzigis la vokon"; +"call_invite_expired" = "Inviti al voko atingis tempolimon"; +"incoming_voice_call" = "Envena voĉvoko"; +"incoming_video_call" = "Envena vidvoko"; +"call_ended" = "Voko finiĝis"; +"call_ringing" = "Sonorante…"; + +// Settings keys + +// call string +"call_connecting" = "Konektante…"; + +// gcm section +"notification_settings_notify_all_other" = "Sciigi por ĉiuj aliaj mesaĝoj/ĉambroj"; +"notification_settings_by_default" = "Implicite…"; +"notification_settings_suppress_from_bots" = "Forteni sciigojn de robotoj"; +"notification_settings_receive_a_call" = "Sciigu min pri ricevitaj vokoj"; +"notification_settings_people_join_leave_rooms" = "Sciigu min pri aliĝoj al aŭ foriroj de ĉambroj"; +"notification_settings_invite_to_a_new_room" = "Sciigu min pri invitoj al novaj ĉambroj"; +"notification_settings_just_sent_to_me" = "Sciigu min per sono pri mesaĝoj, kiuj sendiĝis al mi individue"; +"notification_settings_contain_my_display_name" = "Sciigu min per sono pri mesaĝoj, kiuj enhavas mian prezentan nomon"; +"notification_settings_contain_my_user_name" = "Sciigu min per sono pri mesaĝoj, kiuj enhavas mian uzantonomon"; +"notification_settings_other_alerts" = "Aliaj atentigoj"; +"notification_settings_select_room" = "Elekti ĉambron"; +"notification_settings_sender_hint" = "@uzanto:retnomo.net"; +"notification_settings_per_sender_notifications" = "Sendintulaj sciigoj"; +"notification_settings_per_room_notifications" = "Ĉambraj sciigoj"; +"notification_settings_custom_sound" = "Propra sono"; +"notification_settings_highlight" = "Emfazo"; +"notification_settings_word_to_match" = "akordaj vortoj"; +"notification_settings_never_notify" = "Neniam sciigi"; +"notification_settings_always_notify" = "Ĉiam sciigi"; +"notification_settings_per_word_info" = "Vortoj akordas sendepende de grandeco, kaj povas enhavi la ĵokeron *. Sekve:\nekzemplo akordas kun la tekstoĉeno «ekzemplo» ĉirkaŭita de vortlimiloj (ekz. interpunkcio kaj spaco aŭ komenco/fino de linio).\nekzemplo* akordas kun ĉiu tia vorto, kiu komenciĝas per «ekzemplo».\n*ekzemplo* akordas kun ĉiu tia vorto, kiu enhavas la sinsekvon de literoj «ekzemplo»."; +"notification_settings_per_word_notifications" = "Vortaj sciigoj"; +"notification_settings_global_info" = "Agordoj pri sciigoj estas konservitaj en via konto de uzanto kaj havigitaj al ĉiuj klientoj, kiuj ilin subtenas (inkluzive sciigojn labortablajn).\n\nReguloj aplikiĝas laŭorde; la unua regulo, kiu akordas, difinas la rezulton por la mesaĝo.\nSekve: vortaj sciigoj estas pli gravaj ol ĉambraj sciigoj, kiuj estas pli gravaj ol sendintulaj sciigoj.\nPor pluraj reguloj samspecaj, la unua akorda en la listo estas prioritata."; +"notification_settings_enable_notifications_warning" = "Ĉiuj sciigoj nun estas malŝaltitaj por ĉiuj aparatoj."; +"notification_settings_enable_notifications" = "Ŝalti sciigojn"; + +// Notification settings screen +"notification_settings_disable_all" = "Malŝalti ĉiujn sciigojn"; +"settings_title_notifications" = "Sciigoj"; + +// Settings screen +"settings_title_config" = "Agordaro"; + +// contacts list screen +"invitation_message" = "Mi volus babili kun vi per Matrix. Bonvolu viziti la retpaĝon http://matrix.org por pliaj informoj."; +"login_error_must_start_http" = "URL devas komenciĝi per http[s]://"; + +// Login Screen +"login_error_already_logged_in" = "Jam salutinta"; +"message_unsaved_changes" = "Restas nekonservitaj ŝanĝoj. Forlaso ilin forĵetos."; +"unban" = "Malforbari"; +"ban" = "Forbari"; +"kick" = "Forpeli"; +"num_members_other" = "%@ uzantoj"; +"num_members_one" = "%@ uzanto"; +"membership_ban" = "Forbarita"; +"membership_leave" = "Foririnta"; +"membership_invite" = "Invitita"; +"create_account" = "Krei konton"; +"login" = "Saluti"; +"create_room" = "Krei ĉambron"; + +// actions +"action_logout" = "Adiaŭi"; +"delete" = "Forigi"; +"share" = "Havigi"; +"redact" = "Forigi"; +"resend" = "Resendi"; +"copy_button_name" = "Kopii"; +"send" = "Sendi"; + +// Room Screen + +// general errors + +// Home Screen + +// Last seen time + +// call events + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /console/src/main/res/values/strings.xml. +*/ + + +// titles + +// button names +"ok" = "Bone"; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Vi videbligis estontan historion de la ĉambro al ĉiuj ĉambranoj, ekde ties aliĝo."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Vi videbligis estontajn mesaĝojn al ĉiuj ĉambranoj, ekde ties invito."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Vi videbligis estontan historion de la ĉambro al ĉiuj ĉambranoj, ekde ties invito."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Vi videbligis estontajn mesaĝojn al ĉiuj ĉambranoj."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Vi videbligis estontajn mesaĝojn al ĉiuj ĉambranoj, ekde ties aliĝo."; +"notice_room_history_visible_to_members_by_you" = "Vi videbligis estontan historion de ĉambro al ĉiuj ĉambranoj."; +"notice_room_history_visible_to_anyone_by_you" = "Vi videbligis estontan historion de ĉambro al ĉiu ajn."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Vi ŝaltis tutvojan ĉifradon (nerekonita algoritmo %@)."; +"notice_encryption_enabled_ok_by_you" = "Vi ŝaltis tutvojan ĉifradon."; +"notice_room_created_by_you_for_dm" = "Vi aliĝis."; +"notice_room_created_by_you" = "Vi kreis kaj agordis la ĉambron."; +"notice_profile_change_redacted_by_you" = "Vi ĝisdatigis vian profilon %@"; +"notice_event_redacted_by_you" = " de vi"; +"notice_room_topic_removed_by_you" = "Vi forigis la temon"; +"notice_room_name_removed_by_you_for_dm" = "Vi forigis la nomon"; +"notice_room_name_removed_by_you" = "Vi forigis nomon de la ĉambro"; +"notice_conference_call_request_by_you" = "Vi petis grupan vokon"; +"notice_declined_video_call_by_you" = "Vi rifuzis la vokon"; +"notice_ended_video_call_by_you" = "Vi finis la vokon"; +"notice_answered_video_call_by_you" = "Vi respondis la vokon"; +"notice_placed_video_call_by_you" = "Vi ekigis vidvokon"; +"notice_placed_voice_call_by_you" = "Vi ekigis voĉvokon"; +"notice_room_name_changed_by_you_for_dm" = "Vi ŝanĝis la nomon al %@."; +"notice_room_name_changed_by_you" = "Vi ŝanĝis nomon de la ĉambro al %@."; +"notice_topic_changed_by_you" = "Vi ŝanĝis la temon al «%@»."; +"notice_display_name_removed_by_you" = "Vi forigis vian prezentan nomon"; +"notice_display_name_changed_from_by_you" = "Vi ŝanĝis vian prezentan nomon de %@ al %@"; +"notice_display_name_set_by_you" = "Vi agordis vian prezentan nomon al %@"; +"notice_avatar_url_changed_by_you" = "Vi ŝanĝis vian profilbildon"; +"notice_room_withdraw_by_you" = "Vi nuligis la inviton por %@"; +"notice_room_ban_by_you" = "Vi forbaris uzanton %@"; +"notice_room_unban_by_you" = "Vi malforbaris uzanton %@"; +"notice_room_kick_by_you" = "Vi forpelis uzanton %@"; +"notice_room_reject_by_you" = "Vi rifuzis la inviton"; +"notice_room_leave_by_you" = "Vi foriris"; +"notice_room_join_by_you" = "Vi aliĝis"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Vi nuligis la inviton por %@"; +"notice_room_third_party_revoked_invite_by_you" = "Vi nuligis la inviton al la ĉambro por %@"; +"notice_room_third_party_registered_invite_by_you" = "Vi akceptis la inviton por %@"; +"notice_room_third_party_invite_by_you_for_dm" = "Vi invitis uzanton %@"; +"notice_room_third_party_invite_by_you" = "Vi sendis inviton al la ĉambro al %@"; +"notice_room_invite_you" = "%@ invitis vin"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "Vi invitis uzanton %@"; +"notice_conference_call_finished" = "Grupa voko finiĝis"; +"notice_conference_call_started" = "Grupa voko komenciĝis"; +"notice_conference_call_request" = "%@ petis grupan vokon"; +"notice_declined_video_call" = "%@ rifuzis la vokon"; +"notice_ended_video_call" = "%@ finis la vokon"; +"notice_answered_video_call" = "%@ respondis la vokon"; +"notice_placed_video_call" = "%@ ekigis vidvokon"; +"notice_placed_voice_call" = "%@ ekigis voĉvokon"; +"notice_room_name_changed_for_dm" = "%@ ŝanĝis la nomon al %@."; +"notice_room_name_changed" = "%@ ŝanĝis nomon de la ĉambro al %@."; +"notice_topic_changed" = "%@ ŝanĝis la temon al «%@»."; +"notice_display_name_removed" = "%@ forigis sian prezentan nomon"; +"notice_display_name_changed_from" = "%@ ŝanĝis sian prezentan nomon de %@ al %@"; +"notice_display_name_set" = "%@ ŝanĝis sian prezentan nomon al %@"; +"notice_avatar_url_changed" = "%@ ŝanĝis sian profilbildon"; +"notice_room_reason" = ". Kialo: %@"; +"notice_room_withdraw" = "%@ nuligis inviton por %@"; +"notice_room_ban" = "%@ forbaris uzanton %@"; +"notice_room_unban" = "%@ malforbaris uzanton %@"; +"notice_room_kick" = "%@ forpelis uzanton %@"; +"notice_room_reject" = "%@ rifuzis la inviton"; +"notice_room_leave" = "%@ foriris"; +"notice_room_join" = "%@ aliĝis"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ nuligis la inviton por %@"; +"notice_room_third_party_revoked_invite" = "%@ nuligis la inviton al la ĉambro por %@"; +"notice_room_third_party_registered_invite" = "%@ akceptis la inviton por %@"; +"notice_room_third_party_invite_for_dm" = "%@ invitis uzanton %@"; +"notice_room_third_party_invite" = "%@ sendis inviton al la ĉambro al %@"; + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /matrix-sdk/src/main/res/values/strings.xml. +*/ + +"notice_room_invite" = "%@ invitis uzanton %@"; +"language_picker_default_language" = "Implicita (%@)"; + +// Language picker +"language_picker_title" = "Elektu lingvon"; + +// Country picker +"country_picker_title" = "Elektu landon"; +"local_contacts_access_discovery_warning" = "Por trovi kontaktojn, kiuj jam uzas Matrix-on, %@ povas sendi retpoŝtadresojn kaj telefonnumerojn de via adresaro al via elektita identiga servilo de Matrix. Kiam eblas, personaj datumoj estas haketitaj antaŭ sendo – bonvolu kontroli la privatecan politikon de via identiga servilo por pliaj detaloj."; +"local_contacts_access_discovery_warning_title" = "Trovado de uzantoj"; +"local_contacts_access_not_granted" = "Trovado de uzantoj per lokaj kontaktoj postulas aliron al viaj kontaktoj, sed %@ nun ne rajtas ilin uzi"; +"microphone_access_not_granted_for_call" = "Vokoj postulas aliron al la mikrofono, sed %@ nun ne rajtas ĝin uzi"; + +// Permissions +"camera_access_not_granted_for_call" = "Vidvokoj postulas aliron al la filmilo, sed %@ nun ne rajtas ĝin uzi"; +"ssl_homeserver_url" = "URL de hejmservilo: %@"; +"user_id_placeholder" = "ekz. @kjara:hejmservilo"; +"network_error_not_reachable" = "Bonvolu kontroli vian retkonekton"; +"power_level" = "Povnivelo"; +"public" = "Publika"; +"private" = "Privata"; +"default" = "implicita"; +"not_supported_yet" = "Ankoraŭ ne subtenata"; +"error_common_message" = "Io eraris. Bonvolu reprovi poste."; +"error" = "Eraro"; +"unsent" = "Nesendita"; +"offline" = "eksterrete"; + +// Others +"user_id_title" = "Identigilo de uzanto:"; +"e2e_passphrase_create" = "Krei pasfrazon"; +"e2e_passphrase_not_match" = "Pasfrazoj devas akordi"; +"e2e_passphrase_empty" = "Pasfrazo maldevas esti malplena"; +"e2e_passphrase_confirm" = "Konfirmi pasfrazon"; +"e2e_export" = "Elporti"; +"e2e_export_prompt" = "Ĉi tiu procedo ebligas elporton de ŝlosiloj por mesaĝoj, kiujn vi ricevis en ĉifritaj ĉambroj, al loka dosiero. Poste vi povos enporti tiun dosieron en alian klienton de Matrix, por ke ankaŭ tiu kliento povu malĉifri la mesaĝojn.\nLa elportita dosiero ebligos legadon de videblaj ĉifritaj mesaĝoj al ĉiu, kiu povos ĝin legi; vi do provu ĝin teni en sekura loko."; + +// E2E export +"e2e_export_room_keys" = "Elporti ĉambrajn ŝlosilojn"; +"e2e_passphrase_enter" = "Enigi pasfrazon"; +"e2e_import" = "Enporti"; +"e2e_import_prompt" = "Ĉi tiu procedo ebligas enporti ĉifrajn ŝlosilojn, kiujn vi antaŭe elportis el alia kliento de Matrix. Poste vi povos malĉifri ĉiujn mesaĝojn, kiujn ankaŭ la alia kliento povis malĉifri.\nLa elportitan dosieron protektas pasfrazo. Vi enigu la pasfrazon ĉi tien, por malĉifri la dosieron."; + +// E2E import +"e2e_import_room_keys" = "Enporti ŝlosilojn de ĉambro"; +"format_time_d" = "j"; +"format_time_h" = "h"; +"format_time_m" = "m"; + +// Time +"format_time_s" = "s"; +"search_searching" = "Serĉo progresas…"; + +// Search +"search_no_results" = "Neniuj rezultoj"; + +// Groups +"contact_local_contacts" = "Lokaj kontaktoj"; + +// Contacts +"contact_mx_users" = "Uzantoj de Matrix"; +"attachment_e2e_keys_import" = "Enporti…"; +"attachment_e2e_keys_file_prompt" = "Ĉi tiu dosiero enhavas ĉifrajn ŝlosilojn elportitajn el kliento de Matrix.\nĈu vi volas vidi enhavojn de la dosiero aŭ enporti la enhavatajn ŝlosilojn?"; +"attachment_multiselection_original" = "Originala grando"; +"attachment_multiselection_size_prompt" = "Ĉu vi volas sendi bildojn kiel:"; +"attachment_cancel_upload" = "Ĉu nuligi la alŝuton?"; +"attachment_cancel_download" = "Ĉu nuligi la elŝuton?"; +"attachment_large" = "Granda: %@"; +"attachment_medium" = "Meza: %@"; +"attachment_small" = "Malgranda: %@"; +"attachment_original" = "Originala: %@"; + +// Attachment +"attachment_size_prompt" = "Ĉu vi volas sendi en grando:"; +"room_member_power_level_prompt" = "Vi ne povos malfari ĉi tiun ŝanĝon, ĉar vi povigas la uzanton al la sama nivelo, kiun vi havas.\nĈu vi certas?"; + +// Room members +"room_member_ignore_prompt" = "Ĉu vi certe volas kaŝi ĉiujn mesaĝojn de tiu ĉi uzanto?"; +"message_reply_to_sender_sent_a_file" = "sendis dosieron."; +"message_reply_to_sender_sent_an_audio_file" = "sendis sondosieron."; +"message_reply_to_sender_sent_a_video" = "sendis filmon."; + +// Reply to message +"message_reply_to_sender_sent_an_image" = "sendis bildon."; +"room_no_conference_call_in_encrypted_rooms" = "Grupaj vokoj ne estas subtenataj en ĉifritaj ĉambroj"; +"room_no_power_to_create_conference_call" = "Vi bezonas permeson komenci grupan vokon en ĉi tiu ĉambro"; +"room_left_for_dm" = "Vi foriris"; +"room_left" = "Vi foriris de la ĉambro"; +"room_error_timeline_event_not_found" = "La aplikaĵo provis enlegi precizan punkton en la historio de ĉi tiu ĉambro, sed ne povis ĝin trovi"; +"room_error_timeline_event_not_found_title" = "Malsukcesis enlegi pozicion en historio"; +"room_error_cannot_load_timeline" = "Malsukcesis enlegi historion"; +"room_error_topic_edition_not_authorized" = "Vi ne rajtas redakti temon de ĉi tiu ĉambro"; +"room_error_name_edition_not_authorized" = "Vi ne rajtas redakti nomon de ĉi tiu ĉambro"; +"room_error_join_failed_empty_room" = "ANkoraŭ ne eblas ree aliĝi al malplena ĉambro."; +"room_error_join_failed_title" = "Malsukcesis aliĝi al ĉambro"; + +// Room +"room_please_select" = "Bonvolu elekti ĉambron"; +"room_creation_participants_placeholder" = "(ekz. @kjara:hejmservilo1; @megumi:hejmservilo2…)"; +"room_creation_participants_title" = "Anoj:"; +"room_creation_alias_placeholder_with_homeserver" = "(ekz. #io%@)"; +"room_creation_alias_placeholder" = "(ekz. #io:ekzemplo.net)"; +"room_creation_alias_title" = "Kromnomo de ĉambro:"; +"room_creation_name_placeholder" = "(ekz. tagmanghGrupo)"; + +// Room creation +"room_creation_name_title" = "Nomo de ĉambro:"; +"account_error_push_not_allowed" = "Sciigoj ne estas permesitaj"; +"account_error_msisdn_wrong_description" = "Ĉi tio ne ŝajnas esti valida telefonnumero"; +"account_error_msisdn_wrong_title" = "Nevalida telefonnumero"; +"account_error_email_wrong_description" = "Ĉi tio ne ŝajnas esti valida retpoŝtadreso"; +"account_error_email_wrong_title" = "Nevalida retpoŝtadreso"; +"account_error_matrix_session_is_not_opened" = "Salutaĵo de Matrix ne estas malfermita"; +"account_error_picture_change_failed" = "Malsukcesis ŝanĝo de bildo"; +"account_error_display_name_change_failed" = "Malsukcesis ŝanĝo de prezenta nomo"; +"account_msisdn_validation_error" = "Ne povas kontroli vian telefonnumeron."; +"account_msisdn_validation_message" = "Ni sendis telefonan mesaĝon kun aktiviga kodo. Bonvolu enigi la kodon ĉi-suben."; +"account_msisdn_validation_title" = "Atendanta kontrolo"; +"account_email_validation_error" = "Ne povas kontroli retpoŝtadreson. Bonvolu kontroli vian retpoŝton kaj klaki al la enhavata ligilo. Tion farinte, klaku al «daŭrigi»"; +"account_email_validation_message" = "Bonvolu kontroli vian retpoŝton kaj trovi la enhavatan ligilon. Farinte tion, klaku al «daŭrigi»."; +"account_email_validation_title" = "Atendanta kontrolo"; +"account_linked_emails" = "Alligitaj retpoŝtadresoj"; +"account_link_email" = "Ligi al retpoŝtadreso"; + +// Account +"account_save_changes" = "Konservi ŝanĝojn"; +"room_event_encryption_verify_ok" = "Kontroli"; +"room_event_encryption_info_unverify" = "Malkontroli"; +"room_event_encryption_info_verify" = "Kontroli…"; +"room_event_encryption_info_device_not_verified" = "NE kontrolita"; +"room_event_encryption_info_device_verified" = "Kontrolita"; +"room_event_encryption_info_device_verification" = "Kontrolo\n"; +"room_event_encryption_info_device_id" = "Identigilo\n"; +"room_event_encryption_info_device_name" = "Publika nomo\n"; +"room_event_encryption_info_device_unknown" = "nekonata salutaĵo\n"; +"room_event_encryption_info_device" = "\nInformoj pri salutaĵo de sendinto\n"; +"room_event_encryption_info_event_none" = "neniu"; +"room_event_encryption_info_event_unencrypted" = "neĉifrita"; +"room_event_encryption_info_event_decryption_error" = "Malĉifra eraro\n"; +"room_event_encryption_info_event_session_id" = "Identigilo de salutaĵo\n"; +"room_event_encryption_info_event_algorithm" = "Algoritmo\n"; +"room_event_encryption_info_event_identity_key" = "Identiga ŝlosilo je Curve25519\n"; +"room_event_encryption_info_event_user_id" = "Identigilo de uzanto\n"; +"room_event_encryption_info_event" = "Informoj pri okazo\n"; + +// Encryption information +"room_event_encryption_info_title" = "Informoj pri tutvoja ĉifrado\n\n"; +"device_details_delete_prompt_message" = "Ĉi tio postulas plian aŭtentikigon.\nPor daŭrigi, bonvolu enigi vian pasvorton."; +"device_details_delete_prompt_title" = "Aŭtentikigo"; +"device_details_rename_prompt_message" = "Publika nomo de salutaĵo estas videbla al ĉiu, kun kiu vi komunikas"; +"device_details_rename_prompt_title" = "Nomo de salutaĵo"; +"device_details_last_seen" = "Lastafoje vidita\n"; +"device_details_identifier" = "Identigilo\n"; +"device_details_name" = "Publika nomo\n"; + +// Devices +"device_details_title" = "Informoj pri salutaĵo\n"; +"notification_settings_room_rule_title" = "Ĉambro: «%@»"; +"settings_enter_validation_token_for" = "Enigi validigan pecon por %@:"; +"settings_enable_push_notifications" = "Ŝalti pasivajn sciigojn"; +"settings_enable_inapp_notifications" = "Ŝalti sciigojn en la aplikaĵo"; +"notice_sticker" = "glumarko"; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ videbligis estontajn mesaĝojn al ĉiuj, ekde ties aliĝo."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ videbligis estontan historion de ĉambro al ĉiuj ĉambranoj, ekde ties aliĝo."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ videbligis estontajn mesaĝojn al ĉiuj, ekde ties invito."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ videbligis estontan historion de ĉambro al ĉiuj ĉambranoj, ekde ties invito."; +"notice_room_history_visible_to_members_for_dm" = "%@ videbligis estontajn mesaĝojn al ĉiuj ĉambranoj."; +"notice_room_history_visible_to_members" = "%@ videbligis estontan historion de ĉambro al ĉiuj ĉambranoj."; +"notice_room_history_visible_to_anyone" = "%@ videbligis estontan historion de la ĉambro al ĉiu ajn."; +"notice_error_unknown_event_type" = "Nekonata speco de okazo"; +"notice_error_unexpected_event" = "Neatendita okazo"; +"notice_error_unsupported_event" = "Nesubtenata okazo"; +"notice_unsupported_attachment" = "Nesubtenata kunsendaĵo: %@"; +"notice_invalid_attachment" = "nevalida kunsendaĵo"; +"notice_file_attachment" = "dosiero kunsendita"; +"notice_location_attachment" = "loko kunsendita"; +"notice_video_attachment" = "filmo kunsendita"; +"notice_audio_attachment" = "sono kunsendita"; +"notice_image_attachment" = "bildo kunsendita"; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ ŝaltis tutvojan ĉifradon (nerekonita algoritmo %2$@)."; +"notice_encryption_enabled_ok" = "%@ ŝaltis tutvojan ĉifradon."; +"notice_encrypted_message" = "Ĉifrita mesaĝo"; +"notice_room_related_groups" = "Grupoj rilataj al ĉi tiu ĉambro estas: %@"; +"notice_room_aliases_for_dm" = "La kromnomoj estas: %@"; +"notice_room_aliases" = "Kromnomoj de la ĉamrbo estas: %@"; +"notice_room_power_level_event_requirement" = "La minimumaj povniveloj rilataj al okazoj estas:"; +"notice_room_power_level_acting_requirement" = "La minimuma povnivelo, kiun uzanto bezonas antaŭ agi, estas:"; +"notice_room_power_level_intro_for_dm" = "La povniveloj de ĉambranoj estas:"; +"notice_room_power_level_intro" = "La povniveloj de ĉambranoj estas:"; +"notice_room_join_rule_public_by_you_for_dm" = "Vi publikigis la individuan ĉambron."; +"notice_room_join_rule_public_by_you" = "Vi publikigis la ĉambron."; +"notice_room_join_rule_public_for_dm" = "%@ publikigis la individuan ĉambron."; +"notice_room_join_rule_public" = "%@ publikigis la ĉambron."; +"notice_room_join_rule_invite_by_you_for_dm" = "Vi ekpostulis inviton por aliĝoj."; +"notice_room_join_rule_invite_by_you" = "Vi ekpostulis inviton por aliĝoj."; +"notice_room_join_rule_invite_for_dm" = "%@ ekpostulis inviton por aliĝoj."; +// New +"notice_room_join_rule_invite" = "%@ ekpostulis inviton por aliĝoj."; +// Old +"notice_room_join_rule" = "La regulo de aliĝo estas: %@"; +"notice_room_created_for_dm" = "%@ aliĝis."; +"notice_room_created" = "%@ kreis kaj agordis la ĉambron."; +"notice_profile_change_redacted" = "%@ ĝisdatigis sian profilon %@"; +"notice_event_redacted_reason" = " [kialo: %@]"; +"notice_event_redacted_by" = " de %@"; +"notice_room_topic_removed" = "%@ forigis la temon"; +"notice_room_name_removed_for_dm" = "%@ forigis la nomon"; +"notice_room_name_removed" = "%@ forigis nomon de la ĉambro"; + +// Events formatter +"notice_avatar_changed_too" = "(ankaŭ profilbildo ŝanĝiĝis)"; +"unignore" = "Reatenti"; +"ignore" = "Malatenti"; +"resume_call" = "Daŭrigi"; +"end_call" = "Fini vokon"; +"reject_call" = "Rifuzi vokon"; +"answer_call" = "Respondi vokon"; +"show_details" = "Montri detalojn"; +"cancel_download" = "Nuligi elŝuton"; +"cancel_upload" = "Nuligi alŝuton"; +"select_all" = "Elekti ĉion"; +"resend_message" = "Resendi la mesaĝon"; +"reset_to_default" = "Restarigi implicitan"; +"invite_user" = "Inviton uzanton de Matrix"; +"capture_media" = "Foti/Filmi"; +"attach_media" = "Kunsendi vidaŭdaĵon el vidaŭdaĵujo"; +"select_account" = "Elekti konton"; +"mention" = "Mencii"; +"start_video_call" = "Komenci vidvokon"; +"start_voice_call" = "Komenci voĉvokon"; +"start_chat" = "Komenci babilon"; +"set_admin" = "Igi administranto"; +"set_moderator" = "Igi reguligisto"; +"set_default_power_level" = "Restarigi povnivelon"; +"set_power_level" = "Agordi povnivelon"; +"submit_code" = "Sendi kodon"; +"submit" = "Sendi"; +"sign_up" = "Registriĝi"; +"yes" = "Jes"; + +// Action +"no" = "Ne"; +"login_error_resource_limit_exceeded_contact_button" = "Kontakti administranton"; +"login_error_resource_limit_exceeded_message_contact" = "\n\nBonvolu kontakti la administranton de via servo por plu ĝin uzi."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Ĉi tiu hejmservilo atingis sian monatan limon de aktivaj uzantoj."; +"login_error_resource_limit_exceeded_message_default" = "Ĉi tiu hejmservilo atingis unu el siaj rimedaj limoj."; +"login_error_resource_limit_exceeded_title" = "Rimeda limo estas atingita"; +"login_error_forgot_password_is_not_supported" = "Forgesado de pasvorto nun ne estas subtenata"; diff --git a/Riot/Assets/es.lproj/Vector.strings b/Riot/Assets/es.lproj/Vector.strings index b55404ded..39c7fd78c 100644 --- a/Riot/Assets/es.lproj/Vector.strings +++ b/Riot/Assets/es.lproj/Vector.strings @@ -647,3 +647,392 @@ "room_member_power_level_custom_in" = "Personalizado (%@) en %@"; "room_member_power_level_moderator_in" = "Moderador en %@"; "room_member_power_level_admin_in" = "Admin en %@"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Crear cuenta:"; +"login_server_url_placeholder" = "URL (p.ej. https://matrix.org)"; +"login_home_server_title" = "Servidor Local:"; +"login_home_server_info" = "Tu servidor local almacena todas tus conversaciones y los datos de tu cuenta"; +"login_identity_server_title" = "URL de servidor de identidad:"; +"login_identity_server_info" = "Matrix proporciona servidores de identidades para rastrear qué correos electrónicos, etc. pertenecen a qué IDs de Matrix. Actualmente solo existe https://matrix.org."; +"login_user_id_placeholder" = "ID de Matrix (p.ej. @juan:matrix.org o juan)"; +"login_password_placeholder" = "Contraseña"; +"login_optional_field" = "opcional"; +"login_display_name_placeholder" = "Nombre público (p.ej. Juan Pérez)"; +"room_creation_participants_placeholder" = "(ej. @juan:servidordomestico1; @juan:servidordomestico2...)"; +"user_id_placeholder" = "ej: @juan:servidordomestico"; +"login_email_info" = "Especificar una dirección de correo electrónico permite que otros usuarios te encuentren en Matrix más fácilmente, y te dará una manera de restablecer tu contraseña en el futuro."; +"login_email_placeholder" = "Dirección de correo electrónico"; +"login_prompt_email_token" = "Por favor ingresa tu código de validación de correo electrónico:"; +"login_error_title" = "No se pudo iniciar sesión"; +"login_error_no_login_flow" = "No pudimos recuperar la información de autenticación de este Servidor Local"; +"login_error_do_not_support_login_flows" = "Actualmente no admitimos cualquiera o todos los flujos de inicio de sesión definidos por este Servidor Local"; +"login_error_registration_is_not_supported" = "Actualmente no es posible registrarse"; +"login_error_forbidden" = "Nombre de usuario/contraseña inválidos"; +"login_error_unknown_token" = "No se reconoció el código de acceso especificado"; +"login_error_bad_json" = "JSON invalido"; +"login_error_not_json" = "No contenía un JSON válido"; +"login_error_limit_exceeded" = "Se enviaron demasiadas solicitudes"; +"login_error_user_in_use" = "Este nombre de usuario ya está en uso"; +"login_error_login_email_not_yet" = "Aún no se ha abierto el enlace del correo electrónico"; +"login_use_fallback" = "Utilizar la página de respaldo"; +"login_leave_fallback" = "Cancelar"; +"login_invalid_param" = "Parámetro inválido"; +"register_error_title" = "Falló el Registro"; +"login_error_forgot_password_is_not_supported" = "Actualmente no es posible restablecer la contraseña"; +"login_mobile_device" = "Móvil"; +"login_tablet_device" = "Tableta"; +"login_desktop_device" = "Escritorio"; +"login_error_resource_limit_exceeded_title" = "Límite de Recursos Excedido"; +"login_error_resource_limit_exceeded_message_default" = "Este servidor local ha excedido uno de sus límites de recursos."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Este servidor local ha alcanzado su límite Mensual de Usuarios Activos."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nPor favor, contacta al administrador de tu proveedor de servicio para continuar utilizando este servicio."; +"login_error_resource_limit_exceeded_contact_button" = "Contacta al Administrador"; +// Action +"no" = "No"; +"yes" = "Sí"; +"abort" = "Anular"; +"discard" = "Descartar"; +"dismiss" = "Ignorar"; +"sign_up" = "Registrarse"; +"submit" = "Enviar"; +"submit_code" = "Enviar código"; +"set_default_power_level" = "Restablecer Nivel de Permisos"; +"set_moderator" = "Establecer Moderador"; +"set_admin" = "Establecer como Administrador"; +"start_chat" = "Iniciar Conversación"; +"start_voice_call" = "Iniciar Llamada de Voz"; +"start_video_call" = "Iniciar Llamada de Vídeo"; +"mention" = "Mencionar"; +"select_account" = "Seleccionar una cuenta"; +"attach_media" = "Adjuntar Medios desde Biblioteca"; +"capture_media" = "Tomar Foto/Vídeo"; +"invite_user" = "Invitar Usuario de Matrix"; +"reset_to_default" = "Restablecer valores por defecto"; +"resend_message" = "Reenviar el mensaje"; +"select_all" = "Seleccionar Todo"; +"cancel_upload" = "Cancelar Subida"; +"cancel_download" = "Cancelar Descarga"; +"show_details" = "Mostrar Detalles"; +"answer_call" = "Contestar Llamada"; +"reject_call" = "Rechazar Llamada"; +"end_call" = "Finalizar Llamada"; +"ignore" = "Ignorar"; +"unignore" = "Dejar de Ignorar"; +// Events formatter +"notice_avatar_changed_too" = "(el avatar también se cambió)"; +"notice_room_name_removed" = "%@ eliminó el nombre de la sala"; +"notice_room_topic_removed" = "%@ eliminó el tema"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " por %@"; +"notice_event_redacted_reason" = " [motivo: %@]"; +"notice_profile_change_redacted" = "%@ actualizó su perfil %@"; +"notice_room_created" = "%@ ha creado y configurado la sala."; +"notice_room_join_rule" = "La regla para unirse es: %@"; +"notice_room_power_level_intro" = "El nivel de permisos de los miembros de la sala es:"; +"notice_room_power_level_acting_requirement" = "Los niveles de permisos mínimos que un usuario debe tener antes de actuar son:"; +"notice_room_power_level_event_requirement" = "Los niveles de permisos mínimos relacionados con eventos son:"; +"notice_room_aliases" = "Los aliases de la sala son: %@"; +"notice_room_related_groups" = "Los grupos asociados a esta sala son: %@"; +"notice_encrypted_message" = "Mensaje cifrado"; +"notice_encryption_enabled" = "%@ activó el cifrado de extremo a extremo (algoritmo %@)"; +"notice_image_attachment" = "imagen adjunta"; +"notice_audio_attachment" = "audio adjunto"; +"notice_video_attachment" = "vídeo adjunto"; +"notice_location_attachment" = "ubicación adjunta"; +"notice_file_attachment" = "archivo adjunto"; +"notice_invalid_attachment" = "archivo adjunto inválido"; +"notice_unsupported_attachment" = "No se admite el archivo adjunto: %@"; +"notice_feedback" = "Evento de retroalimentación (id: %@): %@"; +"notice_redaction" = "%@ redactó un evento (id: %@)"; +"notice_error_unsupported_event" = "No se admite el evento"; +"notice_error_unexpected_event" = "Evento inesperado"; +"notice_error_unknown_event_type" = "Tipo de evento desconocido"; +"notice_room_history_visible_to_anyone" = "%@ hizo visible el historial futuro de la sala para cualquier persona."; +"notice_room_history_visible_to_members" = "%@ hizo visible el historial futuro de la sala para todos los miembros de la sala."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que son invitados."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que se unieron."; +"notice_crypto_unable_to_decrypt" = "** No es posible descifrar: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "La sesión emisor no nos ha enviado las claves para este mensaje."; +"notice_sticker" = "pegatina"; +"notice_in_reply_to" = "En respuesta a"; +// room display name +"room_displayname_empty_room" = "Sala vacía"; +"room_displayname_two_members" = "%@ y %@"; +"room_displayname_more_than_two_members" = "%@ y otros %u"; +// Settings +"settings" = "Ajustes"; +"settings_enable_inapp_notifications" = "Habilitar notificaciones de la aplicación"; +"settings_enable_push_notifications" = "Habilitar notificaciones push"; +"settings_enter_validation_token_for" = "Ingresar el código de validación para %@:"; +"notification_settings_room_rule_title" = "Sala: '%@'"; +// Devices +"device_details_title" = "Información de sesión\n"; +"device_details_name" = "Nombre público\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Visto por última vez\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "Un nombre público de una sesión es invisible para personas con que Ud. se comunica"; +"device_details_delete_prompt_title" = "Autenticación"; +"device_details_delete_prompt_message" = "Esta operación requiere autenticación adicional.\nPara continuar, ingresa tu contraseña por favor."; +// Encryption information +"room_event_encryption_info_title" = "Información de cifrado de extremo a extremo\n\n"; +"room_event_encryption_info_event" = "Información de evento\n"; +"room_event_encryption_info_event_user_id" = "ID de Usuario\n"; +"room_event_encryption_info_event_identity_key" = "Clave de identidad Curve25519\n"; +"room_event_encryption_info_event_fingerprint_key" = "Clave de huella digital Ed25519 reclamada\n"; +"room_event_encryption_info_event_algorithm" = "Algoritmo\n"; +"room_event_encryption_info_event_session_id" = "ID de Sesión\n"; +"room_event_encryption_info_event_decryption_error" = "Error de descifrado\n"; +"room_event_encryption_info_event_unencrypted" = "sin cifrar"; +"room_event_encryption_info_event_none" = "ninguno"; +"room_event_encryption_info_device" = "\nInformación de la sesión emisora\n"; +"room_event_encryption_info_device_unknown" = "sesión desconocida\n"; +"room_event_encryption_info_device_name" = "Nombre público\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "Verificación\n"; +"room_event_encryption_info_device_fingerprint" = "huella digital Ed25519\n"; +"room_event_encryption_info_device_verified" = "Verificado"; +"room_event_encryption_info_device_not_verified" = "SIN verificar"; +"room_event_encryption_info_device_blocked" = "Prohibido"; +"room_event_encryption_info_verify" = "Verificar..."; +"room_event_encryption_info_unverify" = "Anular Verificación"; +"room_event_encryption_info_block" = "Prohibir"; +"room_event_encryption_info_unblock" = "Dejar de Prohibir"; +"room_event_encryption_verify_title" = "Verificar sesión\n\n"; +"room_event_encryption_verify_message" = "Para verificar que este sesión es confiable, por favor contactar a su propietario por algún otro medio (ej. cara a cara o por teléfono) y pregúntale si la clave que ve en sus Ajustes de Usuario para este dispositivo coincide con la clave a continuación:\n\n\tNombre de sesión: %@\n\tID de sesión: %@\n\tClave de sesión: %@\n\nSi coincide, oprime el botón de verificar a continuación. Si no coincide, entonces alguien está interceptando este sesión y probablemente prefieras oprimir el botón de prohibir.\n\nEn el futuro, este proceso de verificación será más sofisticado."; +"room_event_encryption_verify_ok" = "Verificar"; +// Account +"account_save_changes" = "Guardar cambios"; +"account_link_email" = "Añadir Correo Electrónico"; +"account_linked_emails" = "Correos electrónicos añadidos"; +"account_email_validation_title" = "Verificación Pendiente"; +"account_email_validation_message" = "Por favor, consulta tu correo electrónico y haz clic en el enlace que contiene. Una vez hecho esto, haz clic en continuar."; +"account_email_validation_error" = "No es posible verificar la dirección de correo electrónico. Por favor, consulta tu correo electrónico y haz clic en el enlace que contiene. Una vez hecho esto, haz clic en continuar"; +"account_msisdn_validation_title" = "Verificación Pendiente"; +"account_msisdn_validation_message" = "Hemos enviado un SMS con un código de activación. Por favor, ingresa este código a continuación."; +"account_msisdn_validation_error" = "No es posible verificar el número telefónico."; +"account_error_display_name_change_failed" = "El cambio de nombre público falló"; +"account_error_picture_change_failed" = "El cambio de imagen falló"; +"account_error_matrix_session_is_not_opened" = "La sesión de Matrix no está abierta"; +"account_error_email_wrong_title" = "Dirección de Correo Electrónico Inválida"; +"account_error_email_wrong_description" = "Esto no parece ser una dirección de correo electrónico válida"; +"account_error_msisdn_wrong_title" = "Número Telefónico Inválido"; +"account_error_msisdn_wrong_description" = "Esto no parece ser un número telefónico válido"; +// Room creation +"room_creation_name_title" = "Nombre de sala:"; +"room_creation_name_placeholder" = "(ej. grupoDeAlmuerzo)"; +"room_creation_alias_title" = "Alias de sala:"; +"room_creation_alias_placeholder" = "(ej. #foo:ejemplo.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(ej. #foo%@)"; +"room_creation_participants_title" = "Participantes:"; +// Room +"room_please_select" = "Por favor selecciona una sala"; +"room_error_join_failed_title" = "No se pudo unir a la sala"; +"room_error_join_failed_empty_room" = "Ahora mismo no es posible volver a unirse a una sala vacía."; +"room_error_name_edition_not_authorized" = "No estás autorizado a editar el nombre de esta sala"; +"room_error_topic_edition_not_authorized" = "No estás autorizado a editar el tema de esta sala"; +"room_error_cannot_load_timeline" = "No se pudo cargar la línea de tiempo"; +"room_error_timeline_event_not_found_title" = "No se pudo cargar la posición en la línea de tiempo"; +"room_error_timeline_event_not_found" = "La aplicación estaba intentando cargar un momento específico en la línea de tiempo de esta sala pero pudo encontrarlo"; +"room_left" = "Saliste de la sala"; +"room_no_power_to_create_conference_call" = "Necesitas permiso para invitar a iniciar una conferencia en esta sala"; +"room_no_conference_call_in_encrypted_rooms" = "No se admiten llamadas de conferencia en salas cifradas"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "envió una imagen."; +"message_reply_to_sender_sent_a_video" = "envió un vídeo."; +"message_reply_to_sender_sent_an_audio_file" = "envió un archivo de audio."; +"message_reply_to_sender_sent_a_file" = "envió un archivo."; +"message_reply_to_message_to_reply_to_prefix" = "En respuesta a"; +// Room members +"room_member_ignore_prompt" = "¿Seguro que quieres ocultar todos los mensajes de este usuario?"; +"room_member_power_level_prompt" = "No podrás deshacer este cambio porque estás promoviendo al usuario para tener el mismo nivel de autoridad que tú.\n¿Estás seguro?"; +// Attachment +"attachment_size_prompt" = "Quieres enviar como:"; +"attachment_original" = "Tamaño real: %@"; +"attachment_small" = "Pequeño (~%@)"; +"attachment_medium" = "Mediano (~%@)"; +"attachment_large" = "Grande (~%@)"; +"attachment_cancel_download" = "¿Cancelar la descarga?"; +"attachment_cancel_upload" = "¿Cancelar la subida?"; +"attachment_multiselection_size_prompt" = "Quieres enviar imágenes como:"; +"attachment_multiselection_original" = "Tamaño Real"; +"attachment_e2e_keys_file_prompt" = "Este archivo contiene claves de cifrado exportadas de un cliente de Matrix.\n¿Quieres ver el contenido del archivo o importar las claves que contiene?"; +"attachment_e2e_keys_import" = "Importar..."; +// Contacts +"contact_mx_users" = "Usuarios de Matrix"; +"contact_local_contacts" = "Contactos Locales"; +// Groups +// Search +"search_no_results" = "No Hay Resultados"; +"search_searching" = "Búsqueda en curso..."; +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "h"; +"format_time_d" = "d"; +// E2E import +"e2e_import_room_keys" = "Importar claves de sala"; +"e2e_import_prompt" = "Este proceso permite que importes claves de cifrado que hayas exportado previamente desde otro cliente de Matrix. Luego, podrás descifrar todos los mensajes que el otro cliente podía descifrar.\nEl archivo de exportación está protegido con una frase de contraseña. Debes ingresar la frase de contraseña aquí para descifrar el archivo."; +"e2e_import" = "Importar"; +"e2e_passphrase_enter" = "Ingresar frase de contraseña"; +// E2E export +"e2e_export_room_keys" = "Exportar claves de sala"; +"e2e_export_prompt" = "Este proceso te permite exportar las claves de los mensajes que hayas recibido en salas cifradas a un archivo local. Luego, podrás importar el archivo a otro cliente de Matrix, para que ese cliente también pueda descifrar estos mensajes.\nEl archivo exportado permitirá que cualquier persona que pueda leerlo descifre todos los mensajes cifrados que tú puedas ver, así que debes tener cuidado de mantenerlo seguro."; +"e2e_export" = "Exportar"; +"e2e_passphrase_confirm" = "Confirmar frase de contraseña"; +"e2e_passphrase_empty" = "La frase de contraseña no debe estar vacía"; +"e2e_passphrase_not_match" = "Las frases de contraseña deben coincidir"; +// Others +"user_id_title" = "ID de Usuario:"; +"offline" = "desconectado"; +"unsent" = "No enviado"; +"error" = "Error"; +"error_common_message" = "Ocurrió un error. Por favor inténtalo de nuevo más tarde."; +"not_supported_yet" = "Aún no es posible"; +"default" = "por defecto"; +"private" = "Privado"; +"public" = "Público"; +"power_level" = "Nivel de Autoridad"; +"network_error_not_reachable" = "Por favor comprueba la conectividad de tu red"; +"ssl_homeserver_url" = "URL del Servidor Local: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Las llamadas de vídeo requieren acceso a la Cámara pero %@ no tiene permiso para utilizarla"; +"microphone_access_not_granted_for_call" = "Las llamadas requieren acceso al Micrófono pero %@ no tiene permiso para utilizarlo"; +"local_contacts_access_not_granted" = "El descubrimiento de usuarios desde los contactos locales requiere acceso a tus contactos pero %@ no tiene permiso para utilizarlo"; +"local_contacts_access_discovery_warning_title" = "Descubrimiento de usuarios"; +"local_contacts_access_discovery_warning" = "Para descubrir contactos que ya usan Matrix, %@ puede enviar correos electrónicos y números telefónicos desde tus Contactos hacia el Servidor de Identidades de Matrix. Cuando es posible, los datos personales se procesan antes de enviarlos. Por favor, compruebe la política de privacidad de su servidor de identidad para más detalles."; +// Country picker +"country_picker_title" = "Elige un país"; +// Language picker +"language_picker_title" = "Elige un idioma"; +"language_picker_default_language" = "Por Defecto (%@)"; +"notice_room_invite" = "%@ invitó a %@"; +"notice_room_third_party_invite" = "%@ invitó a %@ a unirse a la sala"; +"notice_room_third_party_registered_invite" = "%@ aceptó la invitación para %@"; +"notice_room_join" = "%@ se unió"; +"notice_room_leave" = "%@ salió"; +"notice_room_reject" = "%@ rechazó la invitación"; +"notice_room_kick" = "%@ expulsó a %@"; +"notice_room_unban" = "%@ le quitó el veto a %@"; +"notice_room_ban" = "%@ vetó a %@"; +"notice_room_withdraw" = "%@ retiró la invitación de %@"; +"notice_room_reason" = ". Motivo: %@"; +"notice_avatar_url_changed" = "%@ cambió su avatar"; +"notice_display_name_set" = "%@ estableció %@ como su nombre público"; +"notice_display_name_changed_from" = "%@ cambió su nombre público de %@ a %@"; +"notice_display_name_removed" = "%@ eliminó su nombre público"; +"notice_topic_changed" = "%@ cambió el tema a: %@"; +"notice_room_name_changed" = "%@ cambió el nombre de la sala a: %@"; +"notice_placed_voice_call" = "%@ realizó una llamada de voz"; +"notice_answered_video_call" = "%@ contestó la llamada"; +"notice_ended_video_call" = "%@ finalizó la llamada"; +"notice_conference_call_request" = "%@ solicitó una conferencia de vozIP"; +"notice_conference_call_started" = "conferencia de vozIP iniciada"; +"notice_conference_call_finished" = "conferencia de vozIP finalizada"; +// button names +"ok" = "Correcto"; +"send" = "Enviar"; +"copy_button_name" = "Copiar"; +"resend" = "Reenviar"; +"redact" = "Eliminar"; +"share" = "Compartir"; +"set_power_level" = "Establecer nivel de permisos"; +"delete" = "Eliminar"; +// actions +"action_logout" = "Cerrar Sesión"; +"create_room" = "Crear Sala"; +"login" = "Iniciar Sesión"; +"create_account" = "Crear Cuenta"; +"membership_invite" = "Invitado"; +"membership_leave" = "Salió"; +"membership_ban" = "Vetado"; +"num_members_one" = "%@ usuario"; +"num_members_other" = "%@ usuarios"; +"kick" = "Echar"; +"ban" = "Vetar"; +"unban" = "Quitar Veto"; +"message_unsaved_changes" = "Hay cambios sin guardar. Salir los descartará."; +// Login Screen +"login_error_already_logged_in" = "Ya ha iniciado sesión"; +"login_error_must_start_http" = "La URL debe comenzar con http[s]://"; +// room details dialog screen +// contacts list screen +"invitation_message" = "Me gustaría chatear contigo vía Matrix. Por favor, visita la página http://matrix.org para obtener más información."; +// Settings screen +"settings_title_config" = "Ajustes"; +"settings_title_notifications" = "Notificaciones"; +// Notification settings screen +"notification_settings_disable_all" = "Deshabilitar todas las notificaciones"; +"notification_settings_enable_notifications" = "Habilitar notificaciones"; +"notification_settings_enable_notifications_warning" = "Actualmente, todas las notificaciones están deshabilitadas para todos los dispositivos."; +"notification_settings_global_info" = "Los ajustes de notificaciones se guardan en tu cuenta de usuario y se comparten entre todos los clientes que las admiten (incluyendo las notificaciones de escritorio).\n\nLas reglas se aplican en órden; la primer regla que coincide define el resultado del mensaje.\nEntonces: las notificaciones por palabra son más importantes que las notificaciones por sala, que son más importantes que las notificaciones por emisor.\nPara múltiples reglas del mismo tipo, la primera en la lista que coincide tiene prioridad."; +"notification_settings_per_word_notifications" = "Notificaciones por palabra"; +"notification_settings_per_word_info" = "Las palabras coinciden con mayúsculas y minúsculas, y pueden incluir un * comodín. Entonces:\nfoo coincide con la cadena de caracteres foo rodeada de delimitadores de palabras (ej. puntuación y espacios en blanco o inicios/finales de línea).\nfoo* coincide con cualquier palabra que comience con foo.\n*foo* coincide con cualquier palabra que incluya las 3 letras foo."; +"notification_settings_always_notify" = "Siempre notificar"; +"notification_settings_never_notify" = "Nunca notificar"; +"notification_settings_word_to_match" = "palabra que coincida"; +"notification_settings_highlight" = "Destacar"; +"notification_settings_custom_sound" = "Sonido personalizado"; +"notification_settings_per_room_notifications" = "Notificaciones por sala"; +"notification_settings_per_sender_notifications" = "Notificaciones por emisor"; +"notification_settings_sender_hint" = "@usuario:dominio.com"; +"notification_settings_select_room" = "Selecciona una sala"; +"notification_settings_other_alerts" = "Otras Alertas"; +"notification_settings_contain_my_user_name" = "Notificarme con sonido por mensajes que contienen mi nombre de usuario"; +"notification_settings_contain_my_display_name" = "Notificarme con sonido por mensajes que contienen mi nombre público"; +"notification_settings_just_sent_to_me" = "Notificarme con sonido por mensajes enviados solo a mí"; +"notification_settings_invite_to_a_new_room" = "Notificarme cuando soy invitado a una nueva sala"; +"notification_settings_people_join_leave_rooms" = "Notificarme cuando las personas se unen o salen de las salas"; +"notification_settings_receive_a_call" = "Notificarme cuando reciba una llamada"; +"notification_settings_suppress_from_bots" = "Suprimir notificaciones de bots"; +"notification_settings_by_default" = "Por defecto..."; +"notification_settings_notify_all_other" = "Notificar por todos los demás mensajes/salas"; +// gcm section +// call string +"call_waiting" = "Esperando..."; +"call_connecting" = "Conectando llamada..."; +"call_ended" = "Llamada finalizada"; +"call_ring" = "Llamando..."; +"incoming_video_call" = "Llamada de Vídeo Entrante"; +"incoming_voice_call" = "Llamada de Voz Entrante"; +"call_invite_expired" = "Expiró la Invitación a Llamada"; +// unrecognized SSL certificate +"ssl_trust" = "Confiar"; +"ssl_logout_account" = "Cerrar Sesión"; +"ssl_remain_offline" = "Ignorar"; +"ssl_fingerprint_hash" = "Huella Digital (%@):"; +"ssl_could_not_verify" = "No se pudo verificar la identidad del servidor remoto."; +"ssl_cert_not_trust" = "Esto podría significar que alguien está interceptando tu tráfico maliciosamente, o que tu teléfono no confía en el certificado proporcionado por el servidor remoto."; +"ssl_cert_new_account_expl" = "Si el administrador del servidor dijo que esto es de esperarse, asegúrate que la huella digital que se muestra a continuación coincide con la huella digital proporcionada por el administrador."; +"ssl_unexpected_existing_expl" = "El certificado cambió de uno que era confiable para tu teléfono. Esto es MUY INUSUAL. Se recomienda NO ACEPTAR este nuevo certificado."; +"ssl_expected_existing_expl" = "El certificado cambió de uno que era confiable a uno que no es confiable. El servidor puede haber renovado su certificado. Contacta al administrador del servidor para obtener la huella digital."; +"ssl_only_accept" = "SOLO acepta el certificado si el administrador del servidor ha publicado una huella digital que coincide con la indicada arriba."; +"notice_placed_video_call" = "%@ realizó una llamada de vídeo"; +"e2e_passphrase_create" = "Crear contraseña"; +"notice_encryption_enabled_ok" = "%@ activó encriptación de extremo a extremo"; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ activó encriptación de extremo a extremo (algoritmo %2$@ desconocido)."; +"device_details_rename_prompt_title" = "Nombre de Sesión"; +"account_error_push_not_allowed" = "No se permite notificaciones"; +"notice_room_third_party_revoked_invite" = "%@ revocó la invitación para %@ de unirse a la sala"; +"attachment_size_prompt_message" = "Puedes desactivar esto en ajustes."; +"attachment_size_prompt_title" = "Confirma el tamaño para enviar"; +"message_reply_to_sender_sent_a_voice_message" = "ha enviado un mensaje de voz."; +"room_left_for_dm" = "Te has salido"; +"room_displayname_all_other_members_left" = "%@ (ha salido)"; +"notice_room_join_rule_public_by_you_for_dm" = "Has hecho esta conversación pública."; +"notice_room_join_rule_public_by_you" = "Has hecho la sala pública."; +"notice_room_join_rule_public_for_dm" = "%@ ha hecho esta conversación pública."; +"notice_room_join_rule_public" = "%@ ha hecho pública la sala."; +"notice_room_join_rule_invite_by_you" = "Has hecho que solo se pueda unir a la sala por invitación."; +"notice_room_name_removed_for_dm" = "%@ ha quitado el nombre"; +"notice_room_created_for_dm" = "%@ se ha unido."; +"notice_room_join_rule_invite_for_dm" = "%@ ha hecho que solo sea posible unirse por invitación."; +// New +"notice_room_join_rule_invite" = "%@ ha hecho que la sala solo sea accesible por invitación."; +"resume_call" = "Volver a la llamada"; diff --git a/Riot/Assets/et.lproj/Vector.strings b/Riot/Assets/et.lproj/Vector.strings index 172becd1e..0923de120 100644 --- a/Riot/Assets/et.lproj/Vector.strings +++ b/Riot/Assets/et.lproj/Vector.strings @@ -465,7 +465,7 @@ "room_message_unable_open_link_error_message" = "Lingi avamine ei õnnestu."; "room_do_not_have_permission_to_post" = "Sul ei ole õigusi siia jututuppa kirjutamiseks"; "room_event_action_report_prompt_reason" = "Sellest sisust teatamise põhjus"; -"room_event_action_kick_prompt_reason" = "Selle kasutaja välja müksamise põhjus"; +"room_event_action_kick_prompt_reason" = "Selle kasutaja eemaldamise põhjus"; "room_event_action_ban_prompt_reason" = "Sellele kasutajale suhtluskeelu seadmise põhjus"; "room_event_action_report_prompt_ignore_user" = "Kas sa soovid peita kõik sõnumid selle kasutaja eest?"; "room_event_action_save" = "Salvesta"; @@ -1595,3 +1595,483 @@ "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"; +"location_sharing_open_open_street_maps" = "Ava OpenStreetMap'is"; +"search_filter_placeholder" = "Filtreeri"; +"onboarding_use_case_existing_server_button" = "Alusta koduserveri kasutamist"; +"onboarding_use_case_existing_server_message" = "Tahad kasutada mõnda olemasolevat koduserverit?"; +"onboarding_use_case_skip_button" = "jätta selle küsimuse vahele"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Sa pole veel otsustanud? Sa võid %@"; +"onboarding_use_case_community_messaging" = "Kogukonnad"; +"onboarding_use_case_work_messaging" = "Töökaaslased"; +"onboarding_use_case_personal_messaging" = "Perekond ja sõbrad"; +"onboarding_use_case_message" = "Me aitame sind Matrix'i võrgu kasutamisel."; +"onboarding_use_case_title" = "Kellega sa kõige rohkem vestled?"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Loo kasutajakonto:"; +"login_server_url_placeholder" = "URL (näiteks https://matrix.org)"; +"login_home_server_title" = "Koduserveri aadress:"; +"login_home_server_info" = "Sinu koduserver salvestab kõik vestlused ning kogu sinu kontoteabe"; +"login_identity_server_title" = "Isikutuvastusserveri aadress:"; +"login_password_placeholder" = "Salasõna"; +"login_optional_field" = "kui soovid"; +"login_display_name_placeholder" = "Kuvatav nimi (näiteks Kadri Maasikas)"; +"login_email_placeholder" = "E-posti aadress"; +// Settings +"settings" = "Seadistused"; +"settings_enable_inapp_notifications" = "Võta kasutusele rakenduse-sisesed teavitused"; +"settings_enable_push_notifications" = "Võta kasutusele tõuketeavitused"; +"notification_settings_room_rule_title" = "Jututuba: '%@'"; +// Devices +"device_details_title" = "Sessiooniteave\n"; +"device_details_name" = "Avalik nimi\n"; +"device_details_identifier" = "Tunnus\n"; +"device_details_last_seen" = "Viimati nähtud\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_title" = "Sessiooni nimi"; +"device_details_rename_prompt_message" = "Sessiooni avalik nimi on nähtav neile, kellega sa suhtled"; +"device_details_delete_prompt_title" = "Autentimine"; +"account_error_email_wrong_title" = "Vigane e-posti aadress"; +"account_error_email_wrong_description" = "See ei tundu olema e-posti aadressi moodi"; +"account_error_msisdn_wrong_title" = "Vigane telefoninumber"; +"account_error_msisdn_wrong_description" = "See ei tundu olema telefoninumbri moodi"; +"account_error_push_not_allowed" = "Teavitused ei ole lubatud"; +// Room creation +"room_creation_name_title" = "Jututoa nimi:"; +"room_member_power_level_prompt" = "Sa ei saa seda muudatust hiljem tagasi pöörata, sest annad teisele kasutajale samad õigused, mis sinul on.\nKas sa oled ikka kindel?"; +// Attachment +"attachment_size_prompt" = "Kas sa soovid faili saata:"; +"attachment_original" = "Tegelikus suuruses (%@)"; +"attachment_small" = "Väiksena (%@)"; +"attachment_medium" = "Keskmisena (%@)"; +"attachment_large" = "Suurena (%@)"; +"attachment_cancel_download" = "Kas katkestame allalaadimise?"; +"attachment_cancel_upload" = "Kas katkestame üleslaadimise?"; +"attachment_multiselection_size_prompt" = "Kas sa soovid pilte saata:"; +"attachment_multiselection_original" = "Tegelikus suuruses"; +"attachment_e2e_keys_file_prompt" = "Selles failis leiduvad ühest Matrix'i kliendist eksporditud krüptovõtmed.\nKas sa soovid vaadata faili sisu või importida seal leiduvad võtmeid?"; +"attachment_e2e_keys_import" = "Impordi..."; +// Contacts +"contact_mx_users" = "Matrix'i kasutajad"; +"contact_local_contacts" = "Kohalikud kasutajad"; +// Groups +// Search +"search_no_results" = "Tulemusi ei ole"; +"search_searching" = "Otsing on pooleli..."; +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "t"; +"format_time_d" = "p"; +// E2E import +"e2e_import_room_keys" = "Impordi jututoa krüptovõtmed"; +"error_common_message" = "Ilmnes viga. Palun proovi hiljem uuesti."; +"not_supported_yet" = "Pole veel toetatud"; +"default" = "vaikimisi"; +"public" = "Avalik"; +"resend" = "Saada uuesti"; +"redact" = "Eemalda"; +"share" = "Jaga"; +"delete" = "Kustuta"; +// actions +"action_logout" = "Logi välja"; +"create_room" = "Loo jututuba"; +"login" = "Logi sisse"; +"create_account" = "Loo konto"; +"membership_invite" = "Kutsutud"; +"num_members_one" = "%@ kasutaja"; +"num_members_other" = "%@ kasutajat"; +"kick" = "Eemalda kasutaja vestlusest"; +"unban" = "Eemalda suhtluskeeld"; +"login_error_must_start_http" = "Serveri aadressi alguses peab olema http[s]://"; +// room details dialog screen +"settings_title_notifications" = "Teavitused"; +// Notification settings screen +"notification_settings_disable_all" = "Lülita kõik teavitused välja"; +"notification_settings_enable_notifications" = "Võta teavitused kasutusele"; +"notification_settings_enable_notifications_warning" = "Kõik teavituste liigid on hetkel kõikidel seadmetel välja lülitatud."; +"login_identity_server_info" = "Matrix'i spetsifikatsioon näeb ette isikutuvastusserverite kasutamist selleks, et tuvastada mis e-posti aadress kuulub mis Matrix'i kasutajale. Hetkel pakub sellist teenust vaid https://matrix.org ."; +"login_user_id_placeholder" = "Matrixi kasutajatunnus (näiteks @kadri:toredomeen.ee või kadri)"; +"login_error_title" = "Sisselogimine ei õnnestunud"; +"login_error_no_login_flow" = "Autentimisteabe laadimine sellest koduserverist ei õnnestunud"; +"login_error_do_not_support_login_flows" = "Hetkel me ei toeta ühtegi sisselogimisloogikat, mida see koduserver kasutab"; +"login_error_registration_is_not_supported" = "Registreerimine ei ole hetkel toetatud"; +"login_error_forbidden" = "Vigane kasutajanimi või salasõna"; +"login_error_bad_json" = "Vigane JSON"; +"login_error_not_json" = "Ei sisaldanud korrektset JSON'it"; +"login_error_limit_exceeded" = "Liiga palju samaaegseid sisselogimispäringuid"; +"login_error_user_in_use" = "See kasutajanimi on juba kasutusel"; +"login_use_fallback" = "Kasuta tagavaralehte"; +"login_leave_fallback" = "Loobu"; +"login_invalid_param" = "Vigane parameeter"; +"register_error_title" = "Registreerimine ei õnnestunud"; +"login_error_forgot_password_is_not_supported" = "Unustatud salasõna funktsionaalsus ei ole hetkel toetatud"; +"login_mobile_device" = "Mobiiltelefon"; +"login_tablet_device" = "Tahvelarvuti"; +"login_desktop_device" = "Töölaud"; +"login_error_resource_limit_exceeded_title" = "Ressursipiir on ületatud"; +"login_error_resource_limit_exceeded_message_default" = "See koduserver ületanud ühe oma ressursipiirangutest."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "See koduserver on saavutanud igakuise aktiivsete kasutajate piiri."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nJätkamaks selle teenuse kasutamist palun võta ühendust oma teenuse haldajaga."; +"login_error_resource_limit_exceeded_contact_button" = "Võta ühendust teenuse haldajaga"; +// Action +"no" = "Ei"; +"yes" = "Jah"; +"abort" = "Katkesta"; +"discard" = "Loobu"; +"dismiss" = "Loobu"; +"sign_up" = "Registreeru"; +"submit" = "Saada"; +"submit_code" = "Saada kood"; +"set_power_level" = "Määra õigused"; +"set_default_power_level" = "Lähtesta õigused"; +"set_moderator" = "Määra moderaatoriks"; +"set_admin" = "Määra peakasutajaks"; +"start_chat" = "Alusta vestlust"; +"start_voice_call" = "Algata häälkõne"; +"start_video_call" = "Algata videokõne"; +"mention" = "Maini"; +"select_account" = "Vali kasutajakonto"; +"attach_media" = "Manusta meediafail galeriist"; +"capture_media" = "Tee foto või video"; +"invite_user" = "Saada kutse Matrix'i kasutajale"; +"reset_to_default" = "Lähtesta vaikeseadeteks"; +"resend_message" = "Saada sõnum uuesti"; +"select_all" = "Vali kõik"; +"cancel_upload" = "Katkesta üleslaadimine"; +"cancel_download" = "Katkesta allalaadimine"; +"show_details" = "Näita üksikasju"; +"answer_call" = "Vasta kõnele"; +"reject_call" = "Ära võta kõnet vastu"; +"end_call" = "Lõpeta kõne"; +"ignore" = "Eira"; +"unignore" = "Lõpeta eiramine"; +// Events formatter +"notice_avatar_changed_too" = "(samuti sai avatar muudetud)"; +"notice_room_name_removed" = "%@ eemaldas jututoa nime"; +"notice_room_topic_removed" = "%@ eemaldas jututoa teema"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " %@ poolt"; +"notice_event_redacted_reason" = " [põhjus: %@]"; +"notice_profile_change_redacted" = "%@ uuendas oma profiili %@"; +"notice_room_created" = "Kasutaja %@ lõi ja seadistas jututoa."; +"notice_room_join_rule" = "Liitumise tingimused on: %@"; +"notice_room_power_level_intro" = "Jututoa liikmete õigused on:"; +"notice_room_power_level_acting_requirement" = "Minimaalselt vajalikud õigused enne neid tegevusi on:"; +"notice_room_power_level_event_requirement" = "Sündmustega seotud minimaalselt vajalikud õigused on:"; +"notice_room_aliases" = "Jututoa aliased on: %@"; +"notice_room_related_groups" = "Selle jututoaga seotud grupid on: %@"; +"notice_encrypted_message" = "Krüptitud sõnum"; +"notice_encryption_enabled_ok" = "%@ lülitas sisse läbiva krüptimise."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ lülitas sisse läbiva krüptimise (tundmatu algoritm %2$@)."; +"notice_image_attachment" = "manustatud pilt"; +"notice_audio_attachment" = "manustatud helifail"; +"notice_video_attachment" = "manustatud videofail"; +"notice_location_attachment" = "manustatud asukohafail"; +"notice_file_attachment" = "manustatud fail"; +"notice_invalid_attachment" = "vigane manus"; +"notice_unsupported_attachment" = "Manus ei ole toetatud: %@"; +"notice_feedback" = "Tagasiside (id: %@): %@"; +"notice_redaction" = "%@ muutis sündmust (id: %@)"; +"notice_error_unsupported_event" = "Sündmuse tüüp ei ole toetatud"; +"notice_error_unexpected_event" = "Ootamatu sündmus"; +"notice_error_unknown_event_type" = "Tundmatu sündmuse tüüp"; +"notice_room_history_visible_to_anyone" = "%@muutis jututoa tulevase ajaloo loetavaks kõigile."; +"notice_room_history_visible_to_members" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele nende kutsumise hetkest."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele nende liitumise hetkest."; +"notice_crypto_unable_to_decrypt" = "** Ei õnnestu dekrüptida: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "Sõnumi saatja sessioon ei ole selle sõnumi jaoks saatnud dekrüptimisvõtmeid."; +"notice_sticker" = "kleeps"; +"notice_in_reply_to" = "Vastuseks kasutajale"; +// room display name +"room_displayname_empty_room" = "Tühi jututuba"; +"room_displayname_two_members" = "%@ ja %@"; +"room_displayname_more_than_two_members" = "%@ ja %@ muud"; +"device_details_delete_prompt_message" = "See tegevus vajab täiendavat autentimist.\nJätkamaks palun sisesta oma salasõna."; +// Encryption information +"room_event_encryption_info_title" = "Läbiva krüptimise teave\n\n"; +"room_event_encryption_info_event" = "Sündmuse teave\n"; +"room_event_encryption_info_event_user_id" = "Kasutajatunnus\n"; +"room_event_encryption_info_event_fingerprint_key" = "Väidetav Ed25519 allkirja sõrmejälje võti\n"; +"room_event_encryption_info_event_algorithm" = "Algoritm\n"; +"room_event_encryption_info_event_session_id" = "Sessiooni tunnus\n"; +"room_event_encryption_info_event_decryption_error" = "Dekrüptimise viga\n"; +"room_event_encryption_info_event_unencrypted" = "krüptimata"; +"room_event_encryption_info_event_none" = "ei midagi"; +"room_event_encryption_info_device" = "\nSaatja sessiooni teave\n"; +"room_event_encryption_info_device_unknown" = "tundmatu sessioon\n"; +"room_event_encryption_info_device_name" = "Avalik nimi\n"; +"room_event_encryption_info_device_id" = "Tunnus\n"; +"room_event_encryption_info_device_verification" = "Verifikatsioon\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519 sõrmejälg\n"; +"room_event_encryption_info_device_verified" = "Verifitseeritud"; +"room_event_encryption_info_device_not_verified" = "EI OLE verifitseeritud"; +"room_event_encryption_info_unverify" = "Eemalda verifitseerimine"; +"room_event_encryption_verify_title" = "Verifitseeri sessioon\n\n"; +"room_event_encryption_verify_ok" = "Verifitseeri"; +// Account +"account_save_changes" = "Salvesta muutused"; +"account_error_picture_change_failed" = "Pildi muutmine ei õnnestunud"; +"account_error_matrix_session_is_not_opened" = "Matrix'i sessioon pole avatud"; +"room_creation_name_placeholder" = "(näiteks HeadLõunasöögikohad)"; +"room_creation_alias_title" = "Jututoa alias:"; +"room_creation_alias_placeholder" = "(e.g. #midagi:domeen.ee)"; +"room_creation_alias_placeholder_with_homeserver" = "(näiteks #midagi%@)"; +"room_creation_participants_title" = "Osalejad:"; +"room_creation_participants_placeholder" = "(näiteks @kadri:koduserver1; @peeter:koduserver2...)"; +// Room +"room_please_select" = "Palun vali jututuba"; +"room_error_join_failed_title" = "Jututoaga liitumine ei õnnestunud"; +"room_error_join_failed_empty_room" = "Hetkel ei ole võimalik liituda tühja jututoaga."; +"room_error_timeline_event_not_found_title" = "Asukoha laadimine ajajoonel ei õnnestunud"; +"room_error_timeline_event_not_found" = "Rakendus üritas laadida teatud hetke selle jututoa ajajoonelt, kuid ei suutnud seda leida"; +"room_left" = "Sa lahkusid jututoast"; +"room_no_power_to_create_conference_call" = "Konverentsikõne alustamiseks selles jututoas on sul vaja õigusi"; +"room_no_conference_call_in_encrypted_rooms" = "Konverentsikõned ei ole krüptitud jututubades toetatud"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "saatis pildi."; +"message_reply_to_sender_sent_a_video" = "saatis video."; +"message_reply_to_sender_sent_an_audio_file" = "saatis helifaili."; +"message_reply_to_sender_sent_a_file" = "saatis faili."; +"message_reply_to_message_to_reply_to_prefix" = "Vastuseks kasutajale"; +// Room members +"room_member_ignore_prompt" = "Kas sa oled kindel, et soovid peita kõik sõnumid selle kasutaja eest?"; +"e2e_import" = "Impordi"; +"e2e_passphrase_enter" = "Sisesta paroolifraas"; +// E2E export +"e2e_export_room_keys" = "Ekspordi jututoa võtmed"; +"e2e_export_prompt" = "Selle toiminguga on sul võimalik saabunud krüptitud sõnumite võtmed eksportida sinu kontrollitavasse kohalikku faili. Seetõttu on sul tulevikus võimalik importida need võtmed mõnda teise Matrix'i klienti ning seeläbi muuta saabunud krüptitud sõnumid ka seal loetavaks.\nKes iganes saab kätte selle võtmefaili, saab ka dekrüptida kõiki sinu krüptitud sõnumeid, seega palun hoia teda turvaliselt."; +"e2e_export" = "Ekspordi"; +"e2e_passphrase_confirm" = "Sisesta paroolifraas veel üks kord"; +"e2e_passphrase_empty" = "Paroolifraas ei tohi olla tühi"; +"e2e_passphrase_not_match" = "Paroolifraasid ei klapi omavahel"; +"e2e_passphrase_create" = "Loo paroolifraas"; +// Others +"user_id_title" = "Kasutajatunnus:"; +"offline" = "võrgust väljas"; +"unsent" = "Saatmata"; +"error" = "Viga"; +"private" = "Privaatne"; +"power_level" = "Õiguste tase"; +"network_error_not_reachable" = "Palun kontrolli oma võrguühendust"; +"user_id_placeholder" = "näiteks @kati:mingidomeen.com"; +"ssl_homeserver_url" = "Koduserveri aadress: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Videokõned vajavad ligipääsu kaamerale, kuid %@'l pole selleks õigusi"; +"microphone_access_not_granted_for_call" = "Kõned vajavad ligipääsu mikrofonile, kuid %@'l pole selleks õigusi"; +"local_contacts_access_discovery_warning_title" = "Kasutajate leidmine"; +// Country picker +"country_picker_title" = "Vali riik"; +// Language picker +"language_picker_title" = "Vali keel"; +"language_picker_default_language" = "Vaikimisi (%@)"; +"notice_room_invite" = "%@ saatis kutse kasutajale %@"; +"notice_room_third_party_invite" = "%@ saatis kasutajale %@ kutse jututoaga liitumiseks"; +"notice_room_third_party_registered_invite" = "%@ võttis vastu kutse %@ nimel"; +"notice_room_third_party_revoked_invite" = "%@ võttis tagasi jututoaga liitumise kutse kasutajalt %@"; +"notice_room_join" = "%@ liitus"; +"notice_room_leave" = "%@ lahkus"; +"notice_room_reject" = "%@ lükkas tagasi kutse"; +"notice_room_kick" = "%@ eemaldas kasutaja %@"; +"notice_room_unban" = "%@ taastas %@ ligipääsu"; +"notice_room_ban" = "%@ keelas %@ ligipääsu"; +"notice_room_withdraw" = "%@ võttis tagasi kutse kasutajale %@"; +"notice_room_reason" = ". Põhjus: %@"; +"notice_avatar_url_changed" = "%@ muutis oma tunnuspilti"; +"notice_display_name_set" = "%@ määras oma kuvatavaks nimeks %@"; +"notice_display_name_changed_from" = "%@ muutis senise kuvatava nime %@ uueks nimeks %@"; +"notice_display_name_removed" = "%@ eemaldas oma kuvatava nime"; +"notice_topic_changed" = "%@ muutis uueks teemaks „%@“."; +"notice_room_name_changed" = "%@ muutis jututoa uueks nimeks %@."; +"notice_placed_voice_call" = "%@ alustas häälkõnet"; +"notice_placed_video_call" = "%@ alustas videokõnet"; +"notice_answered_video_call" = "%@ vastas kõnele"; +"notice_ended_video_call" = "%@ lõpetas kõne"; +"notice_conference_call_request" = "%@ saatis VoIP rühmakõne kutse"; +"notice_conference_call_started" = "VoIP rühmakõne algas"; +"notice_conference_call_finished" = "VoIP rühmakõne lõppes"; +// Notice Events with "You" +"notice_room_invite_by_you" = "Sina kutsusid kasutajat %@"; +"notice_room_invite_you" = "%@ kutsus sind"; +"notice_room_third_party_invite_by_you" = "Sina saatsid kasutajale %@ kutse jututoaga liitumiseks"; +"notice_room_third_party_registered_invite_by_you" = "Sina võtsid vastu kutse %@ nimel"; +"notice_room_third_party_revoked_invite_by_you" = "Sina võtsid tagasi jututoaga liitumise kutse kasutajalt %@"; +"notice_room_join_by_you" = "Sina liitusid"; +"notice_room_leave_by_you" = "Sina lahkusid"; +"notice_room_reject_by_you" = "Sa lükkasid kutse tagasi"; +"notice_room_kick_by_you" = "Sina eemaldasid kasutaja %@"; +"notice_room_unban_by_you" = "Sina taastasid %@ ligipääsu"; +"notice_room_ban_by_you" = "Sina keelasid %@ ligipääsu"; +"notice_room_withdraw_by_you" = "Sina võtsid tagasi %@ kutse"; +"notice_avatar_url_changed_by_you" = "Sa muutsid oma tunnuspilti"; +"notice_display_name_set_by_you" = "Sina määrasid oma kuvatavaks nimeks %@"; +"notice_display_name_changed_from_by_you" = "Sina muutsid senise kuvatava nime %@ uueks nimeks %@"; +"notice_display_name_removed_by_you" = "Sa eemaldasid oma kuvatava nime"; +"notice_topic_changed_by_you" = "Sa muutsid uueks teemaks „%@“."; +"notice_room_name_changed_by_you" = "Sa muutsid jututoa uueks nimeks %@."; +"notice_placed_voice_call_by_you" = "Sa alustasid häälkõnet"; +"notice_placed_video_call_by_you" = "Sa alustasid videokõnet"; +"notice_answered_video_call_by_you" = "Sa vastasid kõnele"; +"notice_ended_video_call_by_you" = "Sa lõpetasid kõne"; +"notice_conference_call_request_by_you" = "Sa algatasid VoIP rühmakõne"; +"notice_room_name_removed_by_you" = "Sa eemaldasid jututoa nime"; +"notice_room_topic_removed_by_you" = "Sa eemaldasid teema"; +"notice_event_redacted_by_you" = " sinu poolt"; +"notice_profile_change_redacted_by_you" = "Sa uuendasid oma profiili %@"; +"notice_room_created_by_you" = "Sa lõid ja seadistasid jututoa."; +"notice_encryption_enabled_ok_by_you" = "Sa lülitasid sisse läbiva krüptimise."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Sa lülitasid sisse läbiva krüptimise (kasutusel on tundmatu algoritm %@)."; +"notice_redaction_by_you" = "Sa muutsid sündmust: (id: %@)"; +"notice_room_history_visible_to_anyone_by_you" = "Sa muutsid jututoa tulevase ajaloo loetavaks kõigile."; +"notice_room_history_visible_to_members_by_you" = "Sina tegid jututoa tulevase ajaloo loetavaks kõikidele jututoa liikmetele."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Sina muutsid jututoa tulevase ajaloo loetavaks kõikidele jututoa liikmetele sellest hetkest, kui nad on kutse saanud."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Sina muutsid jututoa tulevase ajaloo loetavaks kõikidele jututoa liikmetele sellest hetkest, kui nad liitusid jututoaga."; +// button names +"send" = "Saada"; +"copy_button_name" = "Kopeeri"; +"membership_leave" = "Lahkus"; +"ban" = "Keela ligipääs"; +"message_unsaved_changes" = "Osa muudatusi on salvestamata. Lahkudes need kaovad."; +// Login Screen +"login_error_already_logged_in" = "Sa oled juba sisse loginud"; +// contacts list screen +"invitation_message" = "Ma soovin sinuga vestelda Matrix'i võrgu vahendusel. Lisateavet leiad veebisaidist https://matrix.org/ ."; +// Settings screen +"settings_title_config" = "Seadistused"; +"notification_settings_always_notify" = "Teavita alati"; +"notification_settings_never_notify" = "Ära teavita iialgi"; +"notification_settings_word_to_match" = "vastendatav sõna"; +"notification_settings_highlight" = "Tõsta esile"; +"notification_settings_custom_sound" = "Kohandatud heli"; +"notification_settings_per_room_notifications" = "Jututoa-kohased teavitused"; +"notification_settings_per_sender_notifications" = "Saatjakohased teavitused"; +"notification_settings_sender_hint" = "@kasutaja:domeen.ee"; +"notification_settings_select_room" = "Vali jututuba"; +"notification_settings_other_alerts" = "Muud hoiatused"; +"notification_settings_contain_my_user_name" = "Teavita mind helimärguandega sõnumitest, mis sisaldavad minu kasutajanime"; +"notification_settings_contain_my_display_name" = "Teavita mind helimärguandega sõnumitest, mis sisaldavad minu kuvatavat nime"; +"notification_settings_just_sent_to_me" = "Teavita mind helimärguandega sõnumitest, mis on saadetud vaid mulle"; +"notification_settings_invite_to_a_new_room" = "Teavita mind, kui ma olen saanud kutse uude jututuppa"; +"notification_settings_people_join_leave_rooms" = "Teavita mind, kui teised kasutajad liituvad jututoaga või lahkuvad sealt"; +"notification_settings_receive_a_call" = "Teavita mind, kui mulle tuleb kõne"; +"notification_settings_suppress_from_bots" = "Ära luba teavitusi robototelt"; +"notification_settings_by_default" = "Vaikimisi..."; +"notification_settings_notify_all_other" = "Teavita mind kõikide muude sõnumite ja jututubade puhul"; +// gcm section +// call string +"call_waiting" = "Ootan..."; +"call_connecting" = "Kõne on ühendamisel…"; +"call_ended" = "Kõne lõppes"; +"call_ring" = "Helistan..."; +"incoming_video_call" = "Saabuv videokõne"; +"incoming_voice_call" = "Saabuv häälkõne"; +"call_invite_expired" = "Kõnekutse aegus"; +// unrecognized SSL certificate +"ssl_trust" = "Usalda"; +"ssl_logout_account" = "Logi välja"; +"ssl_remain_offline" = "Eira"; +"ssl_fingerprint_hash" = "Sõrmejälg (%@):"; +"login_email_info" = "Lisades oma e-posti aadressi saad võimaldada teistel Matrix'i kasutajatel sind lihtsamini leida ning annad endale lisavõimaluse salasõna muutmiseks, kui seda tulevikus vaja peaks olema."; +"login_prompt_email_token" = "Palun sisesta oma e-posti aadressi registeerimiskirjas näidatud tunnusluba:"; +"login_error_unknown_token" = "Sisestatud tunnusluba ei ole õige"; +"login_error_login_email_not_yet" = "E-posti teel saadetud linki pole veel klõpsitud"; +"settings_enter_validation_token_for" = "Sisesta %@ tuvastamise tunnusluba:"; +"room_event_encryption_info_verify" = "Verifitseeri..."; +"account_link_email" = "Seotud e-posti aadress"; +"account_linked_emails" = "Seotud e-posti aadressid"; +"account_email_validation_title" = "Verifikatsioon on ootel"; +"account_email_validation_message" = "Palun vaata oma e-kirju ning klõpsi meie saadetud kirjas leiduvat linki. Kui see on tehtud, siis vajuta Jätka-nuppu."; +"account_email_validation_error" = "E-posti aadressi õigsust pole veel õnnestunud kontrollida. Palun vaata oma e-kirju ning klõpsi meie saadetud kirjas leiduvat linki. Kui see on tehtud, siis vajuta Jätka-nuppu"; +"account_msisdn_validation_title" = "Verifikatsioon on ootel"; +"account_msisdn_validation_message" = "Me oleme SMS'iga saatnud aktiveerimiskoodi. Palun sisesta see kood siia."; +"account_msisdn_validation_error" = "Telefoninumbri verifitseerimine ei õnnestunud."; +"account_error_display_name_change_failed" = "Kuvatava nime muutmine ei õnnestunud"; +"room_error_name_edition_not_authorized" = "Sinul pole õigusi selle jututoa nime muutmiseks"; +"room_error_topic_edition_not_authorized" = "Sinul pole õigusi selle jututoa teema muutmiseks"; +"room_error_cannot_load_timeline" = "Ajajoone laadimine ei õnnestunud"; +"e2e_import_prompt" = "Selle toiminguga saad importida krüptimisvõtmed, mis sa viimati olid teisest Matrix'i kliendist eksportinud. Seejärel on võimalik dekrüptida ka siin kõik need samad sõnumid, mida see teine klient suutis dekrüptida.\nSee ekspordifail on krüptitud paroolifraasiga. Faili dekrüptimiseks sisesta siia paroolifraas."; +"local_contacts_access_discovery_warning" = "Selleks, et leida Matrixi võrgu kasutajaid, võib %@ saata sinu aadressiraamatus leiduvad e-posti aadressid ja telefoninumbrid sinu valitud Matrixi isikutuvastusserverile. Kui server seda toetab, siis andmed muudetakse enne saatmist räsideks - täpsema teabe leiad oma isikutuvastusserveri privaatsuspoliitikast."; +"membership_ban" = "Suhtluskeeld"; +"notification_settings_per_word_notifications" = "Sõnadega seotud teavitused"; +"ssl_could_not_verify" = "Serveri õigsust ei olnud võimalik kontrollida."; +"room_event_encryption_info_event_identity_key" = "Curve25519 identiteedi võti\n"; +"room_event_encryption_info_device_blocked" = "Mustas nimekirjas"; +"room_event_encryption_info_block" = "Lisa musta nimekirja"; +"room_event_encryption_info_unblock" = "Eemalda mustast nimekirjast"; +"room_event_encryption_verify_message" = "Tegemaks kindlaks, et seda sessiooni võid usaldada, palun kohtu tema omanikuga mõnel muul viisil (näiteks isiklikult või telefonikõne vahendusel) ning küsi, kas võtmed, mida ta näeb oma kasutajaseadistustes kattuvad alljärgnevaga:\n\n\tSessioni nimi: %@\n\tSessioni tunnus: %@\n\tSessioni võti: %@\n\nKui andmed kattuvad, siis vajuta järgnevat verifitseerimise nuppu. Kui ei kattu, siis tõenäoliselt keegi võõras suudab seda teist sessiooni kontrollida ning sa ilmselt eelistaks lisada teda musta nimekirja.\n\nTulevikus see verifitseerimise toiming võib minna veelgi nutikamaks."; +"local_contacts_access_not_granted" = "Kasutajate leidmine sinu kohaliku aadressiraamatu alusel eeldab talle ligipääsu, kuid %@'l puuduvad selleks õigused"; +"notification_settings_global_info" = "Teavituste seadistused salvestatakse serverisse koos sinu konto muude andmetega ning neid jagatakse kõikide klientrakendustega, kes sellist võimalust toetavad (sh töölauateavitused).\n\nReegleid rakendatakse järjekorras ning esimene vastavus määrab ka tulemuse.\nSeega: sõnakohased teavitused on olulisemad, kui jututoa-kohased teavitused ning need omakorda olulisemad kui saatjakohased teavitused.\nMitme sarnase reegli puhul kehtib põhimõte, et esimene loendi alusel leitud vaste on määrav."; +"notification_settings_per_word_info" = "Sõnade otsing ei ole tõstutundlik ning võib kasutada asendusteks * metamärki. Näiteks:\n- midagi alusel otsitakse kõiki sõnu „midagi“ (eraldajaks kirjavahemärgi, tühikud või rea algus ja lõpp);\n- midagi* alusel otsitakse kõiki sõnu mille alguses on „midagi“;\n- *midagi* otsib mis iganes sõnu, kus leidub järjest 6 tähte „midagi“."; +"ssl_cert_not_trust" = "See võib tähendada, et keegi on suuteline pahatahtlikult sinu veebiliiklust pealtkuulama või sinu telefon ei usalda serveri kasutatavat sertifikaati."; +"ssl_cert_new_account_expl" = "Kui serveri haldaja on sind teavitanud, et nii võib juhtuda, siis kontrolli, et sertifikaadi sõrmejälg vastab sellele, mille haldaja sulle on andnud."; +"ssl_unexpected_existing_expl" = "Võrreldes selle sertifikaadiga, mida sinu nutiseade seni usaldas, on praegune sertifikaat muutunud. See on VÄGA EBATAVALINE. Me soovitame, et ÄRA NÕUSTU selle uue sertifikaadiga."; +"ssl_expected_existing_expl" = "Senise usaldusväärse sertifikaadi asemel kasutab server nüüd mitteusaldusväärset sertifikaati. See võib tähendada et haldaja on seda serveris muutnud. Et võrrelda viimase kehtiva sertifikaadi sõrmejälge, palun võta haldajaga ühendust."; +"ssl_only_accept" = "NÕUSTU sertifikaadiga vaid siis, kui serveri haldaja antud sõrmejälg klapib sellega, mida sa hetkel siin näed."; +// New +"notice_room_join_rule_invite" = "%@ määras, et jututuppa pääseb vaid kutsega."; +"notice_room_join_rule_invite_by_you" = "Sina määrasid, et jututuppa pääseb vaid kutsega."; +"notice_room_join_rule_public" = "%@ muutis jututoa avalikuks."; +"notice_room_join_rule_public_by_you" = "Sa muutsid jututoa avalikuks."; +"notice_room_name_removed_for_dm" = "%@ eemaldas jututoa nime"; +"notice_room_created_for_dm" = "%@ liitus."; +"notice_room_join_rule_invite_for_dm" = "%@ määras, et jututuppa pääseb vaid kutsega."; +"notice_room_join_rule_invite_by_you_for_dm" = "Sina määrasid, et jututuppa pääseb vaid kutsega."; +"notice_room_join_rule_public_for_dm" = "%@ muutis jututoa avalikuks."; +"notice_room_join_rule_public_by_you_for_dm" = "Sa muutsid jututoa avalikuks."; +"notice_room_power_level_intro_for_dm" = "Jututoa liikmete õigused on:"; +"notice_room_aliases_for_dm" = "Jututoa aliased on: %@"; +"notice_room_history_visible_to_members_for_dm" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele liitumiskutse saatmise hetkest."; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele nende liitumise hetkest."; +"room_left_for_dm" = "Sina lahkusid"; +"notice_room_third_party_invite_for_dm" = "%@ saatis kutse kasutajale %@"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ võttis tagasi kasutaja %@ kutse"; +"notice_room_name_changed_for_dm" = "%@ muutis jututoa uueks nimeks %@."; +"notice_room_third_party_invite_by_you_for_dm" = "Sina kutsusid kasutajat %@"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Sina võtsid tagasi kasutaja %@ kutse"; +"notice_room_name_changed_by_you_for_dm" = "Sa muutsid jututoa uueks nimeks %@."; +"notice_room_name_removed_by_you_for_dm" = "Sa eemaldasid jututoa nime"; +"notice_room_created_by_you_for_dm" = "Sina liitusid."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Sina tegid jututoa tulevase ajaloo loetavaks kõikidele jututoa liikmetele."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Sina määrasid, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele liitumiskutse saatmise hetkest."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Sina määrasid, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele nende liitumise hetkest."; +"call_more_actions_dialpad" = "Numbriklahvistik"; +"call_more_actions_transfer" = "Suuna kõne edasi"; +"call_more_actions_audio_use_device" = "Kasuta seadme kõlarit"; +"call_more_actions_audio_use_headset" = "Kasuta kõrvaklappe"; +"call_more_actions_change_audio_device" = "Muuda heliseadet"; +"call_more_actions_unhold" = "Jätka"; +"call_more_actions_hold" = "Pane ootele"; +"call_holded" = "Sina panid kõne ootele"; +"call_remote_holded" = "%@ pani kõne ootele"; +"notice_declined_video_call_by_you" = "Sina keeldusid kõnest"; +"notice_declined_video_call" = "%@ keeldus kõnest"; +"resume_call" = "Jätka"; +"call_consulting_with_user" = "Pean nõu kasutajaga %@"; +"call_transfer_to_user" = "Suunan kõne kasutajale %@"; +"call_video_with_user" = "Videokõne kasutajaga %@"; +"call_voice_with_user" = "Häälkõne kasutajaga %@"; +"call_ringing" = "Helistan…"; +"e2e_passphrase_too_short" = "Salafraas on liiga lühike (pikkus peaks olema vähemalt %d tähemärki)"; +"microphone_access_not_granted_for_voice_message" = "Häälsõnumite salvestamiseks on vajalik ligipääs mikrofonile, kuid %@'l pole selleks õigusi"; +"message_reply_to_sender_sent_a_voice_message" = "saatis häälsõnumi."; +"attachment_large_with_resolution" = "Suurena %@ (~%@)"; +"attachment_medium_with_resolution" = "Keskmisena %@ (~%@)"; +"attachment_small_with_resolution" = "Väiksena %@ (~%@)"; +"attachment_size_prompt_message" = "Seadistustest saad määrata, et see funktsionaalsus pole kasutusel."; +"attachment_size_prompt_title" = "Saatmiseks kinnita meedia suurus"; +"room_displayname_all_other_participants_left" = "%@ (lahkus(id))"; +"room_displayname_all_other_members_left" = "%@ (lahkus(id))"; +"attachment_unsupported_preview_message" = "See failitüüp ei ole toetatud."; +"attachment_unsupported_preview_title" = "Eelvaate kuvamine ei õnnestu"; +"message_reply_to_sender_sent_their_location" = "on jaganud oma asukohta."; +"home_syncing" = "Sünkroniseerimine"; +"room_participants_leave_success" = "Sa oled jututoast lahkunud"; +"room_participants_leave_processing" = "Lahkumine"; diff --git a/Riot/Assets/eu.lproj/Vector.strings b/Riot/Assets/eu.lproj/Vector.strings index 3182d3607..285b965a2 100644 --- a/Riot/Assets/eu.lproj/Vector.strings +++ b/Riot/Assets/eu.lproj/Vector.strings @@ -1098,3 +1098,376 @@ "secrets_recovery_with_key_recover_action" = "Erabili gakoa"; "secrets_recovery_with_key_invalid_recovery_key_title" = "Ezin izan da biltegi sekretua atzitu"; "secrets_recovery_with_key_invalid_recovery_key_message" = "Egiaztatu berreskuratze gako zuzena sartu duzula."; + + +// MARK: - MatrixKit + + +"notice_conference_call_started" = "VoIP konferentzia hasita"; +"notice_conference_call_finished" = "VoIP konferentzia amaituta"; +// Events formatter +"notice_avatar_changed_too" = "(abatarra ere aldatu da)"; +"notice_crypto_error_unknown_inbound_session_id" = "Igorlearen saioak ez dizkigu mezu honetarako gakoak bidali."; +"room_error_join_failed_empty_room" = "Ezin da oraingoz hutsik dagoen gela batetara berriro sartu."; +"notice_encrypted_message" = "Zifratutako mezua"; +"login_email_placeholder" = "E-mail helbidea"; +// room display name +"room_displayname_empty_room" = "Gela hutsa"; +"room_displayname_two_members" = "%@ eta %@"; +"room_displayname_more_than_two_members" = "%@ eta beste %u"; +// Settings +"settings" = "Ezarpenak"; +// button names +"ok" = "Ados"; +"send" = "Bidali"; +"copy_button_name" = "Kopiatu"; +"resend" = "Birbidali"; +"redact" = "Kendu"; +"share" = "Partekatu"; +"delete" = "Ezabatu"; +"room_no_power_to_create_conference_call" = "Gonbidatzeko baimena behar duzu gela honetan konferentzia bat hasteko"; +"room_no_conference_call_in_encrypted_rooms" = "Konferentzia deiak ez daude onartuta zifratutako geletan"; +"start_voice_call" = "Hasi ahots deia"; +"start_video_call" = "Hasi bideo deia"; +"submit" = "Bidali"; +"login_password_placeholder" = "Pasahitza"; +"login_home_server_title" = "Hasiera-zerbitzariaren URLa:"; +"login_identity_server_title" = "Identitate-zerbitzariaren URL-a:"; +"login_error_must_start_http" = "http[s]:// gisa hasi behar da URLa"; +"login_error_forbidden" = "Erabiltzaile-izen / pasahitz baliogabea"; +"login_error_unknown_token" = "Ez da ezagutzen zehaztutako sarbide katea"; +"login_error_bad_json" = "Gaizki osatutako JSON"; +"login_error_not_json" = "Ez zuen baliozko JSON-ik"; +"login_error_limit_exceeded" = "Eskaera gehiegi bidali dira"; +"login_error_user_in_use" = "Erabiltzaile-izen hau hartuta dago"; +"login_error_login_email_not_yet" = "Oraindik erabili ez den e-maileko esteka"; +"attachment_cancel_download" = "Utzi deskarga?"; +"attachment_cancel_upload" = "Utzi deskarga?"; +"call_ended" = "Deia amaitu da"; +"incoming_video_call" = "Bideo-deia jasotzen"; +"incoming_voice_call" = "Ahots-deia jasotzen"; +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "h"; +"format_time_d" = "e"; +"ban" = "Debekatu"; +"mention" = "Aipamena"; +"room_member_power_level_prompt" = "Ezin izango duzu aldaketa hau desegin kidea zure botere maila berera ekartzen ari zarelako.\nZiur zaude?"; +// unrecognized SSL certificate +"ssl_trust" = "Fidatu"; +"ssl_logout_account" = "Amaitu saioa"; +"ssl_remain_offline" = "Ezikusi"; +"ssl_could_not_verify" = "Ezin izan da urruneko zerbitzariaren identitatea egiaztatu."; +"ssl_cert_not_trust" = "Honek esan lezake inor zure trafikoa antzematen dabilela asmo txarrez, edo zure telefonoa ez dela fidatzen urruneko zerbitzariaren ziurtagiriaz."; +"ssl_cert_new_account_expl" = "Zerbitzariaren kudeatzaileak hau gerta daitekeela esaten badu, ziurtatu beheko hatz-marka beraiek emandako hatz-markarekin bat datorrela."; +"ssl_unexpected_existing_expl" = "Ziurtagiria aldatu da eta ez da zure telefonoak onartzen zuena. Hau OSO ARRAROA da. Ziurtagiri berri hau EZ ONARTZEA aholkatzen da."; +"ssl_expected_existing_expl" = "Ziurtagiria aldatu da, onartutako batetik onartu gabeko batera. Agian Zerbitzariak ziurtagiria berriztu du. Jarri kontaktuan zerbitzariaren kudeatzailearekin hatz-marka eskatzeko."; +"ssl_only_accept" = "SOILIK onartu ziurtagiria zerbitzariaren kudeatzaileak goikoarekin bat datorren hatz-marka bat argitaratu badu."; +// room details dialog screen +"cancel_upload" = "Utzi igoera"; +"cancel_download" = "Utzi deskarga"; +"settings_title_notifications" = "Jakinarazpenak"; +"device_details_delete_prompt_message" = "Eragiketa honek autentifikazio gehigarria behar du.\nJarraitzeko, idatzi zure pasahitza."; +"device_details_delete_prompt_title" = "Autentifikazioa"; +// Language picker +"language_picker_title" = "Hautatu hizkuntza"; +"account_email_validation_title" = "Egiaztaketa egiteke"; +"account_email_validation_message" = "Irakurri zure e-maila eta egin klik dakarren estekan. Behin eginda, egin klik Jarraitu botoian."; +"account_email_validation_error" = "Ezin izan da e-mail helbidea egiaztatu. Irakurrri zure e-maila eta egin klik dakarren estekan. Behin eginda, egin klik Jarraitu botoian"; +// Country picker +"country_picker_title" = "Hautatu herrialde bat"; +"account_msisdn_validation_message" = "Aktibazio kodea duen SMS mezu bat bidali dizugu. Idatzi kode hori hemen azpian."; +"room_event_encryption_info_event_none" = "bat ere ez"; +// E2E export +"e2e_export_room_keys" = "Esportatu gelako gakoak"; +"e2e_export" = "Esportatu"; +"e2e_passphrase_enter" = "Idatzi pasaesaldia"; +"e2e_passphrase_confirm" = "Berretsi pasaesaldia"; +// E2E import +"e2e_import_room_keys" = "Inportatu gelako gakoak"; +"e2e_import" = "Inportatu"; +"room_event_encryption_info_device_verified" = "Egiaztatuta"; +"room_event_encryption_info_device_blocked" = "Blokeatuta"; +"room_event_encryption_verify_ok" = "Egiaztatu"; +"room_event_encryption_info_unverify" = "Kendu egiaztaketa"; +"room_event_encryption_info_block" = "Blokeatu"; +"room_event_encryption_info_unblock" = "Desblokeatu"; +"dismiss" = "Baztertu"; +"start_chat" = "Hasi txata"; +"room_event_encryption_info_event_unencrypted" = "zifratu gabe"; +"room_event_encryption_info_device_not_verified" = "EZ egiaztatuta"; +"room_event_encryption_info_verify" = "Egiaztatu…"; +"account_error_email_wrong_title" = "E-mail helbide baliogabea"; +"account_error_email_wrong_description" = "Honek ez du baliozko e-mail baten antzik"; +"room_error_join_failed_title" = "Huts egin du gelara elkartzean"; +"room_error_timeline_event_not_found_title" = "Huts egin du denbora-lerroko puntua kargatzean"; +"e2e_passphrase_empty" = "Pasaesaldia ezin da hutsik egon"; +"e2e_passphrase_not_match" = "Pasaesaldiak bat etorri behar dira"; +"error" = "Errorea"; +"create_room" = "Sortu gela"; +"membership_invite" = "Gonbidatuta"; +"kick" = "Kanporatu"; +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Sortu kontua:"; +"login_server_url_placeholder" = "URL-a (adib. https://matrix.org)"; +"login_home_server_info" = "Zure hasiera-zerbitzariak gordetzen ditu zure elkarrizketa guztiak eta kontuaren datuak"; +"login_identity_server_info" = "Matrixek identitate zerbitzariak hornitzen ditu e-mailak eta abar zein Matrix ID-ri dagokien jakiteko, Orain https://matrix.org da dagoen bakarra."; +"login_user_id_placeholder" = "Matrix ID-a (adib. @urko:matrix.org edo urko)"; +"login_optional_field" = "aukerakoa"; +"login_display_name_placeholder" = "Pantaila-izena (adib. Urko Etxeberria)"; +"login_error_title" = "Saio hasierak huts egin du"; +"login_email_info" = "Zehaztu e-mail helbide bat beste Matrix erabiltzaileek zu errazago aurkitzeko, e-mail helbidea izateak ere etorkizunean pasahitza aldatzea ahalbidetuko dizu."; +"login_prompt_email_token" = "Sartu zure e-mail egiaztaketa tokena:"; +"login_error_no_login_flow" = "Huts egin du autentifikazio informazioa hasiera zerbitzari honetatik jasotzean"; +"login_leave_fallback" = "Utzi"; +"login_invalid_param" = "Parametro baliogabea"; +"register_error_title" = "Erregistratzeak huts egin du"; +// Action +"no" = "Ez"; +"yes" = "Bai"; +"abort" = "Abortatu"; +"discard" = "Baztertu"; +"sign_up" = "Erregistratu"; +"submit_code" = "Bidali kodea"; +"login_error_do_not_support_login_flows" = "Orain ez ditugu onartzen hasiera zerbitzari honek zehaztutako saio hasiera metodo guztiak, edo batere"; +"login_error_registration_is_not_supported" = "Oraindik ezin da aplikazioarekin erregistratu"; +"login_use_fallback" = "Erabili ordezko orria"; +"login_error_forgot_password_is_not_supported" = "Oraindik ezin da aplikazioarekin pasahitza berreskuratu"; +"set_default_power_level" = "Leheneratu botere maila"; +"set_moderator" = "Ezarri moderatzailea"; +"set_admin" = "Ezarri kudeatzailea"; +"select_account" = "Hautatu kontu bat"; +"attach_media" = "Erantsi media liburutegitik"; +"capture_media" = "Atera argazkia / bideoa"; +"invite_user" = "Gonbidatu matrix erabiltzailea"; +"reset_to_default" = "Leheneratu lehenetsitakora"; +"resend_message" = "Birbidali mezua"; +"select_all" = "Hautatu guztia"; +"show_details" = "Erakutsi xehetasunak"; +"answer_call" = "Erantzun deia"; +"reject_call" = "Ukatu deia"; +"end_call" = "Amaitu deia"; +"ignore" = "Ezikusi"; +"unignore" = "Berriro aintzat hartu"; +"notice_room_name_removed" = "%@ erabiltzaileak gelaren izena kendu du"; +"notice_room_topic_removed" = "%@ erabiltzaileak gelaren mintzagaia kendu du"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " nork: %@"; +"notice_event_redacted_reason" = " [arrazoia: %@]"; +"notice_room_created" = "%@ erabiltzaileak gela sortu du"; +"notice_room_join_rule" = "Elkartzeko baldintza: %@"; +"notice_room_power_level_intro" = "Gelako kideen botere maila:"; +// Others +"user_id_title" = "Erabiltzaile ID-a:"; +"offline" = "deskonektatuta"; +"unsent" = "Bidali gabe"; +"not_supported_yet" = "Oraindik ez da onartzen"; +"default" = "lehenetsia"; +"private" = "Pribatua"; +"public" = "Publikoa"; +"power_level" = "Botere maila"; +"network_error_not_reachable" = "Egiaztatu zure sare konexioa"; +"user_id_placeholder" = "adib: @urko:hasierazerbitzaria"; +"ssl_homeserver_url" = "Hasiera-zerbitzariaren URL-a: %@"; +"language_picker_default_language" = "Lehenetsia (%@)"; +"notice_room_invite" = "%@ erabiltzaileak %@ gonbidatu du"; +"notice_room_third_party_invite" = "%@ erabiltzaileak gelara elkartzeko gonbidapen bat bidali dio %@ erabiltzaileari"; +"notice_room_third_party_registered_invite" = "%@ erabiltzaileak %@ gelarako gonbidapena onartu du"; +"notice_room_join" = "%@ elkartu da"; +"notice_room_leave" = "%@ atera da"; +"notice_room_reject" = "%@ erabiltzaileak gonbidapena baztertu du"; +"notice_room_kick" = "%@ erabiltzaileak %@ kanporatu du"; +"notice_room_unban" = "%@ erabiltzaileak debekua kendu dio %@ erabiltzaileari"; +"notice_room_ban" = "%@ erabiltzaileak %@ debekatu du"; +"notice_profile_change_redacted" = "%@ erabiltzaileak bere %@ profila eguneratu du"; +"notice_room_power_level_acting_requirement" = "Hemen aritu ahal izateko erabiltzaileak behar duen botere maila:"; +"notice_image_attachment" = "irudi-eranskina"; +"notice_audio_attachment" = "audio-eranskina"; +"notice_video_attachment" = "bideo-eranskina"; +"notice_location_attachment" = "kokaleku-eranskina"; +"notice_file_attachment" = "fitxategi-eranskina"; +"notice_invalid_attachment" = "eranskin baliogabea"; +"notice_unsupported_attachment" = "Onartu gabeko eranskina: %@"; +"notice_crypto_unable_to_decrypt" = "** Ezin izan da deszifratu: %@ **"; +"settings_enable_inapp_notifications" = "Gaitu aplikazio barneko jakinarazpenak"; +"notification_settings_room_rule_title" = "Gela: '%@'"; +// Devices +"device_details_title" = "Saioaren informazioa\n"; +"device_details_name" = "Izen publikoa\n"; +"device_details_identifier" = "ID-a\n"; +"device_details_last_seen" = "Azkenekoz ikusia\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "Saio baten izen publikoa zurekin komunikatzen den jendeak ikusi dezake"; +// Encryption information +"room_event_encryption_info_title" = "Muturretik muturrerako zifratzearen informazioa\n\n"; +"room_event_encryption_info_event_user_id" = "Erabiltzailearen ID-a\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519 identitate-gakoa\n"; +"room_event_encryption_info_event_algorithm" = "Algoritmoa\n"; +"room_event_encryption_info_event_session_id" = "Saioaren ID-a\n"; +"room_event_encryption_info_event_decryption_error" = "Deszifratze errorea\n"; +"room_event_encryption_info_device" = "\nIgorlearen saioaren informazioa\n"; +"room_event_encryption_info_device_unknown" = "saio ezezaguna\n"; +"room_event_encryption_info_device_name" = "Izen publikoa\n"; +"room_event_encryption_info_device_id" = "ID-a\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519 hatz-marka\n"; +// Account +"account_save_changes" = "Gorde aldaketak"; +"account_msisdn_validation_error" = "Ezin izan da telefono zenbakia egiaztatu."; +"account_msisdn_validation_title" = "Egiaztaketa egiteke"; +"login_mobile_device" = "Mugikorra"; +"login_tablet_device" = "Tableta"; +"login_desktop_device" = "Mahaigainekoa"; +"notification_settings_people_join_leave_rooms" = "Jakinarazi niri jendea gelera elkartu edo gelatik ateratzean"; +"notice_room_power_level_event_requirement" = "Gertaerekin lotutako gutxieneko botere maila:"; +"notice_room_aliases" = "Gelaren ezizenak: %@"; +"notice_encryption_enabled" = "%@ erabiltzaileak muturretik muturrera zifratzea gaitu du (%@ algoritmoa)"; +"notice_redaction" = "%@ erabiltzaileak gertaera bat kendu du (id: %@)"; +"notice_error_unsupported_event" = "Onartu gabeko gertaera"; +"notice_error_unexpected_event" = "Ustekabeko gertaera"; +"notice_error_unknown_event_type" = "Gertaera mota ezezaguna"; +"notice_room_history_visible_to_anyone" = "%@ erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du edonorentzat."; +"notice_room_history_visible_to_members" = "%@ erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du gelako kide guztientzat, gonbidapena egiten zaienetik."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du gelako kide guztientzat, gonbidapena egiten zaienetik."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du gelako kide guztientzat, elkartzen direnetik."; +"room_event_encryption_info_event" = "Gertaeraren informazioa\n"; +"room_event_encryption_info_device_verification" = "Egiaztaketa\n"; +"room_event_encryption_verify_title" = "Egiaztatu saioa\n\n"; +"account_link_email" = "Lotu e-maila"; +"account_linked_emails" = "Lotutako e-mailak"; +"account_error_display_name_change_failed" = "Huts egin du pantaila-izenaren aldaketak"; +"account_error_picture_change_failed" = "Huts egin du irudiaren aldaketak"; +"account_error_matrix_session_is_not_opened" = "Matrix saioa ez dago irekita"; +"account_error_msisdn_wrong_title" = "Telefono zenbaki baliogabea"; +"account_error_msisdn_wrong_description" = "Honek ez du baliozko telefono zenbaki baten antzik"; +// Room creation +"room_creation_name_title" = "Gelaren izena:"; +"room_creation_name_placeholder" = "(adib. lagunKuadrilla)"; +"room_creation_alias_title" = "Gelaren ezizena:"; +"room_creation_alias_placeholder" = "(adib. #gela:adibidea.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(adib. #gela%@)"; +"room_creation_participants_title" = "Parte hartzaileak:"; +"room_creation_participants_placeholder" = "(adib. @miren:1zerbitzaria; @peio:2zerbitzaria…)"; +// Room +"room_please_select" = "Hautatu gela bat"; +"room_error_name_edition_not_authorized" = "Ez duzu gela honen izena aldatzeko baimenik"; +"room_error_topic_edition_not_authorized" = "Ez duzu gela honen mintzagaia aldatzeko baimenik"; +"notice_topic_changed" = "%@ erabiltzaileak mintzagaia honetara aldatu du: %@"; +"notice_room_name_changed" = "%@ erabiltzaileak gelaren izena honetara aldatu du: %@"; +"settings_enable_push_notifications" = "Gaitu jakinarazpenak"; +"settings_enter_validation_token_for" = "Sartu %@ balidazio tokena:"; +"room_event_encryption_info_event_fingerprint_key" = "Aldarrikatutako Ed25519 hatz-marka gakoa\n"; +"room_error_cannot_load_timeline" = "Huts egin du denbora lerroa kargatzean"; +"room_left" = "Gelatik atera zara"; +// Room members +"room_member_ignore_prompt" = "Ziur erabiltzaile honen mezu guztiak ezkutatu nahi dituzula?"; +// Attachment +"attachment_size_prompt" = "Nola bidali nahi duzu:"; +"attachment_original" = "Jatorrizko tamaina: %@"; +"attachment_small" = "Txikia: %@"; +"attachment_medium" = "Ertaina: %@"; +"attachment_large" = "Handia: %@"; +"attachment_multiselection_size_prompt" = "Irudiak nola bidali nahi dituzu:"; +"attachment_multiselection_original" = "Jatorrizko tamaina"; +"attachment_e2e_keys_file_prompt" = "Fitxategi honek Matrix bezero batetik esportatutako zifratze gakoak ditu.\nFitxategiaren edukia ikusi nahi duzu edo dauzkan gakoak inportatu?"; +"attachment_e2e_keys_import" = "Inportatu…"; +// Contacts +"contact_mx_users" = "Matrix erabiltzaileak"; +"contact_local_contacts" = "Kontaktu lokalak"; +// Search +"search_no_results" = "Emaitzarik ez"; +"search_searching" = "Bilaketa abian…"; +// Permissions +"camera_access_not_granted_for_call" = "Bideo deiek kamera atzitzeko baimena behar dute baina %@ aplikazioak ez du baimenik"; +"microphone_access_not_granted_for_call" = "Deiek mikrofonoa atzitzeko baimena behar dute baina %@ aplikazioak ez du baimenik"; +"local_contacts_access_discovery_warning_title" = "Erabiltzaileak aurkitzea"; +"local_contacts_access_discovery_warning" = "Matrix darabilten kontaktuak aukitzeko, %@ aplikazioak zure helbide-liburuko kontaktuen e-mail eta telefono zenbakiak igo ahal ditu zuk hautatutako Matrix identitate-zerbitzarira. AHal denean, datu pertsonalak hasheatu egingo dira bidali aurretik, egiaztatu zure identitate-zerbitzariaren pribatutasun politika xehetasun gehiagorako."; +"notice_room_withdraw" = "%@ erabiltzaileak %@ erabiltzailearen gonbidapena atzera bota du"; +"notice_room_reason" = ".Arrazoia: %@"; +"notice_avatar_url_changed" = "%@ erabiltzaileak abatarra aldatu du"; +"notice_display_name_set" = "%@ erabiltzaileak bere pantaila-izena aldatu du beste honetara: %@"; +"notice_display_name_changed_from" = "%@ erabiltzaileak bere pantaila-izena aldatu du, honetatik: %@ honetara: %@"; +"notice_display_name_removed" = "%@ erabiltzaileak bere pantaila-izena kendu du"; +"notice_placed_voice_call" = "%@ erabiltzaileak ahots deia hasi du"; +"notice_placed_video_call" = "%@ erabiltzaileak bideo deia hasi du"; +"notice_answered_video_call" = "%@ erabiltzaileak deia erantzun du"; +"notice_ended_video_call" = "%@ erabiltzaileak deia amaitu du"; +"notice_conference_call_request" = "%@ erabiltzaileak VoIP konferentzia bat eskatu du"; +"set_power_level" = "Ezarri botere-maila"; +// actions +"action_logout" = "Amaitu saioa"; +"login" = "Hasi saioa"; +"create_account" = "Sortu kontua"; +"membership_leave" = "Atera da"; +"membership_ban" = "Debekatua"; +"num_members_one" = "erabiltzaile %@"; +"num_members_other" = "%@ erabiltzaile"; +"unban" = "Kendu debekua"; +"message_unsaved_changes" = "Gorde gabeko aldaketak daude. Irtenez gero baztertuko dira."; +// Login Screen +"login_error_already_logged_in" = "Saioa hasita zegoen jada"; +// contacts list screen +"invitation_message" = "Zurekin hitz egin nahiko nuke matrix erabilita, zoaz http://matrix.org webgunera informazio gehiagorako."; +// Settings screen +"settings_title_config" = "Konfigurazioa"; +// Notification settings screen +"notification_settings_disable_all" = "Desgaitu jakinarazpen guztiak"; +"notification_settings_enable_notifications" = "Gaitu jakinarazpenak"; +"notification_settings_enable_notifications_warning" = "Jakinarazpen guztiak desgaituta daude gailu guztientzat."; +"notification_settings_per_word_notifications" = "Hitzen jakinarazpenak"; +"notification_settings_always_notify" = "Jakinarazi beti"; +"notification_settings_never_notify" = "Ez jakinarazi inoiz"; +"notification_settings_word_to_match" = "behatu beharreko hitza"; +"notification_settings_highlight" = "Nabarmendu"; +"notification_settings_custom_sound" = "Soinu pertsonalizatua"; +"notification_settings_per_room_notifications" = "Gelen jakinarazpenak"; +"notification_settings_per_sender_notifications" = "Igorleen jakinarazpenak"; +"notification_settings_sender_hint" = "@erabiltzailea:domeinua.eus"; +"notification_settings_select_room" = "Hautatu gela bat"; +"notification_settings_other_alerts" = "Beste alertak"; +"notification_settings_contain_my_user_name" = "Jakinarazi niri soinuarekin nire erabiltzaile izena duten mezuak daudenean"; +"notification_settings_contain_my_display_name" = "Jakinarazi niri soinuarekin nire pantaila-izena duten mezuak daudenean"; +"notification_settings_just_sent_to_me" = "Jakinarazi niri soinuarekin niri bakarrik bidalitako mezuak daudenean"; +"notification_settings_invite_to_a_new_room" = "Jakinarazi niri gela batera gonbidatzen nautenean"; +"notification_settings_receive_a_call" = "Jakinarazi niri dei bat jasotzen dudanean"; +"notification_settings_suppress_from_bots" = "Kendu boten jakinarazpenak"; +"notification_settings_by_default" = "Lehenetsita…"; +"notification_settings_notify_all_other" = "Jakinarazi beste mezu/gela guztietarako"; +// gcm section +// call string +"call_waiting" = "Itxaroten…"; +"call_connecting" = "Deia konektatzen…"; +"call_ring" = "Deitzen…"; +"call_invite_expired" = "Dei-gonbidapena iraungi da"; +"ssl_fingerprint_hash" = "Hatz-marka (%@):"; +"notice_feedback" = "Informazio gertaera (id: %@): %@"; +"room_event_encryption_verify_message" = "Saio hau fidagarria dela egiaztatzeko, jarri kontaktuan jabearekin beste medio batzuk erabilita (adib. aurrez-aurre edo telefonoz deituz) eta galdetu bere erabiltzaile-ezarpenetan ikusten duten gakoa honekin bat datorren:\n\n\tSaioaren izena: %@\n\tSaioaren ID-a: %@\n\tSaioaren gakoa: %@\n\nBat badatoz, sakatu beheko egiaztatu botoia. Ez badatoz bat, beste norbait egon daiteke saioa atzematen eta ziur aski zerrenda beltzaren botoia zapaldu nahiko duzu.\n\nEtorkizunean egiaztaketa prozesu hau sofistikatuagoa izango da."; +"room_error_timeline_event_not_found" = "Aplikazioa gela honen denbora lerroko puntu zehatz bat kargatzen saiatu da baina ezin izan du aurkitu"; +"e2e_import_prompt" = "Prozesu honek aurretik beste Matrix bezero batetik esportatutako zifratze gakoak inportatzea ahalbidetzen du. Beste bezeroak dezifratu zitekeen mezuak deszifratu ahal izango duzu.\nEsportazio fitxategia pasaesaldi batez babestuta dago. Pasaesaldi hori hemen jarri behar duzu fitxategia deszifratzeko."; +"e2e_export_prompt" = "Prozesu honek zifratutako geletan jaso dituzun mezuen gakoak fitxategi lokal batera esportatzea ahalbidetzen dizu. Gero beste Matrix bezero batera inportatu ditzakezu, bezero horrek ere mezu hauek dezifratu ahal izateko.\nEsportatutako fitxategiak berau irakurri dezakeen edonori zuk ikusi ditzakezun mezuak deszifratzea ahalbidetuko dio, beraz kontuz non gordetzen duzun."; +"local_contacts_access_not_granted" = "Kontaktu lokaletatik erabiltzaileak aurkitzeko zure kontaktua atzitzeko baimena behar da baina %@ aplikazioak ez du baimenik"; +"notification_settings_global_info" = "Jakinarazpen ezarpenak zure erabiltzaile kontuan gordetzen dira eta onartutako bezeroen artean partekatzen dira (mahaigaineko jakinarazpenak barne).\n\nArauak ordenan aplikatzen dira; bat datorren lehen arauak zehazten du zer gertatzen den mezuarekin.\nBeraz: Hitzen jakinarazpenak gelen jakinarazpenak baino garrantzitsuagoak dira, eta hauek igorleen jakinarazpenak baino garrantzitsuagoak.\nMota bereko arauentzat, zerrendan bat datorren lehenak lehentasuna hartzen du."; +"notification_settings_per_word_info" = "Hitzak ez dituzte bereizten maiuskula eta minuskulak, eta * komodina izan dezakete. Beraz:\nmar bat dator mar katearekin hitz mugatzaileez inguratuta dagoenean (adib. puntuazioa, zuriunea, lerro hasiera edo bukaera).\nmar* bat dator mar-ez hasten den edozein hitzekin.\n*mar* bat dator edozein posiziotan mar duten hitzekin."; +"notice_room_related_groups" = "Gela honekin lotura duten taldeak hauek dira: %@"; +// Groups +"notice_sticker" = "eranskailua"; +"notice_in_reply_to" = "Honi erantzunez"; +"error_common_message" = "Errore bat gertatu da. Saiatu berriro geroago."; +// Reply to message +"message_reply_to_sender_sent_an_image" = "irudi bat bidali du."; +"message_reply_to_sender_sent_a_video" = "bideo bat bidali du."; +"message_reply_to_sender_sent_an_audio_file" = "audio fitxategi bat bidali du."; +"message_reply_to_sender_sent_a_file" = "fitxategi bat bidali du."; +"message_reply_to_message_to_reply_to_prefix" = "Honi erantzunez"; +"login_error_resource_limit_exceeded_title" = "Baliabide muga gaindituta"; +"login_error_resource_limit_exceeded_message_default" = "Hasiera zerbitzari honek bere baliabide mugetako bat gainditu du."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga gainditu du."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nJarri kontaktuan zerbitzuaren administratzailearekin zerbitzu hau erabiltzen jarraitzeko."; +"login_error_resource_limit_exceeded_contact_button" = "Kontaktatu administratzailea"; +"e2e_passphrase_create" = "Sortu pasaesaldia"; +"account_error_push_not_allowed" = "Jakinarazpenak ez dira onartzen"; +"device_details_rename_prompt_title" = "Saioaren izena"; +"notice_room_third_party_revoked_invite" = "%@ erabiltzaileak %@ gelara elkartzeko gonbidapena indargabetu du"; +"notice_encryption_enabled_ok" = "%@ erabiltzaileak zifratzea gaitu du."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ erabiltzaileak zifratzea gaitu du. (%2$@ algoritmo ezezaguna)."; diff --git a/Riot/Assets/fa.lproj/Vector.strings b/Riot/Assets/fa.lproj/Vector.strings index 70464fddd..0a8ab450c 100644 --- a/Riot/Assets/fa.lproj/Vector.strings +++ b/Riot/Assets/fa.lproj/Vector.strings @@ -734,3 +734,545 @@ "settings_sign_out_confirmation" = "آیا مطمئن هستید؟"; "settings_sign_out" = "خروج"; "settings_deactivate_account" = "غیرفعال کردن حساب"; + + +// MARK: - MatrixKit + + + + +"e2e_import_prompt" = "این فرآیند به شما امکان می دهد کلیدهای رمزگذاری را که قبلاً از کلاینت دیگری صادر کرده اید، وارد کنید. سپس می توانید هر پیامی را که کلاینت دیگر رمزگشایی می کند رمزگشایی کنید.\nپرونده با عبارت عبور محافظت می شود. برای رمزگشایی پرونده باید عبارت عبور را در اینجا وارد کنید."; +"room_member_power_level_prompt" = "شما نمی توانید این تغییر را لغو کنید زیرا در حال ارتقا سطح کاربر به همان سطح خودتان هستید.\nآیا مطمئن هستید؟"; +"notification_settings_per_word_info" = "کلمات به صورت غیر حساس(case insensitive)تطابق می‌کنند و ممکن است شامل یک wildcard * باشد. بنابراین:\nfoo با رشته foo که توسط جداکننده‌های کلمه احاطه شده تطابق می‌کند (به عنوان مثال علائم نگارشی و فضای خالی یا شروع و پایان خط).\nfoo* با هر کلمه ای که با foo شروع شود مطابقت دارد.\n*foo* با هر کلمه‌ای که حداقل سه حرف foo را داشته باشد تطابق می‌کند."; +"ssl_only_accept" = "فقط در صورتی که ادمین سرور اثر انگشت متناسب با مورد بالا را منتشر کرده باشد، گواهی را بپذیرید."; +"ssl_expected_existing_expl" = "این گواهی از یک گواهینامه مورد اعتماد قبلی به یک گواهینامه مورد اعتماد دیگر تبدیل شده است. سرور ممکن است گواهینامه خود را تمدید کرده باشد. برای اطمینان از اثر انگشت با ادمین سرور تماس بگیرید."; +"ssl_unexpected_existing_expl" = "این گواهینامه از گواهی مورد اعتماد تلفن شما تغییر کرده است. این بسیار غیر معمول است. توصیه می شود این گواهینامه جدید را قبول نکنید."; +"ssl_cert_new_account_expl" = "درصورتی که ادمین سرور بگوید مشکلی وجود ندارد، اطمینان حاصل کنید که اثر انگشت زیر با اثر انگشت ارائه شده توسط او مطابقت دارد."; +"ssl_cert_not_trust" = "این می تواند به این معنی باشد که شخصی ثالثی ترافیک شما را رهگیری می کند یا اینکه تلفن شما به گواهی ارائه شده توسط سرور اعتماد ندارد."; +"ssl_could_not_verify" = "هویت سرور تأیید نشد."; +"ssl_fingerprint_hash" = "اثر انگشت (%@):"; +"ssl_remain_offline" = "نادیده‌گیری"; +"ssl_logout_account" = "خروج"; + +// unrecognized SSL certificate +"ssl_trust" = "اعتماد کردن"; +"call_more_actions_dialpad" = "پد شماره گیری"; +"call_more_actions_transfer" = "انتقال"; +"call_more_actions_audio_use_device" = "بلندگوی دستگاه"; +"call_more_actions_audio_use_headset" = "استفاده از هدست صوتی"; +"call_more_actions_change_audio_device" = "تغییر خروجی صدا"; +"call_more_actions_unhold" = "از سرگیری"; +"call_more_actions_hold" = "قرار دادن در حالت انتظار"; +"call_holded" = "شما تماس را در حالت انتظار قرار داده‌اید"; +"call_remote_holded" = "%@ تماس را در حالت انتظار قرار داده است"; +"call_invite_expired" = "تماس منقضی شده است"; +"incoming_video_call" = "تماس ویدیویی ورودی"; +"incoming_voice_call" = "تماس صوتی ورودی"; +"call_ring" = "در حال تماس..."; +"call_ended" = "مکالمه تلفنی تمام شد"; +"call_connecting" = "در حال اتصال …"; + +// Settings keys + +// call string +"call_waiting" = "در انتظار..."; +"settings_config_identity_server" = "سرور هویت‌سنجی: %@"; + +// gcm section +"settings_config_home_server" = "سرور: %@"; +"notification_settings_notify_all_other" = "برای سایر پیام ها / اتاق ها اطلاع بده"; +"notification_settings_by_default" = "به صورت پیش فرض..."; +"notification_settings_suppress_from_bots" = "اعلان‌های ربات‌ها را سرکوب کن"; +"notification_settings_receive_a_call" = "هنگام دریافت تماس به من اطلاع بده"; +"notification_settings_people_join_leave_rooms" = "وقتی افراد به اتاق می‌پیوندند یا از اتاق خارج می شوند، به من اطلاع بده"; +"notification_settings_invite_to_a_new_room" = "وقتی به اتاق جدیدی دعوت شدم به من اطلاع بده"; +"notification_settings_just_sent_to_me" = "در مورد پیام‌هایی که فقط برای من ارسال شده است با صوت به من اطلاع بده"; +"notification_settings_contain_my_display_name" = "در مورد پیام‌هایی که حاوی نام من هستند با صدا به من اطلاع بده"; +"notification_settings_contain_my_user_name" = "در مورد پیام هایی که حاوی نام کاربری من است با صوت به من اطلاع بده"; +"notification_settings_other_alerts" = "هشدارهای دیگر"; +"notification_settings_select_room" = "اتاقی را انتخاب کنید"; +"notification_settings_sender_hint" = "@user:domain.com"; +"notification_settings_per_sender_notifications" = "اعلان‌های ارسال کننده محور"; +"notification_settings_per_room_notifications" = "اعلان‌های اتاق‌محور"; +"notification_settings_custom_sound" = "صدای سفارشی"; +"notification_settings_highlight" = "هایلایت"; +"notification_settings_word_to_match" = "کلمه مطابقت"; +"notification_settings_never_notify" = "هرگز اطلاع نده"; +"notification_settings_always_notify" = "همیشه اطلاع بده"; +"notification_settings_per_word_notifications" = "اعلان‌های کلمه‌محور"; +"notification_settings_global_info" = "تنظیمات اعلان در حساب کاربری شما ذخیره می شود و بین همه کلاینت‌هایی که از آنها پشتیبانی می کنند به اشتراک گذاشته می شود (از جمله اعلان های دسکتاپ).\n\nقوانین به ترتیب اعمال می شود. اولین قانونی که مطابقت دارد نتیجه پیام را مشخص می کند.\nبنابراین: اعلان‌های کلمه‌محور از اعلان‌های اتاق‌محور مهم‌تر و اعلان‌های اتاق‌محور از اعلان‌های ارسال‌کننده‌محور مهم‌تر هستند.\nبرای چندین قانون از یک نوع، اولین قانونی که در لیست مطابقت دارد در اولویت است."; +"notification_settings_enable_notifications_warning" = "همه اعلان‌ها در حال حاضر برای همه دستگاه‌ها غیرفعال هستند."; + +// room display name +"room_displayname_empty_room" = "اتاق خالی"; +"notice_in_reply_to" = "در پاسخ به"; +"notice_sticker" = "استیکر"; +"notice_crypto_error_unknown_inbound_session_id" = "نشست فرستنده کلیدهای این پیام را برای ما ارسال نکرده است."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ تاریخچه آینده‌ی اتاق را از همان زمانی که افراد به اتاق پیوستند برای آنان قابل مشاهده کرد."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ تاریخچه آینده‌ی اتاق را از همان زمانی که افراد دعوت شده اند برای آنان قابل مشاهده کرد."; +"login_email_info" = "یک ایمیل مشخص کنید تا سایر کاربران بتوانند شما را در ماتریکس با سهولت بیشتری پیدا کنند و به شما راهی برای تنظیم مجدد رمز عبور خود در آینده بدهد."; +"login_identity_server_info" = "ماتریکس سرورهای هویت‌سنجی را برای ردیابی اینکه کدام ایمیل‌ها و غیره متعلق به کدام شناسه‌های ماتریکس هستند فراهم می کند. در حال حاضر فقط https://matrix.org وجود دارد."; +"notice_video_attachment" = "پیوست ویدیویی"; +"notice_audio_attachment" = "پیوست صوتی"; +"notice_image_attachment" = "پیوست تصویر"; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ رمزگذاری سرتاسری را فعال کرد (الگوریتم ناشناخته %2$@)."; +"notice_encryption_enabled_ok" = "%@ رمزگذاری سرتاسری را فعال کرد."; +"notice_encrypted_message" = "پیام رمزگذاری شده"; +"notice_room_related_groups" = "گروه های مرتبط با این اتاق عبارتند از: %@"; +"notice_room_aliases_for_dm" = "نام های مستعار عبارتند از: %@"; +"notice_room_aliases" = "نام مستعار اتاق: %@"; +"notice_room_power_level_event_requirement" = "حداقل سطح قدرت مربوط به رویدادها عبارت است از:"; +"notice_room_power_level_acting_requirement" = "حداقل سطح قدرت که کاربر باید قبل از اقدام داشته باشد:"; +"notice_room_power_level_intro_for_dm" = "سطح قدرت اعضا عبارت است از:"; +"notice_room_power_level_intro" = "سطح قدرت اعضای اتاق عبارت است از:"; +"notice_room_join_rule_public_by_you_for_dm" = "شما اینجا را عمومی کردید."; +"notice_room_join_rule_public_by_you" = "شما اتاق را عمومی کردید."; +"notice_room_join_rule_public_for_dm" = "%@ اینجا را عمومی کرد."; +"notice_room_join_rule_public" = "%@ اتاق را عمومی کرد."; +"notice_room_join_rule_invite_by_you_for_dm" = "شما گفتگو را به حالت \"فقط با دعوت\" تنظیم کردید."; +"notice_room_join_rule_invite_by_you" = "شما اتاق را به حالت \"فقط با دعوت\" تنظیم کردید."; +"notice_room_join_rule_invite_for_dm" = "%@ گفتگو را به حالت \"فقط با دعوت\" تنظیم کرد."; +// New +"notice_room_join_rule_invite" = "%@ اتاق را به حالت \"فقط با دعوت\" تنظیم کرد."; +// Old +"notice_room_join_rule" = "قانون پیوستن: %@"; +"notice_room_created_for_dm" = "%@ پیوست."; +"notice_room_created" = "%@ اتاق را ایجاد و پیکربندی کرد."; +"notice_profile_change_redacted" = "%@ پروفایل خود را بروز کرد %@"; +"notice_event_redacted_reason" = " [علت: %@]"; +"notice_event_redacted_by" = " توسط %@"; +"notice_event_redacted" = "<%@ واکنش نشان داد>"; +"notice_room_topic_removed" = "%@ موضوع را حذف کرد"; +"notice_room_name_removed_for_dm" = "%@ نام را حذف کرد"; +"notice_room_name_removed" = "%@ نام اتاق را حذف کرد"; + +// Events formatter +"notice_avatar_changed_too" = "(آواتار هم تغییر کرد)"; +"unignore" = "عدم نادیده‌گیری"; +"ignore" = "چشم پوشی"; +"resume_call" = "از سرگیری"; +"end_call" = "پایان تماس"; +"reject_call" = "رد تماس"; +"answer_call" = "پاسخ دادن به تماس"; +"show_details" = "نمایش جزئیات"; +"cancel_download" = "لغو بارگیری"; +"cancel_upload" = "لغو بارگذاری"; +"select_all" = "انتخاب همه"; +"resend_message" = "ارسال مجدد پیام"; +"reset_to_default" = "تنظیم به حالت پیش فرض"; +"invite_user" = "دعوت کاربر ماتریکس"; +"capture_media" = "گرفتن عکس/فیلم"; +"attach_media" = "پیوست رسانه از کتابخانه"; +"select_account" = "یک حساب انتخاب کنید"; +"mention" = "اشاره"; +"start_video_call" = "شروع تماس ویدیویی"; +"start_voice_call" = "شروع تماس صوتی"; +"start_chat" = "شروع گفتگو"; +"set_admin" = "تنظیم مدیر"; +"set_moderator" = "تنظیم معاون"; +"set_default_power_level" = "تنظیم مجدد سطح قدرت"; +"set_power_level" = "تنظیم سطح قدرت"; +"submit_code" = "ارسال کد"; +"submit" = "ارسال"; +"sign_up" = "ثبت نام"; +"dismiss" = "رد"; +"discard" = "رها کردن"; +"abort" = "لغو"; +"yes" = "بله"; + +// Action +"no" = "خیر"; +"login_error_resource_limit_exceeded_contact_button" = "تماس با ادمین"; +"login_error_resource_limit_exceeded_message_contact" = "\n\nلطفاً برای ادامه استفاده از این سرویس با سرپرست سرویس خود تماس بگیرید."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "این سرور به محدودیت کاربر فعال ماهانه خود رسیده است."; +"login_error_resource_limit_exceeded_message_default" = "این سرور از یکی از محدودیت های منابع خود فراتر رفته است."; +"login_error_resource_limit_exceeded_title" = "از محدودیت منابع فراتر رفت"; +"login_desktop_device" = "دسکتاپ"; +"login_tablet_device" = "تبلت"; +"login_mobile_device" = "تلفن همراه"; +"login_error_forgot_password_is_not_supported" = "گذرواژه فراموش شده در حال حاضر پشتیبانی نمی شود"; +"register_error_title" = "ثبت نام انجام نشد"; +"login_invalid_param" = "پارامتر نامعتبر است"; +"login_leave_fallback" = "لغو"; +"login_use_fallback" = "استفاده از صفحه بازگشت"; +"login_error_login_email_not_yet" = "لینک ایمیل هنوز کلیک نشده است"; +"login_error_user_in_use" = "این نام کاربری قبلاً استفاده شده است"; +"login_error_limit_exceeded" = "درخواست‌های زیادی ارسال شده است"; +"login_error_not_json" = "حاوی JSON معتبر نبود"; +"login_error_bad_json" = "JSON بد شکل"; +"login_error_unknown_token" = "توکن دسترسی وارد شده معتبر نیست"; +"login_error_forbidden" = "نام کاربری / گذرواژه نامعتبر است"; +"login_error_registration_is_not_supported" = "ثبت نام در حال حاضر پشتیبانی نمی شود"; +"login_error_do_not_support_login_flows" = "در حال حاضر ما از روش ورود به سیستم تعریف شده توسط سرور پشتیبانی نمی کنیم"; +"login_error_no_login_flow" = "ما موفق به بازیابی اطلاعات احراز هویت از این سرور نشدیم"; +"login_error_title" = "ورود ناموفق بود"; +"login_prompt_email_token" = "لطفا کد اعتبارسنجی ایمیل خود را وارد کنید:"; +"login_email_placeholder" = "آدرس ایمیل"; +"login_display_name_placeholder" = "نام (به عنوان مثال محمد حسینی)"; +"login_optional_field" = "اختیاری"; +"login_password_placeholder" = "گذرواژه"; +"login_user_id_placeholder" = "شناسه ماترکیس (به عنوان مثال @bob:matrix.org یا Bob)"; +"login_identity_server_title" = "آدرس سرور هویت‌سنجی:"; +"login_home_server_info" = "سرور تمام مکالمات و داده‌های حساب شما را ذخیره می کند"; +"login_home_server_title" = "آدرس سرور:"; +"login_server_url_placeholder" = "URL (به عنوان مثال https://matrix.org)"; + +// Login Screen +"login_create_account" = "ایجاد حساب:"; +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "ماتریکس"; +"notification_settings_enable_notifications" = "فعال سازی اعلان‌ها"; + +// Notification settings screen +"notification_settings_disable_all" = "همه اعلان‌ها را غیرفعال کنید"; +"settings_title_notifications" = "اعلان‌ها"; + +// Settings screen +"settings_title_config" = "پیکربندی"; + +// contacts list screen +"invitation_message" = "من دوست دارم با شما با ماتریس گپ بزنم. لطفاً برای کسب اطلاعات بیشتر به وب سایت http://matrix.org مراجعه کنید."; + +// members list Screen + +// accounts list Screen + +// image size selection + +// invitation members list Screen + +// room creation dialog Screen + +// room info dialog Screen + +// room details dialog screen +"login_error_must_start_http" = "آدرس باید با http[s]:// شروع شود"; + +// Login Screen +"login_error_already_logged_in" = "قبلاً وارد سیستم شده‌اید"; +"message_unsaved_changes" = "تغییرات ذخیره نشده‌ای وجود دارد. ترک کردن موجب از بین رفتن این تغییرات می‌شود."; +"unban" = "لغو تحریم"; +"ban" = "تحریم"; +"kick" = "اخراج"; +"num_members_other" = "%@ کاربر"; +"num_members_one" = "%@ کاربر"; +"membership_ban" = "تحریم"; +"membership_leave" = "ترک کرد"; +"membership_invite" = "دعوت کرد"; +"create_account" = "ایجاد حساب"; +"login" = "ورود"; +"create_room" = "ایجاد اتاق"; + +// actions +"action_logout" = "خروج"; +"delete" = "حذف"; +"share" = "اشتراک گذاری"; +"redact" = "حذف"; +"resend" = "ارسال مجدد"; +"copy_button_name" = "کپی"; +"send" = "ارسال"; + +// Room Screen + +// general errors + +// Home Screen + +// Last seen time + +// call events + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /console/src/main/res/values/strings.xml. +*/ + + +// titles + +// button names +"ok" = "خب"; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "پیام‌های آینده را از زمان ملحق شدن افراد برای همه قابل مشاهده کردید."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "شما تاریخچه آینده اتاق را از همان زمانی که به آن ملحق شده‌اند، برای همه اعضای اتاق قابل مشاهده کردید."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "شما پیام‌های آینده را از زمان دعوت شدن برای همه قابل مشاهده کردید."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "شما تاریخچه آینده اتاق را از همان زمانی که دعوت شده‌اند ، برای همه اعضای اتاق قابل مشاهده کردید."; +"notice_room_history_visible_to_members_by_you_for_dm" = "شما پیام‌های آینده را برای همه اعضای اتاق قابل مشاهده کردید."; +"notice_room_history_visible_to_anyone_by_you" = "شما تاریخچه آینده اتاق را برای همه قابل مشاهده کردید."; +"notice_room_history_visible_to_members_by_you" = "شما تاریخچه آینده اتاق را برای همه اعضای اتاق قابل مشاهده کردید."; +"notice_redaction_by_you" = "شما یک رویداد را مجدداً ویرایش کردید (شناسه: %@)"; +"notice_encryption_enabled_unknown_algorithm_by_you" = "رمزگذاری سرتاسری را فعال کردید (الگوریتم ناشناخته %@)."; +"notice_encryption_enabled_ok_by_you" = "رمزگذاری سرتاسری را فعال کردید."; +"notice_room_created_by_you" = "شما اتاق را ایجاد و پیکربندی کردید."; +"notice_profile_change_redacted_by_you" = "شما نمایه خود را به روز کردید %@"; +"notice_event_redacted_by_you" = " توسط شما"; +"notice_room_topic_removed_by_you" = "موضوع را حذف کردید"; +"notice_room_name_removed_by_you_for_dm" = "نام را حذف کردید"; +"notice_room_name_removed_by_you" = "نام اتاق را حذف کردید"; +"notice_conference_call_request_by_you" = "شما درخواست جلسه دادید"; +"notice_declined_video_call_by_you" = "شما تماس را رد کردید"; +"notice_ended_video_call_by_you" = "تماس را تمام کردید"; +"notice_answered_video_call_by_you" = "شما به تماس پاسخ دادید"; +"notice_placed_video_call_by_you" = "شما یک تماس ویدیویی برقرار کردید"; +"notice_placed_voice_call_by_you" = "شما یک تماس صوتی برقرار کردید"; +"notice_room_name_changed_by_you_for_dm" = "نام را به %@ تغییر دادید."; +"notice_room_name_changed_by_you" = "نام اتاق را به %@ تغییر دادید."; +"notice_topic_changed_by_you" = "شما موضوع را به \"%@\" تغییر دادید."; +"notice_display_name_removed_by_you" = "نام خود را حذف کردید"; +"notice_display_name_changed_from_by_you" = "نام خود را از %@ به %@ تغییر دادید"; +"notice_display_name_set_by_you" = "نام خود را به %@ تنظیم کردید"; +"notice_avatar_url_changed_by_you" = "آواتار خود را تغییر دادید"; +"notice_room_withdraw_by_you" = "شما دعوت %@ را پس گرفتید"; +"notice_room_ban_by_you" = "شما %@ را تحریم کردید"; +"notice_room_unban_by_you" = "شما %@ را از تحریم خارج کردید"; +"notice_room_kick_by_you" = "شما %@ را اخراج کردید"; +"notice_room_reject_by_you" = "شما دعوت را رد کردید"; +"notice_room_leave_by_you" = "خارج شدید"; +"notice_room_join_by_you" = "شما پیوستید"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "شما دعوت %@ را لغو کردید"; +"notice_room_third_party_revoked_invite_by_you" = "شما دعوت از %@ برای پیوستن به اتاق را لغو کردید"; +"notice_room_third_party_registered_invite_by_you" = "شما دعوت %@ را پذیرفتید"; +"notice_room_third_party_invite_by_you_for_dm" = "شما %@ را دعوت کردید"; +"notice_room_third_party_invite_by_you" = "شما دعوت‌نامه‌ای به %@ برای پیوستن به اتاق ارسال کرده‌اید"; +"notice_room_invite_you" = "%@ شما را دعوت کرد"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "شما %@ را دعوت کردید"; +"notice_conference_call_finished" = "جلسه به پایان رسید"; +"notice_conference_call_started" = "جلسه آغاز شد"; +"notice_conference_call_request" = "%@ درخواست جلسه مجازی کرد"; +"notice_declined_video_call" = "%@ تماس را رد کرد"; +"notice_ended_video_call" = "%@ به تماس پایان داد"; +"notice_answered_video_call" = "%@ به تماس پاسخ داد"; +"notice_placed_video_call" = "%@ تماس تصویری برقرار کرد"; +"notice_placed_voice_call" = "%@ تماس صوتی برقرار کرد"; +"notice_room_name_changed_for_dm" = "%@ نام را به %@ تغییر داد."; +"notice_room_name_changed" = "%@ نام اتاق را به %@ تغییر داد."; +"notice_topic_changed" = "%@ موضوع را به \"%@\" تغییر داد."; +"notice_display_name_removed" = "%@ نام خود را حذف کرد"; +"notice_display_name_changed_from" = "%@ نام خود را از %@ به %@ تغییر داد"; +"notice_display_name_set" = "%@ نام خود را به %@ تنظیم کرد"; +"notice_avatar_url_changed" = "%@ آواتار خود را تغییر داد"; +"notice_room_reason" = ". دلیل: %@"; +"notice_room_withdraw" = "%@ دعوت %@ را پس گرفت"; +"notice_room_ban" = "%@ %@ را تحریم کرد"; +"notice_room_unban" = "%@ %@ را از تحریم خارج کرد"; +"notice_room_kick" = "%@ %@ را اخراج کرد"; +"notice_room_reject" = "%@ دعوت را رد کرد"; +"notice_room_leave" = "%@ ترک کرد"; +"notice_room_join" = "%@ پیوست"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ دعوت %@ را لغو کرد"; +"notice_room_third_party_revoked_invite" = "%@ دعوت از %@ برای پیوستن به اتاق را لغو کرد"; +"notice_room_third_party_registered_invite" = "%@ دعوت %@ را پذیرفت"; +"notice_room_third_party_invite_for_dm" = "%@ %@ را دعوت کرد"; +"notice_room_third_party_invite" = "%@ برای پیوستن به اتاق به %@ دعوتنامه ارسال کرد"; + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /matrix-sdk/src/main/res/values/strings.xml. +*/ + +"notice_room_invite" = "%@ %@ را دعوت کرد"; +"language_picker_default_language" = "پیش فرض (%@)"; + +// Language picker +"language_picker_title" = "انتخاب زبان"; + +// Country picker +"country_picker_title" = "یک کشور را انتخاب کنید"; +"local_contacts_access_not_granted" = "کشف کاربران از دفترچه مخاطبین نیاز به دسترسی به مخاطبین شما دارد اما %@ اجازه استفاده از آنها را ندارد"; +"local_contacts_access_discovery_warning" = "برای کشف مخاطبی که در حال حاظر از ماتریکس استفاده می‌کند، %@ می تواند آدرس‌های ایمیل و شماره تلفن‌های موجود در دفترچه آدرس خود را به سرور هویت‌سنجی انتخابی شما ارسال کند. در صورت پشتیبانی، داده های شخصی قبل از ارسال هش می شوند - لطفا برای اطلاعات بیشتر سیاست حفظ حریم خصوصی سرور هویت‌سنجی خود را بررسی کنید."; +"local_contacts_access_discovery_warning_title" = "کشف کاربران"; +"microphone_access_not_granted_for_call" = "تماس ها نیاز به دسترسی به میکروفن دارند اما %@ اجازه استفاده از آن را ندارد"; + +// Permissions +"camera_access_not_granted_for_call" = "تماس های ویدئویی نیاز به دسترسی به دوربین دارند اما %@ اجازه استفاده از آن را ندارد"; +"ssl_homeserver_url" = "آدرس سرور: %@"; +"user_id_placeholder" = "مثال: @akbar:homeserver"; +"network_error_not_reachable" = "لطفاً اتصال شبکه خود را بررسی کنید"; +"power_level" = "سطح قدرت"; +"public" = "عمومی"; +"private" = "خصوصی"; +"not_supported_yet" = "در حال حاظر پشتیبانی نمی‌شود"; +"error_common_message" = "خطایی رخ داد لطفاً بعداً دوباره امتحان کنید."; +"error" = "خطا"; +"unsent" = "ارسال نشده"; + +// Others +"user_id_title" = "شناسه کاربری:"; +"e2e_passphrase_create" = "ایجاد عبارت عبور"; +"e2e_passphrase_not_match" = "عبارات عبور باید مطابقت داشته باشند"; +"e2e_passphrase_empty" = "عبارت عبور نباید خالی باشد"; +"e2e_passphrase_confirm" = "عبارت عبور را تأیید کنید"; +"e2e_export" = "ذخیره"; +"e2e_export_prompt" = "این فرآیند به شما امکان می دهد کلیدهای پیام هایی را که در اتاق های رمزگذاری شده دریافت کرده‌اید در یک فایل ذخیره کنید. سپس می توانید فایل را در آینده به یک کلاینت دیگر وارد کنید، بنابراین کلاینت همچنین می تواند این پیام ها را رمزگشایی کند.\nفایل ذخیره شده به هر کسی که می تواند آن را بخواند اجازه می دهد تا پیام‌های رمزگذاری شده‌ای را که می بینید رمزگشایی کند، بنابراین باید مراقب امنیت آن باشید."; + +// E2E export +"e2e_export_room_keys" = "کلیدهای اتاق را صادر کنید"; +"e2e_passphrase_enter" = "عبارت عبور را وارد کنید"; +"e2e_import" = "وارد كردن"; +"notice_room_created_by_you_for_dm" = "شما پیوستید."; +"default" = "پیش‌فرض"; +"offline" = "آفلاین"; + +// E2E import +"e2e_import_room_keys" = "ورود کلیدهای اتاق"; +"format_time_d" = "d"; +"format_time_h" = "h"; +"format_time_m" = "m"; + +// Time +"format_time_s" = "s"; +"search_searching" = "در حال جستجو ..."; + +// Search +"search_no_results" = "بدون نتیجه"; +"group_section" = "گروه‌ها"; + +// Groups +"contact_local_contacts" = "مخاطبین محلی"; + +// Contacts +"contact_mx_users" = "کاربران ماتریکس"; +"attachment_e2e_keys_import" = "وارد كردن..."; +"attachment_e2e_keys_file_prompt" = "این پرونده شامل کلیدهای رمزگذاری کلاینت ماتریکس است.\nآیا می خواهید محتوای پرونده را مشاهده کنید یا کلیدهای موجود در آن را وارد کنید؟"; +"attachment_multiselection_original" = "اندازه واقعی"; +"attachment_multiselection_size_prompt" = "تصاویر به چه صورت ارسال شود:"; + +// Attachment +"attachment_size_prompt" = "می‌خواهید به چه صورت ارسال کنید:"; +"attachment_cancel_upload" = "بارگذاری لغو شود؟"; +"attachment_cancel_download" = "بارگیری لغو شود؟"; +"attachment_large" = "بزرگ: %@"; +"attachment_medium" = "متوسط: %@"; +"attachment_small" = "کوچک: %@"; +"attachment_original" = "اندازه واقعی: %@"; + +// Room members +"room_member_ignore_prompt" = "آیا مطمئن هستید که می خواهید همه پیام های این کاربر را پنهان کنید؟"; +"message_reply_to_message_to_reply_to_prefix" = "در پاسخ به"; +"message_reply_to_sender_sent_a_file" = "پرونده‌ای ارسال شد."; +"message_reply_to_sender_sent_an_audio_file" = "یک فایل صوتی ارسال شد."; + +// Reply to message +"message_reply_to_sender_sent_an_image" = "یک تصویر ارسال شد."; +"message_reply_to_sender_sent_a_video" = "یک ویدیو ارسال شد."; +"room_no_conference_call_in_encrypted_rooms" = "جلسات در اتاق های رمزگذاری شده پشتیبانی نمی شوند"; +"room_no_power_to_create_conference_call" = "برای شروع جلسه در این اتاق نیاز به دسترسی دعوت دارید"; +"room_left_for_dm" = "خارج شدید"; +"room_left" = "شما از اتاق خارج شدید"; +"room_error_timeline_event_not_found" = "برنامه سعی داشت نقطه خاصی را در پیام‌های این اتاق بارگیری کند اما نتوانست آن را پیدا کند"; +"room_error_timeline_event_not_found_title" = "خطا در بارگیری موقعیت پیام‌ها"; +"room_error_cannot_load_timeline" = "خطا در بارگیری پیام‌ها"; +"room_error_topic_edition_not_authorized" = "شما مجاز به ویرایش موضوع در اتاق نیستید"; +"room_error_name_edition_not_authorized" = "شما مجاز به ویرایش این نام اتاق نیستید"; +"room_error_join_failed_empty_room" = "در حال حاضر امکان عضویت مجدد در یک اتاق خالی وجود ندارد."; +"room_error_join_failed_title" = "پیوستن به اتاق با خطا مواجه شد"; + +// Room +"room_please_select" = "لطفا یک اتاق انتخاب کنید"; +"room_creation_participants_placeholder" = "(به عنوان مثال، @ali:homeserver1; @akbar:homeserver1; ...)"; +"room_creation_participants_title" = "شركت كنندگان:"; +"room_creation_alias_placeholder_with_homeserver" = "(به عنوان مثال، #foo%@)"; +"room_creation_alias_placeholder" = "(به عنوان مثال #foo:example.org)"; +"room_creation_alias_title" = "نام مستعار اتاق:"; +"room_creation_name_placeholder" = "به عنوان مثال(گروه ناهار)"; + +// Room creation +"room_creation_name_title" = "نام اتاق:"; +"account_error_push_not_allowed" = "اعلان مجاز نیست"; +"account_error_msisdn_wrong_description" = "به نظر نمی رسد این شماره تلفن معتبری باشد"; +"account_error_msisdn_wrong_title" = "شماره تلفن نامعتبر"; +"account_error_email_wrong_description" = "به نظر نمی رسد این یک آدرس ایمیل معتبر باشد"; +"account_error_email_wrong_title" = "آدرس ایمیل نامعتبر است"; +"account_error_matrix_session_is_not_opened" = "نشست ماتریس باز نیست"; +"account_error_picture_change_failed" = "تغییر تصویر انجام نشد"; +"account_error_display_name_change_failed" = "تغییر نام ناموفق بود"; +"account_msisdn_validation_error" = "تأیید شماره تلفن امکان پذیر نیست."; +"account_msisdn_validation_message" = "ما یک پیامک با کد فعال‌سازی ارسال کرده‌ایم. لطفاً این کد را در زیر وارد کنید."; +"account_msisdn_validation_title" = "در انتظار تأیید"; +"room_event_encryption_verify_message" = "برای تأیید اینکه این نشست قابل اعتماد است، لطفاً با استفاده از روشهای دیگر (مثلاً به صورت حضوری یا تماس تلفنی) با مالک آن تماس بگیرید و از آنها سوال کنید که آیا کلیدی که در تنظیمات کاربر خود برای این نشست می بینند با کلید زیر مطابقت دارد:\n\n نام نشست: %@\nشناسه نشست: %@\nکلید نشست: %@\n\nدر صورت مطابقت ، دکمه تأیید را در زیر فشار دهید. در صورت عدم تطابق، شخص ثالثی این نشست را رهگیری می کند و شما قاعدتا باید دکمه لیست سیاه را فشار دهید.\n\nدر آینده این روند تأیید پیچیده تر خواهد بود."; +"account_email_validation_error" = "تأیید آدرس ایمیل انجام نشد. لطفاً ایمیل خود را بررسی کرده و روی پیوند حاوی آن کلیک کنید. پس از انجام این کار ، روی ادامه کلیک کنید"; +"account_email_validation_message" = "لطفاً ایمیل خود را بررسی کرده و روی پیوند حاوی آن کلیک کنید. پس از انجام این کار ، روی ادامه کلیک کنید."; +"account_email_validation_title" = "در انتظار تایید"; +"account_linked_emails" = "ایمیل های متصل شده"; +"account_link_email" = "اتصال به ایمیل"; + +// Account +"account_save_changes" = "ذخیره تغییرات"; +"room_event_encryption_verify_ok" = "تأیید"; +"room_event_encryption_verify_title" = "تایید نشست\n\n"; +"room_event_encryption_info_unblock" = "خروج از لیست سیاه"; +"room_event_encryption_info_block" = "لیست سیاه"; +"room_event_encryption_info_unverify" = "تأیید نکردن"; +"room_event_encryption_info_verify" = "تأیید کنید ..."; +"room_event_encryption_info_device_blocked" = "در لیست سیاه قرار گرفت"; +"room_event_encryption_info_device_not_verified" = "تأیید نشده است"; +"room_event_encryption_info_device_verified" = "تأیید شده"; +"room_event_encryption_info_device_fingerprint" = "اثر انگشت Ed25519\n"; +"room_event_encryption_info_device_verification" = "تأیید هویت\n"; +"room_event_encryption_info_device_id" = "شناسه\n"; +"room_event_encryption_info_device_name" = "نام عمومی\n"; +"room_event_encryption_info_device_unknown" = "نشست ناشناخته\n"; +"room_event_encryption_info_device" = "\nاطلاعات نشست ارسال کننده\n"; +"room_event_encryption_info_event_none" = "هیچ یک"; +"room_event_encryption_info_event_unencrypted" = "رمزگذاری نشده"; +"room_event_encryption_info_event_decryption_error" = "خطای رمزگشایی\n"; +"room_event_encryption_info_event_session_id" = "شناسه جلسه\n"; +"room_event_encryption_info_event_algorithm" = "الگوریتم\n"; +"room_event_encryption_info_event_fingerprint_key" = "کلید اثر انگشت Ed25519 ادعا شده\n"; +"room_event_encryption_info_event_identity_key" = "کلید Curve25519\n"; +"room_event_encryption_info_event_user_id" = "شناسه کاربر\n"; +"room_event_encryption_info_event" = "اطلاعات رویداد\n"; + +// Encryption information +"room_event_encryption_info_title" = "اطلاعات رمزنگاری سرتاسری\n\n"; +"device_details_delete_prompt_message" = "این عملیات نیاز به احراز هویت مجدد دارد.\nبرای ادامه ، لطفاً گذرواژه خود را وارد کنید."; +"device_details_delete_prompt_title" = "احراز هویت"; +"device_details_rename_prompt_message" = "نام عمومی یک نشست برای افرادی که با آنها ارتباط برقرار می کنید قابل مشاهده است"; +"device_details_rename_prompt_title" = "نام نشست"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_last_seen" = "آخرین بازدید\n"; +"device_details_identifier" = "شناسه\n"; +"device_details_name" = "نام عمومی\n"; + +// Devices +"device_details_title" = "اطلاعات نشست\n"; +"notification_settings_room_rule_title" = "اتاق: %@"; +"settings_enter_validation_token_for" = "توکن فعال‌سازی را برای %@ وارد کنید:"; +"settings_enable_push_notifications" = "فعال‌سازی اعلان"; +"settings_enable_inapp_notifications" = "فعال‌سازی اعلان درون برنامه ای"; + +// Settings +"settings" = "تنظیمات"; +"room_displayname_more_than_two_members" = "%@ و %@ نفر دیگر"; +"room_displayname_two_members" = "%@ و %@"; +"notice_crypto_unable_to_decrypt" = "** رمزگشایی امکان پذیر نیست: %@ **"; +"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" = "%@ پیام‌های آینده را برای همه اعضای اتاق قابل مشاهده کرد."; +"notice_room_history_visible_to_members" = "%@ تاریخچه آینده اتاق را برای همه اعضای اتاق قابل مشاهده کرد."; +"notice_room_history_visible_to_anyone" = "%@ تاریخچه آینده اتاق را برای همه قابل مشاهده کرد."; +"notice_error_unknown_event_type" = "نوع رویداد ناشناخته"; +"notice_error_unexpected_event" = "رویداد غیرمنتظره"; +"notice_error_unsupported_event" = "رویداد پشتیبانی نشده"; +"notice_redaction" = "%@ یک رویداد را تغییر داد (شناسه: %@)"; +"notice_feedback" = "بازخورد (شناسه: %@): %@"; +"notice_unsupported_attachment" = "پیوست پشتیبانی نشده: %@"; +"notice_invalid_attachment" = "پیوست نامعتبر"; +"notice_file_attachment" = "پیوست پرونده"; +"notice_location_attachment" = "پیوست مکان"; +"call_transfer_to_user" = "انتقال به %@"; +"call_consulting_with_user" = "تماس با %@"; +"call_video_with_user" = "تماس تصویری با %@"; +"call_voice_with_user" = "تماس صوتی با %@"; +"call_ringing" = "در حال زنگ خوردن…"; +"microphone_access_not_granted_for_voice_message" = "جهت ارسال پیام صوتی نیاز به دسترسی به میکروفون وجود دارد اما %@ دسترسی استفاده از آن را ندارد"; +"e2e_passphrase_too_short" = "کلمه عبور بیش از حد کوتاه است (حداقل می‌بایست %d کاراکتر باشد)"; +"message_reply_to_sender_sent_a_voice_message" = "یک پیام صوتی ارسال کنید."; diff --git a/Riot/Assets/fi.lproj/Vector.strings b/Riot/Assets/fi.lproj/Vector.strings index 80d4f683c..069d73fc2 100644 --- a/Riot/Assets/fi.lproj/Vector.strings +++ b/Riot/Assets/fi.lproj/Vector.strings @@ -51,3 +51,150 @@ "major_update_done_action" = "Selvä"; "room_member_power_level_short_moderator" = "Valvoja"; "room_member_power_level_moderator_in" = "Valvoja %@:ssä"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Luo tili:"; +"login_server_url_placeholder" = "URL (esim. https://matrix.org)"; +"login_home_server_title" = "Kotipalvelin:"; +"login_identity_server_title" = "Identiteettipalvelin:"; +"login_password_placeholder" = "Salasana"; +"login_optional_field" = "valinnainen"; +"login_home_server_info" = "Kotipalvelin tallentaa kaikki keskustelu- ja tilitietosi"; +"login_display_name_placeholder" = "Näyttönimi (esim. Matti Meikäläinen)"; +"login_email_placeholder" = "Sähköpostiosoite"; +"login_error_title" = "Kirjautuminen epäonnistui"; +"login_error_registration_is_not_supported" = "Rekisteröinti ei ole tuettu tällä hetkellä"; +"login_error_forbidden" = "Virheellinen käyttäjätunnus tai salasana"; +"login_error_limit_exceeded" = "Liian monta pyyntöä on lähetetty"; +"login_leave_fallback" = "Peruuta"; +"register_error_title" = "Rekisteröinti epäonnistui"; +"login_mobile_device" = "Mobiili"; +"login_tablet_device" = "Tabletti"; +"login_desktop_device" = "Työpöytä"; +"close" = "Sulje"; +"select_account" = "Valitse tili"; +"invite_user" = "Kutsu Matrix-käyttäjä"; +"select_all" = "Valitse kaikki"; +"cancel_upload" = "Peruuta lähetys"; +"cancel_download" = "Peruuta lataus"; +"show_details" = "Näytä tiedot"; +"answer_call" = "Vastaa puheluun"; +"reject_call" = "Hylkää puhelu"; +"end_call" = "Lopeta puhelu"; +"notice_event_redacted_reason" = " [syy: %@]"; +"notice_encrypted_message" = "Salattu viesti"; +"notice_image_attachment" = "kuvaliite"; +"notice_audio_attachment" = "ääniliite"; +"notice_video_attachment" = "videoliite"; +"notice_location_attachment" = "sijaintiliite"; +"notice_file_attachment" = "tiedostoliite"; +"notice_invalid_attachment" = "virheellinen liite"; +// room display name +"room_displayname_empty_room" = "Tyhjä huone"; +"room_displayname_two_members" = "%@ ja %@"; +// Settings +"settings" = "Asetukset"; +"notification_settings_room_rule_title" = "Huone: '%@'"; +"device_details_name" = "Julkinen nimi\n"; +"device_details_last_seen" = "Viimeksi nähty\n"; +"device_details_rename_prompt_message" = "Istunnon julkinen nimi näkyy henkilöille, joiden kanssa keskustelet"; +"room_event_encryption_info_event_algorithm" = "Algoritmi\n"; +"room_event_encryption_info_event_session_id" = "Istunnon tunnus\n"; +"room_event_encryption_info_device_unknown" = "tuntematon istunto\n"; +"room_event_encryption_info_device_name" = "Julkinen nimi\n"; +// Account +"account_save_changes" = "Tallenna muutokset"; +"account_error_matrix_session_is_not_opened" = "Matrix-istunto ei ole avattuna"; +"account_error_email_wrong_title" = "Virheellinen sähköpostiosoite"; +"account_error_email_wrong_description" = "Tämä ei vaikuta kelvolliselta sähköpostiosoitteelta"; +"account_error_msisdn_wrong_title" = "Virheellinen puhelinnumero"; +"account_error_msisdn_wrong_description" = "Tämä ei vaikuta kelvolliselta puhelinnumerolta"; +// Room creation +"room_creation_name_title" = "Huoneen nimi:"; +// Room +"room_please_select" = "Valitse huone"; +"room_error_join_failed_title" = "Liittyminen huoneeseen epäonnistui"; +"room_left" = "Poistuit huoneesta"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "lähetti kuvan."; +"message_reply_to_sender_sent_a_video" = "lähetti videon."; +"message_reply_to_sender_sent_an_audio_file" = "lähetti äänitiedoston."; +"message_reply_to_sender_sent_a_file" = "lähetti tiedoston."; +"attachment_original" = "Todellinen koko: %@"; +"attachment_cancel_download" = "Perutaanko lataus?"; +"attachment_cancel_upload" = "Perutaanko lähetys?"; +"attachment_multiselection_original" = "Todellinen koko"; +"attachment_e2e_keys_import" = "Tuo..."; +// Contacts +"contact_mx_users" = "Matrix-käyttäjät"; +"contact_local_contacts" = "Paikalliset yhteystiedot"; +"group_section" = "Ryhmät"; +// Search +"search_no_results" = "Ei tuloksia"; +"search_searching" = "Haku käynnissä..."; +"e2e_import" = "Tuo"; +"e2e_export" = "Vie"; +"error" = "Virhe"; +"default" = "oletus"; +"private" = "Yksityinen"; +"public" = "Julkinen"; +"network_error_not_reachable" = "Tarkista verkkoyhteytesi"; +// Country picker +"country_picker_title" = "Valitse maa"; +// Language picker +"language_picker_title" = "Valitse kieli"; +"language_picker_default_language" = "Oletus (%@)"; +"notice_answered_video_call" = "%@ vastasi puheluun"; +"notice_ended_video_call" = "%@ lopetti puhelun"; +// button names +"ok" = "OK"; +"send" = "Lähetä"; +"copy_button_name" = "Kopioi"; +"redact" = "Poista"; +"share" = "Jaa"; +"delete" = "Poista"; +// actions +"action_logout" = "Kirjaudu ulos"; +"create_room" = "Luo huone"; +"login" = "Kirjaudu sisään"; +"create_account" = "Luo tili"; +// Login Screen +"login_error_already_logged_in" = "Jo sisäänkirjautuneena"; +// room details dialog screen +"settings_title_notifications" = "Ilmoitukset"; +// Notification settings screen +"notification_settings_disable_all" = "Poista käytöstä kaikki ilmoitukset"; +"notification_settings_enable_notifications" = "Käytä ilmoituksia"; +"notification_settings_always_notify" = "Ilmoita aina"; +"notification_settings_never_notify" = "Älä ilmoita koskaan"; +"notification_settings_select_room" = "Valitse huone"; +// gcm section +"settings_config_home_server" = "Kotipalvelin: %@"; +"settings_config_identity_server" = "Identiteettipalvelin: %@"; +// call string +"call_waiting" = "Odottaa..."; +"call_connecting" = "Puhelu yhdistyy..."; +"call_ended" = "Puhelu loppui"; +"call_ring" = "Soitetaan..."; +"incoming_video_call" = "Saapuva videopuhelu"; +"incoming_voice_call" = "Saapuva äänipuhelu"; +"call_invite_expired" = "Puhelukutsu vanhentui"; +"ssl_logout_account" = "Kirjaudu ulos"; +"ssl_fingerprint_hash" = "Sormenjälki (%@):"; +"room_event_encryption_info_verify" = "Vahvista..."; +"room_event_encryption_info_unverify" = "Poista vahvistus"; +"room_event_encryption_verify_title" = "Varmenna istunto\n\n"; +"room_event_encryption_verify_ok" = "Vahvista"; +"account_email_validation_error" = "Sähköpostin vahvistaminen epäonnistui. Tarkistathan sähköpostisi ja seuraa linkkiä, joka on lähettämässämme viestissä. Sen jälkeen, täppää jatka"; +"account_msisdn_validation_title" = "Vahvistus meneillään"; +"account_msisdn_validation_error" = "Puhelinnumeron vahvistus epäonnistui."; +"account_error_display_name_change_failed" = "Näyttönimen vaihtaminen epäonnistui"; +"account_error_picture_change_failed" = "Kuvan vaihtaminen epäonnistui"; +"ssl_could_not_verify" = "Etäpalvelimen identiteetin vahvistaminen epäonnistui."; +"login_user_id_placeholder" = "Matrix ID (esim. @matti:matrix.org tai pelkästään matti)"; +"login_identity_server_info" = "Matrix tarjoaa identiteettipalvelimen joka osaa kertaa mikä sähköpostiosoite tai puhelinnumero vastaa mitäkin Matrix ID:tä. Vain https://matrix.org on tällä hetkellä käytettävissä."; diff --git a/Riot/Assets/fr.lproj/Vector.strings b/Riot/Assets/fr.lproj/Vector.strings index 0e0d9676b..cb13dec6c 100644 --- a/Riot/Assets/fr.lproj/Vector.strings +++ b/Riot/Assets/fr.lproj/Vector.strings @@ -1672,3 +1672,480 @@ "room_event_action_view_in_room" = "Afficher dans le salon"; "home_context_menu_normal_priority" = "Priorité normale"; "home_context_menu_low_priority" = "Basse priorité"; +"onboarding_use_case_title" = "À qui allez-vous le plus parler ?"; +"onboarding_use_case_message" = "Nous allons vous aider à vous connecter."; +"onboarding_use_case_personal_messaging" = "Famille et amis"; +"onboarding_use_case_work_messaging" = "Équipes"; +"onboarding_use_case_community_messaging" = "Communautés"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Pas encore sûr ? Vous pouvez %@"; +"onboarding_use_case_skip_button" = "passer cette question"; +"onboarding_use_case_existing_server_message" = "Vous cherchez à joindre un serveur existant ?"; +"onboarding_use_case_existing_server_button" = "Se connecter au serveur"; +"search_filter_placeholder" = "Filtrer"; +"location_sharing_open_open_street_maps" = "Ouvrir avec OpenStreetMap"; + + +// MARK: - MatrixKit + + +// room details dialog screen +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Créer un compte :"; +"login_server_url_placeholder" = "URL (par ex. https://matrix.org)"; +"login_home_server_title" = "URL du serveur d’accueil :"; +"login_home_server_info" = "Votre serveur d’accueil stocke toutes vos discussions et les données de votre compte"; +"login_identity_server_title" = "URL du serveur d’identité :"; +"login_identity_server_info" = "Matrix fournit des serveurs d’identité pour lier les e-mail, etc aux identifiants Matrix. Seul https://matrix.org existe pour l’instant."; +"login_user_id_placeholder" = "Identifiant Matrix (par ex. @bob:matrix.org ou bob)"; +"login_password_placeholder" = "Mot de passe"; +"login_optional_field" = "facultatif"; +"login_display_name_placeholder" = "Nom d’affichage (par ex. Bob Obson)"; +"login_email_info" = "Définir une adresse e-mail permet aux autres utilisateurs de vous retrouver plus facilement sur Matrix et vous permettra de réinitialiser votre mot de passe."; +"login_email_placeholder" = "Adresse e-mail"; +"login_prompt_email_token" = "Veuillez saisir votre jeton de validation d’e-mail :"; +"login_error_title" = "Échec d’authentification"; +"login_error_no_login_flow" = "Échec de la récupération des informations d’authentification depuis ce serveur d’accueil"; +"login_error_do_not_support_login_flows" = "Aucun des parcours d’authentification définis par ce serveur d'accueil n’est pris en charge pour le moment"; +"login_error_registration_is_not_supported" = "L’inscription n'est pas prise en charge pour le moment"; +"login_error_forbidden" = "Nom d’utilisateur ou mot de passe invalide"; +"login_error_unknown_token" = "Le jeton d’accès spécifié n'est pas reconnu"; +"login_error_bad_json" = "JSON mal formaté"; +"login_error_not_json" = "Ne contenait pas de JSON valide"; +"login_error_limit_exceeded" = "Trop de requêtes ont été envoyées"; +"login_error_user_in_use" = "Ce nom d’utilisateur est déjà utilisé"; +"login_error_login_email_not_yet" = "Vous n’avez pas encore cliqué sur le lien dans l’e-mail"; +"login_use_fallback" = "Utiliser la page de secours"; +"login_leave_fallback" = "Annuler"; +"login_invalid_param" = "Paramètre invalide"; +"register_error_title" = "Échec lors de l’inscription"; +"login_error_forgot_password_is_not_supported" = "La réinitialisation du mot de passe n’est pas prise en charge pour le moment"; +// Action +"no" = "Non"; +"yes" = "Oui"; +"abort" = "Abandonner"; +"discard" = "Abandonner"; +"dismiss" = "Ignorer"; +"sign_up" = "S’inscrire"; +"submit" = "Valider"; +"submit_code" = "Envoyer le code"; +"set_default_power_level" = "Réinitialiser le rang"; +"set_moderator" = "Nommer modérateur"; +"set_admin" = "Nommer administrateur"; +"start_chat" = "Nouvelle conversation privée"; +"start_voice_call" = "Commencer un appel audio"; +"start_video_call" = "Commencer un appel vidéo"; +"mention" = "Mentionner"; +"select_account" = "Sélectionner un compte"; +"attach_media" = "Joindre un média de la médiathèque"; +"capture_media" = "Prendre une photo/vidéo"; +"invite_user" = "Inviter un utilisateur matrix"; +"reset_to_default" = "Réinitialiser aux valeurs par défaut"; +"resend_message" = "Renvoyer le message"; +"select_all" = "Tout sélectionner"; +"cancel_upload" = "Annuler l’envoi"; +"cancel_download" = "Annuler le téléchargement"; +"show_details" = "Afficher les détails"; +"answer_call" = "Répondre à l’appel"; +"reject_call" = "Rejeter l’appel"; +"end_call" = "Terminer l’appel"; +"ignore" = "Ignorer"; +"unignore" = "Ne plus ignorer"; +// Events formatter +"notice_avatar_changed_too" = "(l’avatar a aussi changé)"; +"notice_room_name_removed" = "%@ a supprimé le nom du salon"; +"notice_room_topic_removed" = "%@ a supprimé le sujet"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " par %@"; +"notice_event_redacted_reason" = " [raison : %@]"; +"notice_profile_change_redacted" = "%@ ont mis à jour leur profil %@"; +"notice_room_created" = "%@ a créé et configuré le salon."; +"notice_room_join_rule" = "La règle pour rejoindre le salon est : %@"; +"notice_room_power_level_intro" = "Les rangs des membres du salon sont :"; +"notice_room_power_level_acting_requirement" = "Le rang minimum qu’un utilisateur doit avoir pour interagir est :"; +"notice_room_power_level_event_requirement" = "Le rang minimum lié aux événements est :"; +"notice_room_aliases" = "Les alias du salon sont : %@"; +"notice_room_related_groups" = "Les groupes associés à ce salon sont : %@"; +"notice_encrypted_message" = "Message chiffré"; +"notice_encryption_enabled" = "%@ a activé le chiffrement de bout en bout (algorithme %@)"; +"notice_image_attachment" = "image en pièce-jointe"; +"notice_audio_attachment" = "audio en pièce-jointe"; +"notice_video_attachment" = "vidéo en pièce-jointe"; +"notice_file_attachment" = "fichier en pièce-jointe"; +"notice_invalid_attachment" = "pièce-jointe non valide"; +"notice_unsupported_attachment" = "Pièce-jointe non prise en charge : %@"; +"notice_redaction" = "%@ a supprimé un événement (id : %@)"; +"notice_error_unsupported_event" = "Évènement non pris en charge"; +"notice_error_unexpected_event" = "Événement inattendu"; +"notice_error_unknown_event_type" = "Type d’événement inconnu"; +"notice_room_history_visible_to_anyone" = "%@ a rendu l’historique futur du salon visible à tout le monde."; +"notice_room_history_visible_to_members" = "%@ a rendu l’historique futur du salon visible à tous les membres du salon."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ a rendu l’historique futur du salon visible à tous les membres, à partir du moment où ils ont été invités."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ a rendu l’historique futur du salon visible à tous les membres, à partir de leur arrivée."; +"notice_crypto_unable_to_decrypt" = "** Déchiffrement impossible : %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "La session de l’expéditeur ne nous a pas envoyé les clés pour ce message."; +"notice_sticker" = "autocollant"; +// room display name +"room_displayname_empty_room" = "Salon vide"; +"room_displayname_two_members" = "%@ et %@"; +"room_displayname_more_than_two_members" = "%@ et %u autres"; +// Settings +"settings" = "Paramètres"; +"settings_enable_inapp_notifications" = "Activer les notifications dans l’application"; +"settings_enable_push_notifications" = "Activer les notifications push"; +"settings_enter_validation_token_for" = "Saisir le jeton de validation pour %@ :"; +"notification_settings_room_rule_title" = "Salon : « %@ »"; +// Devices +"device_details_title" = "Informations sur la session\n"; +"device_details_name" = "Nom public\n"; +"device_details_identifier" = "Identifiant\n"; +"device_details_last_seen" = "Vu pour la dernière fois\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "Le nom public de la session est visible par les personnes avec qui vous communiquez"; +"device_details_delete_prompt_title" = "Authentification"; +"device_details_delete_prompt_message" = "Cette opération requiert une nouvelle authentification.\nPour poursuivre, saisissez votre mot de passe."; +// Encryption information +"room_event_encryption_info_title" = "Informations sur le chiffrement de bout en bout\n\n"; +"room_event_encryption_info_event" = "Informations sur l’événement\n"; +"room_event_encryption_info_event_user_id" = "Identifiant utilisateur\n"; +"room_event_encryption_info_event_identity_key" = "Clé d’identité Curve25519\n"; +"room_event_encryption_info_event_fingerprint_key" = "Clé d’empreinte Ed25519 déclarée\n"; +"room_event_encryption_info_event_algorithm" = "Algorithme\n"; +"room_event_encryption_info_event_session_id" = "Identifiant de session\n"; +"room_event_encryption_info_event_decryption_error" = "Erreur de déchiffrement\n"; +"room_event_encryption_info_event_unencrypted" = "non chiffré"; +"room_event_encryption_info_event_none" = "aucun"; +"room_event_encryption_info_device" = "\nInformations sur la session de l’expéditeur\n"; +"room_event_encryption_info_device_unknown" = "session inconnue\n"; +"room_event_encryption_info_device_name" = "Nom public\n"; +"room_event_encryption_info_device_id" = "Identifiant\n"; +"room_event_encryption_info_device_verification" = "Vérification\n"; +"room_event_encryption_info_device_fingerprint" = "Empreinte Ed25519\n"; +"room_event_encryption_info_device_verified" = "Vérifié"; +"room_event_encryption_info_device_not_verified" = "NON vérifié"; +"room_event_encryption_info_device_blocked" = "Sur liste noire"; +"room_event_encryption_info_verify" = "Vérifier…"; +"room_event_encryption_info_unverify" = "Annuler la vérification"; +"room_event_encryption_info_block" = "Ajouter à la liste noire"; +"room_event_encryption_info_unblock" = "Supprimer de la liste noire"; +"room_event_encryption_verify_title" = "Vérifier la session\n\n"; +"room_event_encryption_verify_message" = "Pour vérifier que cette session est fiable, contactez son propriétaire par un autre moyen (par ex. en personne ou au téléphone) et demandez-lui si la clé qu’il voit dans ses paramètres utilisateur pour cette session est identique à la clé ci-dessous :\n\n\tNom de la session : %@\n\tIdentifiant de la session : %@\n\tClé de la session : %@\n\nSi les clés sont identiques, cliquez sur le bouton vérifier ci-dessous. Sinon, quelqu’un est probablement en train d’intercepter cette session et vous devriez plutôt l’ajouter à la liste noire.\n\nÀ l'avenir, ce processus de vérification sera plus élaboré."; +"room_event_encryption_verify_ok" = "Vérifier"; +// Account +"account_save_changes" = "Enregistrer les modifications"; +"account_link_email" = "Lier un e-mail"; +"account_linked_emails" = "E-mail liés"; +"account_email_validation_title" = "Vérification en attente"; +"account_email_validation_message" = "Vérifiez vos e-mails et cliquez sur le lien fourni. Ensuite, cliquez sur continuer."; +"account_email_validation_error" = "Impossible de vérifier l'adresse e-mail. Vérifiez vos e-mails et cliquez sur le lien fourni. Ensuite, cliquez sur continuer"; +"account_msisdn_validation_title" = "Vérification en attente"; +"account_msisdn_validation_message" = "Nous vous avons envoyé un SMS avec un code d’activation. Veuillez le saisir ci-dessous."; +"account_msisdn_validation_error" = "Impossible de vérifier le numéro de téléphone."; +"account_error_display_name_change_failed" = "Échec de modification du nom d’affichage"; +"account_error_picture_change_failed" = "Échec de modification de l’image"; +"account_error_matrix_session_is_not_opened" = "La session Matrix n’est pas ouverte"; +"account_error_email_wrong_title" = "Adresse e-mail non valide"; +"account_error_email_wrong_description" = "L’adresse e-mail ne semble pas valide"; +"account_error_msisdn_wrong_title" = "Numéro de téléphone non valide"; +"account_error_msisdn_wrong_description" = "Le numéro de téléphone ne semble pas valide"; +// Room creation +"room_creation_name_title" = "Nom du salon :"; +"room_creation_name_placeholder" = "(par ex. groupeDej)"; +"room_creation_alias_title" = "Alias du salon :"; +"room_creation_alias_placeholder" = "(par ex. #foo:exemple.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(par ex. #foo%@)"; +"room_creation_participants_title" = "Membres :"; +"room_creation_participants_placeholder" = "(par ex. @bob:serveurdaccueil1 ; @john:serveurdaccueil2...)"; +// Room +"room_please_select" = "Sélectionnez un salon"; +"room_error_join_failed_title" = "Échec de l’inscription au salon"; +"room_error_join_failed_empty_room" = "Il est impossible pour le moment de rejoindre un salon vide."; +"room_error_name_edition_not_authorized" = "Vous n’êtes pas autorisé à modifier le nom du salon"; +"room_error_topic_edition_not_authorized" = "Vous n’êtes pas autorisé à modifier le sujet du salon"; +"room_error_cannot_load_timeline" = "Échec du chargement du fil de discussion"; +"room_error_timeline_event_not_found_title" = "Échec du chargement de la position dans le fil de discussion"; +"room_error_timeline_event_not_found" = "L’application a tenté de charger un instant précis dans l’historique du salon, mais ne l’a pas trouvée"; +"room_left" = "Vous avez quitté le salon"; +"room_no_power_to_create_conference_call" = "Des permissions sont requises pour inviter ou démarrer une téléconférence dans ce salon"; +"room_no_conference_call_in_encrypted_rooms" = "Les téléconférences ne sont pas prises en charges dans les salons chiffrés"; +// Room members +"room_member_ignore_prompt" = "Voulez-vous vraiment masquer tous les messages de cet utilisateur ?"; +"room_member_power_level_prompt" = "Vous ne pourrez pas annuler cette modification car vous promouvez cet utilisateur au même rang que le vôtre.\nEn êtes-vous sûr ?"; +// Attachment +"attachment_size_prompt" = "Voulez-vous envoyer au format :"; +"attachment_original" = "Taille réelle (%@)"; +"attachment_small" = "Petit (~%@)"; +"attachment_medium" = "Moyen (~%@)"; +"attachment_large" = "Grand (~%@)"; +"attachment_cancel_download" = "Annuler le téléchargement ?"; +"attachment_cancel_upload" = "Annuler l’envoi ?"; +"attachment_multiselection_size_prompt" = "Voulez-vous envoyer l’image au format :"; +"attachment_multiselection_original" = "Taille réelle"; +"attachment_e2e_keys_file_prompt" = "Ce fichier contient des clés de chiffrement exportées d’un client Matrix.\nVoulez-vous voir le contenu du fichier ou importer les clés qu'il contient ?"; +"attachment_e2e_keys_import" = "Importer…"; +// Contacts +"contact_mx_users" = "Utilisateurs Matrix"; +"contact_local_contacts" = "Contacts locaux"; +// Groups +// Search +"search_no_results" = "Aucun résultat"; +"search_searching" = "Recherche en cours…"; +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "h"; +"format_time_d" = "j"; +// E2E import +"e2e_import_room_keys" = "Importer les clés du salon"; +"e2e_import_prompt" = "Ce processus permet d’importer les clés de chiffrement que vous avez précédemment exportées d’un autre client Matrix. Vous pourrez ensuite déchiffrer tous les messages que l’autre client pouvait déchiffrer.\nLe fichier exporté est protégé par une phrase secrète. Entrez la phrase secrète ci-dessous pour déchiffrer le fichier."; +"e2e_import" = "Importer"; +"e2e_passphrase_enter" = "Entrer la phrase secrète"; +// E2E export +"e2e_export_room_keys" = "Exporter les clés de salon"; +"e2e_export_prompt" = "Ce processus permet d’exporter vers un fichier local les clés des messages que vous avez reçu sur les salons chiffrés. Vous pourrez ensuite importer ce fichier dans un autre client Matrix, pour qu’il puisse déchiffrer aussi ces messages.\nLe fichier exporté permettra à tous ceux qui y ont accès de déchiffrer tous les messages chiffrés que vous pouvez voir, donc vous devriez le conserver dans un endroit sûr."; +"e2e_export" = "Exporter"; +"e2e_passphrase_confirm" = "Confirmer la phrase secrète"; +"e2e_passphrase_empty" = "La phrase secrète ne peut pas être vide"; +"e2e_passphrase_not_match" = "Les phrases secrètes doivent être identiques"; +// Others +"user_id_title" = "Identifiant utilisateur :"; +"offline" = "hors ligne"; +"unsent" = "Non envoyé"; +"error" = "Erreur"; +"not_supported_yet" = "Pas encore pris en charge"; +"default" = "par défaut"; +"private" = "Privé"; +"public" = "Public"; +"power_level" = "Rang"; +"network_error_not_reachable" = "Vérifiez votre connexion au réseau"; +"user_id_placeholder" = "ex : @bob:serveurdaccueil"; +"ssl_homeserver_url" = "URL du serveur d’accueil : %@"; +// Permissions +"camera_access_not_granted_for_call" = "Pour passer un appel vidéo l’accès à l’appareil photo est indispensable mais %@ n’a pas les permissions nécessaires"; +"microphone_access_not_granted_for_call" = "Pour passer un appel l’accès au microphone est indispensable mais %@ n’a pas les permissions nécessaires"; +"local_contacts_access_not_granted" = "Pour découvrir des utilisateurs à partir des contacts locaux, l’accès aux contacts est indispensable mais %@ n’a pas les permissions nécessaires"; +"local_contacts_access_discovery_warning_title" = "Découverte des utilisateurs"; +"local_contacts_access_discovery_warning" = "Pour découvrir des contacts utilisant déjà Matrix, %@ peut envoyer les adresses e-mail et les numéros de téléphone de votre répertoire au serveur d’identité que vous avez choisi. S’il le prend en charge, vos données personnelles sont hachées avant d’être envoyées − vérifiez la politique de confidentialité de votre serveur d’identité pour plus de détails."; +// Country picker +"country_picker_title" = "Choisissez un pays"; +"notice_room_invite" = "%@ a invité %@"; +"notice_room_third_party_invite" = "%@ a invité %@ à rejoindre ce salon"; +"notice_room_third_party_registered_invite" = "%@ a accepté l’invitation à %@"; +"notice_room_join" = "%@ est arrivé"; +"notice_room_leave" = "%@ est parti"; +"notice_room_reject" = "%@ a rejeté l’invitation"; +"notice_room_kick" = "%@ a expulsé %@"; +"notice_room_unban" = "%@ a révoqué le bannissement de %@"; +"notice_room_ban" = "%@ a banni %@"; +"notice_room_withdraw" = "%@ a annulé l’invitation de %@"; +"notice_room_reason" = ". Raison : %@"; +"notice_avatar_url_changed" = "%@ a changé d’avatar"; +"notice_display_name_set" = "%@ a modifié son nom en %@"; +"notice_display_name_changed_from" = "%@ a modifié son nom de %@ à %@"; +"notice_display_name_removed" = "%@ a supprimé son nom d’affichage"; +"notice_topic_changed" = "%@ a modifié le sujet en : « %@ »."; +"notice_room_name_changed" = "%@ a modifié le nom du salon en %@."; +"notice_placed_voice_call" = "%@ a passé un appel audio"; +"notice_placed_video_call" = "%@ a passé un appel vidéo"; +"notice_answered_video_call" = "%@ a répondu à l’appel"; +"notice_ended_video_call" = "%@ a terminé l’appel"; +"notice_conference_call_request" = "%@ a débuté une téléconférence en VoIP"; +"notice_conference_call_started" = "Téléconférence en VoIP démarrée"; +"notice_conference_call_finished" = "Téléconférence en VoIP terminée"; +// button names +"send" = "Envoyer"; +"copy_button_name" = "Copier"; +"resend" = "Renvoyer"; +"redact" = "Effacer"; +"share" = "Partager"; +"set_power_level" = "Définir le rang"; +"delete" = "Supprimer"; +// actions +"action_logout" = "Se déconnecter"; +"create_room" = "Créer un salon"; +"login" = "Connexion"; +"create_account" = "Créer un compte"; +"membership_invite" = "Invité"; +"membership_leave" = "Parti"; +"membership_ban" = "Banni"; +"num_members_one" = "%@ utilisateur"; +"num_members_other" = "%@ utilisateurs"; +"kick" = "Expulser"; +"ban" = "Bannir"; +"unban" = "Révoquer le bannissement"; +"message_unsaved_changes" = "Il y a des modifications non enregistrées. Quitter les annulera."; +// Login Screen +"login_error_already_logged_in" = "Déjà connecté"; +"login_error_must_start_http" = "L’URL doit débuter par http[s]://"; +// contacts list screen +"invitation_message" = "Je souhaiterais discuter avec vous sur Matrix. Veuillez visiter le site web http://matrix.org pour plus d’informations."; +// Settings screen +"settings_title_config" = "Configuration"; +"settings_title_notifications" = "Notifications"; +// Notification settings screen +"notification_settings_disable_all" = "Désactiver toutes les notifications"; +"notification_settings_enable_notifications" = "Activer les notifications"; +"notification_settings_enable_notifications_warning" = "Toutes les notifications sont actuellement désactivées pour tous les appareils."; +"notification_settings_global_info" = "Les paramètres de notification sont sauvegardés sur le compte utilisateur et partagés entre tous les clients qui les prennent en charge (y compris les notifications de bureau).\n\nLes règles s’appliquent dans l'ordre ; la première règle applicable définit le résultat.\nEn conséquence : les notification par mot-clé sont plus importantes que les notifications par salon, qui sont plus importantes que les notifications par expéditeur.\nEntre plusieurs règles du même type, la première dans la liste est prioritaire."; +"notification_settings_per_word_notifications" = "Notifications par mot-clé"; +"notification_settings_per_word_info" = "Les mots sont détectés sans tenir compte de la casse et peuvent contenir un joker *. Par conséquent :\nfoo détecte la chaîne foo entourée de délimiteurs de mots (par ex. ponctuation, espace et début ou fin de ligne).\nfoo* détecte tous les mots commençant par foo.\n*foo* détecte tous les mots qui contiennent les trois lettres foo."; +"notification_settings_always_notify" = "Toujours notifier"; +"notification_settings_never_notify" = "Ne jamais notifier"; +"notification_settings_word_to_match" = "mots à détecter"; +"notification_settings_highlight" = "Mettre en valeur"; +"notification_settings_custom_sound" = "Son personnalisé"; +"notification_settings_per_room_notifications" = "Notifications par salon"; +"notification_settings_per_sender_notifications" = "Notifications par expéditeur"; +"notification_settings_sender_hint" = "@utilisateur:domaine.com"; +"notification_settings_select_room" = "Choisir un salon"; +"notification_settings_other_alerts" = "Autres alertes"; +"notification_settings_contain_my_user_name" = "Me notifier par un son lorsqu’un message contient mon nom d’utilisateur"; +"notification_settings_contain_my_display_name" = "Me notifier par un son lorsqu’un message contient mon nom d’affichage"; +"notification_settings_just_sent_to_me" = "Me notifier par un son lorsqu’un message privé m’est envoyé"; +"notification_settings_invite_to_a_new_room" = "Me notifier lorsque je suis invité dans un salon"; +"notification_settings_people_join_leave_rooms" = "Me notifier lorsque des personnes rejoignent et quittent les salons"; +"notification_settings_receive_a_call" = "Me notifier lorsque je reçois un appel"; +"notification_settings_suppress_from_bots" = "Supprimer les notifications des robots"; +"notification_settings_by_default" = "Par défaut…"; +"notification_settings_notify_all_other" = "Notifier pour tous les autres messages ou salons"; +// gcm section +// call string +"call_waiting" = "En attente…"; +"call_connecting" = "Connexion…"; +"call_ended" = "Appel terminé"; +"call_ring" = "Appel…"; +"incoming_video_call" = "Appel vidéo entrant"; +"incoming_voice_call" = "Appel audio entrant"; +"call_invite_expired" = "La demande d’appel a expiré"; +// unrecognized SSL certificate +"ssl_trust" = "Faire confiance"; +"ssl_logout_account" = "Se déconnecter"; +"ssl_remain_offline" = "Ignorer"; +"ssl_fingerprint_hash" = "Empreinte (%@) :"; +"ssl_could_not_verify" = "Impossible de vérifier l’identité du serveur distant."; +"ssl_cert_not_trust" = "Cela pourrait signifier que quelqu’un de malveillant intercepte votre trafic, ou que votre téléphone ne fait pas confiance au certificat fourni par le serveur distant."; +"ssl_cert_new_account_expl" = "Si l’administrateur affirme que ce comportement est normal, assurez-vous que l’empreinte ci-dessous est identique à celle qu’il fournit."; +"ssl_unexpected_existing_expl" = "Le certificat a changé depuis qu’il a été approuvé par votre téléphone. Ce comportement est INATTENDU. Il est recommandé de ne PAS ACCEPTER ce nouveau certificat."; +"ssl_expected_existing_expl" = "Le certificat était fiable et a été remplacé par un certificat qui ne l’est pas. Le serveur a peut-être renouvelé son certificat. Contactez l’administrateur du serveur pour lui demander l’empreinte de son certificat."; +"ssl_only_accept" = "Accepter le certificat UNIQUEMENT si l’administrateur du serveur a publié une empreinte correspondant à celle ci-dessus."; +"notice_feedback" = "Événement en retour (identifiant : %@) : %@"; +"notice_location_attachment" = "position en pièce-jointe"; +// Language picker +"language_picker_title" = "Choisissez une langue"; +"language_picker_default_language" = "Défaut (%@)"; +"login_mobile_device" = "Téléphone"; +"login_tablet_device" = "Tablette"; +"login_desktop_device" = "Ordinateur"; +"notice_in_reply_to" = "En réponse à"; +"error_common_message" = "Une erreur est survenue. Veuillez réessayer ultérieurement."; +// Reply to message +"message_reply_to_sender_sent_an_image" = "a envoyé une image."; +"message_reply_to_sender_sent_a_video" = "a envoyé une vidéo."; +"message_reply_to_sender_sent_an_audio_file" = "a envoyé un fichier audio."; +"message_reply_to_sender_sent_a_file" = "a envoyé un fichier."; +"message_reply_to_message_to_reply_to_prefix" = "En réponse à"; +"login_error_resource_limit_exceeded_title" = "Limite de ressources dépassée"; +"login_error_resource_limit_exceeded_message_default" = "Ce serveur d’accueil a dépassé une de ses limites de ressources."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Ce serveur d’accueil a atteint sa limite mensuelle d’utilisateurs actifs."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nVeuillez contacter l’administrateur de votre service pour continuer à l’utiliser."; +"login_error_resource_limit_exceeded_contact_button" = "Contacter l’administrateur"; +"e2e_passphrase_create" = "Créer la phrase secrète"; +"account_error_push_not_allowed" = "Les notifications ne sont pas autorisées"; +"notice_room_third_party_revoked_invite" = "%@ a retiré l’invitation de %@ à rejoindre ce salon"; +"device_details_rename_prompt_title" = "Nom de la session"; +"notice_encryption_enabled_ok" = "%@ a activé le chiffrement de bout en bout."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ a activé le chiffrement de bout en bout (algorithme %2$@ inconnu)."; +// Notice Events with "You" +"notice_room_invite_by_you" = "Vous avez invité %@"; +"notice_room_invite_you" = "%@ vous a invité"; +"notice_room_third_party_invite_by_you" = "Vous avez envoyé une invitation à %@ pour rejoindre le salon"; +"notice_room_third_party_registered_invite_by_you" = "Vous avez accepté l’invitation pour %@"; +"notice_room_third_party_revoked_invite_by_you" = "Vous avez révoqué l’invitation pour que %@ rejoigne le salon"; +"notice_room_join_by_you" = "Vous avez rejoint le salon"; +"notice_room_leave_by_you" = "Vous êtes parti"; +"notice_room_reject_by_you" = "Vous avez rejeté l’invitation"; +"notice_room_kick_by_you" = "Vous avez expulsé %@"; +"notice_room_unban_by_you" = "Vous avez révoqué le bannissement de %@"; +"notice_room_ban_by_you" = "Vous avez banni %@"; +"notice_room_withdraw_by_you" = "Vous avez annulé l’invitation de %@"; +"notice_avatar_url_changed_by_you" = "Vous avez changé votre avatar"; +"notice_display_name_set_by_you" = "Vous avez défini votre nom d’affichage en %@"; +"notice_display_name_changed_from_by_you" = "Vous avez changé votre nom d’affichage de %@ vers %@"; +"notice_display_name_removed_by_you" = "Vous avez supprimé votre nom d’affichage"; +"notice_topic_changed_by_you" = "Vous avez changé le sujet en « %@ »."; +"notice_room_name_changed_by_you" = "Vous avez changé le nom du salon en %@."; +"notice_placed_voice_call_by_you" = "Vous avez passé un appel audio"; +"notice_placed_video_call_by_you" = "Vous avez passé un appel vidéo"; +"notice_answered_video_call_by_you" = "Vous avez répondu à l’appel"; +"notice_ended_video_call_by_you" = "Vous avez terminé l’appel"; +"notice_conference_call_request_by_you" = "Vous avez demandé une conférence VoIP"; +"notice_room_name_removed_by_you" = "Vous avez supprimé le nom du salon"; +"notice_room_topic_removed_by_you" = "Vous avez supprimé le sujet"; +"notice_event_redacted_by_you" = " par vous"; +"notice_profile_change_redacted_by_you" = "Vous avez mis à jour votre profil %@"; +"notice_room_created_by_you" = "Vous avez créé et configuré le salon."; +"notice_encryption_enabled_ok_by_you" = "Vous avez activé le chiffrement de bout en bout."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Vous avez activé le chiffrement de bout en bout (algorithme non reconnu %@)."; +"notice_redaction_by_you" = "Vous avez supprimé un évènement (id : %@)"; +"notice_room_history_visible_to_anyone_by_you" = "Vous avez rendu l’historique futur du salon visible par tout le monde."; +"notice_room_history_visible_to_members_by_you" = "Vous avez rendu l’historique futur du salon visible par tous les membres du salon."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Vous avez rendu l’historique futur du salon visible par tous les membres, à partir du moment où ils ont été invités."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Vous avez rendu l’historique futur du salon visible par tous les membres, à partir de leur arrivée."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Vous avez rendu les messages ultérieurs visibles à tous le monde, à partir de leur arrivée."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Vous avez rendu les messages ultérieurs visibles à tous le monde, à partir du moment où ils sont invités."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Vous avez rendu les messages ultérieurs visibles à tous les membres du salon."; +"notice_room_created_by_you_for_dm" = "Vous êtes arrivé."; +"notice_room_name_removed_by_you_for_dm" = "Vous avez supprimé le nom"; +"notice_room_name_changed_by_you_for_dm" = "Vous avez changé le nom en %@."; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Vous avez supprimé l’invitation de %@"; +"notice_room_third_party_invite_by_you_for_dm" = "Vous avez invité %@"; +"notice_room_name_changed_for_dm" = "%@ a changé le nom en %@."; +"notice_room_third_party_revoked_invite_for_dm" = "%@ a supprimé l’invitation de %@"; +"notice_room_third_party_invite_for_dm" = "%@ a invité %@"; +"room_left_for_dm" = "Vous êtes parti"; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ a rendu les messages ultérieurs visibles à tout le monde, à partir de leur arrivée."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ a rendu les messages ultérieurs visibles à tout le monde, à partir du moment où ils sont invités."; +"notice_room_history_visible_to_members_for_dm" = "%@ a rendu les messages ultérieurs visibles à tous les membres du salon."; +"notice_room_aliases_for_dm" = "Les alias sont : %@"; +"notice_room_power_level_intro_for_dm" = "Les rangs des membres sont :"; +"notice_room_join_rule_public_by_you_for_dm" = "Vous avez rendu le salon public."; +"notice_room_join_rule_public_by_you" = "Vous avez rendu le salon public."; +"notice_room_join_rule_public_for_dm" = "%@ a rendu le salon public."; +"notice_room_join_rule_public" = "%@ a rendu le salon public."; +"notice_room_join_rule_invite_by_you_for_dm" = "Vous avez rendu le salon joignable sur invitation exclusivement."; +"notice_room_join_rule_invite_by_you" = "Vous avez rendu le salon joignable sur invitation exclusivement."; +"notice_room_join_rule_invite_for_dm" = "%@ a rendu le salon joignable sur invitation exclusivement."; +// New +"notice_room_join_rule_invite" = "%@ a rendu le salon joignable sur invitation exclusivement."; +"notice_room_created_for_dm" = "%@ est arrivé."; +"notice_room_name_removed_for_dm" = "%@ a supprimé le nom"; +"call_more_actions_dialpad" = "Pavé de numérotation"; +"call_more_actions_transfer" = "Transférer"; +"call_more_actions_audio_use_device" = "Haut parleur de l’appareil"; +"call_more_actions_audio_use_headset" = "Utiliser les écouteurs"; +"call_more_actions_change_audio_device" = "Changer de périphérique audio"; +"call_more_actions_unhold" = "Reprendre"; +"call_more_actions_hold" = "Mettre en attente"; +"call_holded" = "Vous avez mis l’appel en attente"; +"call_remote_holded" = "%@ a mis l’appel en attente"; +"notice_declined_video_call_by_you" = "Vous avez refusé l’appel"; +"notice_declined_video_call" = "%@ a refusé l’appel"; +"resume_call" = "Reprendre"; +"call_transfer_to_user" = "Transfert à %@"; +"call_consulting_with_user" = "Consultation de %@"; +"call_video_with_user" = "Appel vidéo avec %@"; +"call_voice_with_user" = "Appel audio avec %@"; +"call_ringing" = "Sonnerie…"; +"e2e_passphrase_too_short" = "La phrase secrète est trop courte, elle doit compter au moins %d caractères"; +"microphone_access_not_granted_for_voice_message" = "Pour les messages vocaux, l’accès au microphone est indispensable mais %@ n’a pas les permissions nécessaires"; +"message_reply_to_sender_sent_a_voice_message" = "envoyer un message vocal."; +"attachment_large_with_resolution" = "Grand %@ (~%@)"; +"attachment_medium_with_resolution" = "Moyen %@ (~%@)"; +"attachment_small_with_resolution" = "Petit %@ (~%@)"; +"attachment_size_prompt_message" = "Vous pouvez désactiver ceci dans les paramètres."; +"attachment_size_prompt_title" = "Préciser la taille pour l’envoi"; +"attachment_unsupported_preview_message" = "Ce type de fichier n’est pas pris en charge."; +"attachment_unsupported_preview_title" = "Prévisualisation impossible"; +"room_displayname_all_other_members_left" = "%@ (Quitté)"; +"message_reply_to_sender_sent_their_location" = "a partagé sa localisation."; diff --git a/Riot/Assets/he.lproj/Vector.strings b/Riot/Assets/he.lproj/Vector.strings index 8b1378917..f13b3b81c 100644 --- a/Riot/Assets/he.lproj/Vector.strings +++ b/Riot/Assets/he.lproj/Vector.strings @@ -1 +1,492 @@ + + +// Call Bar +"callbar_only_single_active" = "(%@) לחץ לחזרה לשיחה"; +"ok" = "או קיי"; +"done" = "הסתיים"; +"open" = "פתח"; +"less" = "פחות"; +"more" = "יותר"; +"switch" = "החלף"; +"joined" = "הצטרף"; +"skip" = "דלג"; +"close" = "סגור"; +"sending" = "שולח"; +"send_to" = "%@ שלח אל"; +"collapse" = "צמצם"; +"rename" = "שנה שם"; +"later" = "מאוחר יותר"; +"active_call_details" = "(%@) שיחה פעילה"; +"active_call" = "שיחה פעילה"; +"video" = "וידאו"; +"voice" = "קול"; +"camera" = "מצלמה"; +"preview" = "תצוגה מקדימה"; +"accept" = "אשר"; +"decline" = "בטל"; +"join" = "הצטרף"; +"save" = "שמור"; +"cancel" = "בטל/י"; +"retry" = "נסה שוב"; +"invite" = "הזמן"; +"remove" = "הסר"; +"leave" = "צא"; +"start" = "התחל"; +"create" = "צור"; +"continue" = "המשך"; +"back" = "אחורה"; +"next" = "הבא"; + +// Actions +"view" = "הצג"; +"warning" = "אזהרה"; +"title_groups" = "קהילות"; +"title_rooms" = "חדרים"; +"title_people" = "אנשים"; + +// Current session + +"key_verification_self_verify_current_session_alert_title" = "מאמת קישור זה"; +"device_verification_self_verify_start_waiting" = "ממתין…"; +"device_verification_self_verify_start_information" = "השתמש בקישור זה לאימות החדש שלך, מתן אישור זה יאפשר הצפנת הודעות."; +"device_verification_self_verify_alert_validate_action" = "מאומת"; + +// Mark: Incoming +"device_verification_incoming_title" = "בקשת אימות נכנסת"; +"device_verification_start_use_legacy_action" = "השתמש באימות רגיל"; +"device_verification_start_verify_button" = "מתחיל באימות"; + +// MARK: Start +"device_verification_start_title" = "מאומת ע\"י השוואת תבנית טקסט קצרה"; +"device_verification_incoming_description_2" = "אימות קישור זה יסמן אותו כבטוח, ובנוסף ישמש את הקישור שלך כבטוח לאחרים."; +"device_verification_self_verify_start_verify_action" = "מתחיל באימות"; +"device_verification_self_verify_alert_message" = "אשר את החיבור החדש שנכנס לחשבון שלך:%@"; + +// MARK: Self verification start + +// New login +"device_verification_self_verify_alert_title" = "התחברות חדשה. האם זה אתה?"; +"device_verification_start_use_legacy" = "לא מופיע כלום? לא כל המשתמשים תומכים עדיין באישור אינטראקטיבי. השתמש באישור רגיל."; +"device_verification_start_wait_partner" = "ממתין לאישור העמית…"; +"device_verification_incoming_description_1" = "וודא שקישור זה מסומן כבטוח. קישורים בטוחים של משתתפים נותנים לך שקט משמעותי כאשר עושים שימוש בהודעה מוצפנת מקצה לקצה."; +"device_verification_error_cannot_load_device" = "מידע הממשק לא יכול להיטען."; +"device_verification_cancelled_by_me" = "האישור בוטל. סיבה: %@"; +"device_verification_cancelled" = "המשתתף המרוחק ביטל את האישור."; +"device_verification_security_advice_number" = "השווה את המספרים, וודא שהם מופיעים באותו סדר."; +"device_verification_security_advice_emoji" = "השווה את הסימן הייחודי, וודא שהם מופיעים בסדר הנכון."; +"key_verification_user_title" = "אשר אותם"; +"key_verification_this_session_title" = "אשר חיבור זה"; +"key_verification_new_session_title" = "אשר את חיבורך החדש"; + +// MARK: - Device Verification +"key_verification_other_session_title" = "אשר חיבור"; +"sign_out_key_backup_in_progress_alert_cancel_action" = "אני אמתין"; + +// Mark: - Side menu + +"side_menu_reveal_action_accessibility_label" = "לוח שמאלי"; +"user_avatar_view_accessibility_hint" = "שנה תוית משתמש"; + +// Mark: - User avatar view + +"user_avatar_view_accessibility_label" = "תוית"; +"space_avatar_view_accessibility_hint" = "שנה תוית מרחב"; + +// Mark: Avatar + +"space_avatar_view_accessibility_label" = "תוית"; +"space_public_join_rule" = "מרחב ציבורי"; +"space_private_join_rule" = "מרחב פרטי"; +"space_home_show_all_rooms" = "הראה את כל החדרים"; +"space_participants_action_ban" = "אסור ממרחב זה"; +"space_participants_action_remove" = "הוסר ממרחב זה"; +"spaces_coming_soon_detail" = "תכונה זו לא הוטמעה כאן, אבל היא בדרך. כרגע, אתה יכול לעשות זאת עם %@ במחשב שלך."; +"spaces_invites_coming_soon_title" = "הזמנות יגיעו בקרוב"; +"spaces_add_rooms_coming_soon_title" = "הוספת חדרים תגיע בקרוב"; +"spaces_coming_soon_title" = "יגיע בקרוב"; +"spaces_no_member_found_detail" = "מחפש מישהו לא ב %@? בינתיים, אתה יכול להזמין אותם ל WEB או ל Desktop."; +"spaces_no_room_found_detail" = "חלק מהתוצאות עלולות להיות חסויות מכיון שהן פרטיות ואתה צריך הזמנה להצטרף אליהן."; +"spaces_suggested_room" = "מוצע"; +"space_tag" = "רווח"; +"ssl_cert_new_account_expl" = "אם מנהל המערכת אמר שזה צפוי, וודא שטביעת האצבע למטה תואמת את טביעת האצבע שסופקה על ידם."; +"ssl_cert_not_trust" = "זה יכול להצביע על כך שמישהו מפריע בצורה זדונית לתעבורה שלך, או שהטלפון שלך לא סומך על התעודה שסופקה ע\"י השרת המרוחק."; +"ssl_could_not_verify" = "לא יכול לאשר זהות שרת מרוחק."; +"ssl_expected_existing_expl" = "התעודה שונתה מתעודה בטוחה קודמת לאחת שהיא לא בטוחה. השרת חידש כנראה את התעודה שלו. צור קשר עם מנהל המערכת לקבלת טביעת אצבע."; +"ssl_logout_account" = "התנתק"; +"ssl_only_accept" = "קבל את התעודה רק אם מנהל המערכת פרסם טביעת אצבע התואמת את זו שמעל."; +"ssl_remain_offline" = "התעלם"; + +// unrecognized SSL certificate +"ssl_trust" = "בטוח"; +"ssl_unexpected_existing_expl" = "התעודה שונתה מזו שאומתה ע\"י הטלפון שלך. זה חריג לחלוטין. מומלץ לך לא לקבל את התעודה החדשה הזו."; +"start_chat" = "התחל צ'אט"; +"store_full_description" = "Element היא סוג חדש של אפליקציית הודעות ושיתוף :\n\n1. מאפשרת לך לשלוט ולשמור על פרטיותך.\n2. מאפשרת לך לתקשר עם כל אחד ברשת, ואפילו מעבר לכך ע\"י שילוב אפליקציות כמו Slack\n3. מגנה עליך מפני פרסומות, כריית מידע ופרצות אחוריות.\n4. מגנה עליך ע\"י הצפנה מקצה לקצה, תוך התחברות מוצלבת לווידוא אחרים.\n\nElement היא אפליקצית הודעות ושיתוף השונה לחלוטין מאפליקציות אחרות מכיון שהיא מבוזרת ועובדת בקוד פתוח.\n\nElement מאפשרת לך לעבוד כמשתמש עצמי או לבחור לעבוד כמשתמש אורח, כך שתהיה לך פרטיות, בעלות וניהול של המידע שלך. היא מאפשרת לך גישה פתוחה לרשת כך שאתה לא מדבר רק עם משתמשים אחרים במערכת ה Element. ובנוסף המערכת מאוד מאובטחת.\n\nElement מסוגלת לבצע כל זאת מכיון שהיא עובדת במטריצה - הסטנדרט עבור תקשורת פתוחה ומבוזרת.\n\nElement נותנת לך בקרה ע\"י כך שהיא מאפשרת לך לבחור מי יהיו המשתמשים בחדרי השיחה. מאפליקציית Element אתה יכול לבחור את צורת ההתחברות בשלוש דרכים שונות:\n\n1. קבלת חשבון חינמי בשרת ציבורי matrix.org\n2. הקמת חשבון משתמש עצמי על שרת אישי שלך.\n3. רישום והקמת חשבון על שרת אירוח של מערכת Element\n\nמדוע לבחור ב Element ?\n\nשלוט במידע שלך : אתה מחליט היכן לשמור את המידע שלך וההודעות שלך. אתה הבעלים והמנהל של המידע, ולא איזה ארגון ענק שכורה את המידע ומאפשר גישה לצד שלישי.\n\nפתיחת הודעות וחדרים: אתה יכול לדבר בחדרי הצ'אט עם כל אחד אחר ברשת, בין אם הם משתמשים ב Element או בכל אפליקציית מטריקס, ואפילו אם הם משתמשים במערכת הודעות שונה כגון Slack, IRC או XMPP.\n\nאבטחה מקסימלית: הצפנה קצה לקצה אמתית (רק אלו שנמצאים בשיחה יכולים לפענח את ההודעות), וחתימה מוצלבת ע\"מ לאשר את מכשירי המשתתפים בשיחות.\n\nתקשורת מלאה: הודעות, שיחות קול ווידאו, שיתוף קבצים, שיתוף מסכים, ומבחר של התקנות, בוטים ויישומים. בניית חדרים, קהילות, \"שמירה על קשר\" ומעקב ביצוע משימות.\n\nהיכן שאתה נמצא: הישאר בקשר היכן שאתה נמצא עם סנכרון מלא להודעות היסטוריות בכל המכשירים ובאתר בכתובת : https://element.io/app"; +"onboarding_splash_login_button_title" = "קיים ברשותי חשבון"; +"accessibility_button_label" = "כפתור"; +"callbar_only_single_active_group" = "החלק להשתתפות בשיחת הועידה (%@)"; +"callbar_return" = "חזרה"; +"callbar_only_multiple_paused" = "%@ שיחות מוחזקות"; +"callbar_only_single_paused" = "שיחה מוחזקת"; +"callbar_active_and_multiple_paused" = "שיחה אחת פעילה (%@) · %@ שיחות מוחזקות"; +"callbar_active_and_single_paused" = "שיחה 1 פעילה (%@) · שיחה 1 מוחזקת"; +"enable" = "מאופשר"; +"off" = "כבוי"; +"on" = "דולק"; +"title_favourites" = "מועדפים"; + +// Titles +"title_home" = "בית"; +// String for App Store +"store_short_description" = "צ'אט מבוזר מאובטח/Voip"; + +// No VoIP support +"no_voip_title" = "שיחה נכנסת"; +"share_extension_send_now" = "שלח עכשיו"; +"sign_out_non_existing_key_backup_sign_out_confirmation_alert_backup_action" = "גיבוי"; +"sign_out_existing_key_backup_alert_sign_out_action" = "התנתק"; + +// MARK: Sign out warning + +"sign_out_existing_key_backup_alert_title" = "האם אתה בטוח שאתה רוצה להתנתק?"; +"side_menu_action_settings" = "הגדרות"; +"side_menu_action_invite_friends" = "הזמן חברים"; +"side_menu_action_help" = "עזרה"; +"redact" = "הסר"; +"private" = "פרטי"; +"public" = "ציבורי"; +"emoji_picker_flags_category" = "דגלים"; +"emoji_picker_activity_category" = "פעילויות"; + +// MARK: Emoji picker +"emoji_picker_title" = "תגובות"; +"file_upload_error_unsupported_file_type_message" = "סוג הקובץ לא נתמך."; + +// MARK: File upload +"file_upload_error_title" = "העלאת קובץ"; +"event_formatter_message_deleted" = "ההודעה נמחקה"; +"event_formatter_group_call" = "שיחה קבוצתית"; +"event_formatter_call_end_call" = "סיום שיחה"; +"event_formatter_call_retry" = "נסה שוב"; +"event_formatter_call_answer" = "תשובה"; +"event_formatter_call_decline" = "דחה"; +"event_formatter_call_back" = "שיחה חוזרת"; +"event_formatter_call_connection_failed" = "התחברות נכשלה"; +"event_formatter_call_connecting" = "מתחבר…"; +"event_formatter_group_call_leave" = "עזוב"; +"event_formatter_group_call_join" = "הצטרף"; +"external_link_confirmation_title" = "בדוק שוב את הקישור"; +"media_type_accessibility_sticker" = "מדבקה"; +"media_type_accessibility_location" = "מיקום"; +"media_type_accessibility_video" = "וידאו"; +"media_type_accessibility_audio" = "קול"; +"media_type_accessibility_image" = "תמונה"; +"media_type_accessibility_file" = "קובץ"; +"start_voice_call" = "התחל שיחה קולית"; +"start_video_call" = "התחל שיחת וידאו"; +"settings_key_backup_button_delete" = "מחק גיבוי"; +"settings_key_backup_info_checking" = "בודק…"; +"settings_about" = "אודות"; +"settings_report_bug" = "דווח על תקלה"; +"settings_first_name" = "שם פרטי"; +"settings_user_interface" = "ממשק משתמש"; +"cancel_download" = "בטל הורדה"; +"directory_search_fail" = "איסוף המידע נכשל"; +"analytics_prompt_stop" = "הפסק לחלוק"; +"analytics_prompt_yes" = "כן, זה תקין"; +"analytics_prompt_not_now" = "לא עכשיו"; +"attachment_multiselection_original" = "גודל אמיתי"; +"auth_reset_password_success_message" = "סיסמת המערכת אופסה.\nכל החיבורים שלך נותקו ולא תקבל עידכונים.\nעלל מנת לאפשר קבל עידכונים יש צורך להתחבר למערכת מחדש."; +"auth_softlogout_clear_data_sign_out_title" = "האם אתה בטוח ?"; +"auth_softlogout_clear_data_button" = "מחק את כל המידע"; +"auth_phone_placeholder" = "מספר טלפון"; +"auth_msisdn_validation_message" = "נשלח אליך SMS עם קוד הפעלה. אנא הכנס את הקוד מטה."; +"auth_reset_password_missing_password" = "יש לעדכן סיסמא חדשה."; +"auth_reset_password_error_unauthorized" = "אימות הדוא\"ל נכשל, אנא ודא שנכנסת ללינק שנלח אל תיבת הדוא\"ל שלך"; +"auth_reset_password_next_step_button" = "כתובת הדוא\"ל שלך אומתה"; +"auth_softlogout_clear_data" = "מחק מידע אישי"; +"auth_softlogout_clear_data_sign_out" = "התנתק"; +"auth_softlogout_sign_in" = "התחבר"; +"auth_softlogout_signed_out" = "נותקת מהשרת"; +"auth_recaptcha_message" = "המערכת רוצה לאמת שאתה לא רובוט"; +"auth_msisdn_validation_error" = "אין אפשרות לאמת את מספר הטלפון."; +"auth_username_in_use" = "שם משתמש קיים"; +"auth_password_dont_match" = "הסיסמאות לא זהות"; +"auth_phone_in_use" = "מספר טלפון כבר בשימוש"; +"auth_email_in_use" = "כתובת דוא\"ל כבר בשימוש"; +"auth_missing_email_or_phone" = "חסר כתובת דוא\"ל או מספר טלפון"; +"auth_missing_phone" = "חסר מספר טלפון"; +"auth_missing_email" = "חסרה כתובת דוא\"ל"; +"auth_missing_password" = "חסרה סיסמא"; +"auth_invalid_phone" = "מספר טלפון לא תקין"; +"auth_invalid_email" = "כתובת דוא\"ל לא תקינה"; +"auth_invalid_password" = "סיסמא קצרה מדי (מינימום 6 תווים)"; +"auth_invalid_login_param" = "שם משתמש ו/או סיסמא אינם נכונים"; +"auth_repeat_password_placeholder" = "הכנס סיסמא שוב"; +"auth_optional_phone_placeholder" = "טלפון (אופציונלי)"; +"auth_email_placeholder" = "דוא\"ל"; +"auth_optional_email_placeholder" = "דוא\"ל (אופציונלי)"; +"auth_user_name_placeholder" = "שם משתמש"; +"auth_new_password_placeholder" = "סיסמא חדשה"; +"auth_password_placeholder" = "סיסמא"; +"auth_return_to_login" = "חזור למסך התחברות"; +"auth_send_reset_email" = "שלח מייל איפוס"; +"auth_skip" = "דלג"; +"auth_submit" = "אשר"; +"auth_register" = "הירשם"; + +// Authentication +"auth_login" = "התחבר"; +"onboarding_use_case_work_messaging" = "צוותים"; + +// Onboarding +"onboarding_splash_register_button_title" = "צור חשבון"; +"key_verification_verify_qr_code_scan_other_code_success_title" = "קוד אומת!"; +"key_verification_verify_qr_code_other_scan_my_code_title" = "האם משתמש אחר הצליח לסרוק את קוד ה QR?"; +"key_verification_verify_qr_code_start_emoji_action" = "בצע אימות ע\"י אימוג'י"; +"key_verification_verify_qr_code_cannot_scan_action" = "לא יכול לסרוק?"; +"key_verification_verify_qr_code_scan_code_other_device_action" = "סרוק באמצעות מכשיר זה"; +"key_verification_verify_qr_code_scan_code_action" = "סרוק את הקוד שלהם"; +"key_verification_verify_qr_code_emoji_information" = "בצע אימות ע\"י השוואת סימן ייחודי."; +"key_verification_verify_qr_code_information_other_device" = "סרוק את הקוד המופיע למטה על מנת לאמת:"; +"key_verification_verify_qr_code_information" = "סרוק את הקוד על מנת לאמת באופן בטוח כל אחד אחר."; + +// MARK: QR code + +"key_verification_verify_qr_code_title" = "מאומת באמצעות סריקה"; + +// Incoming key verification request + +"key_verification_incoming_request_incoming_alert_message" = "%@ מעוניין לאמת"; +"key_verification_tile_conclusion_warning_title" = "התחברות לא מאובטחת"; +"key_verification_tile_conclusion_done_title" = "אושר"; +"key_verification_tile_request_incoming_approval_decline" = "סורב"; +"key_verification_tile_request_incoming_approval_accept" = "התקבל"; +"key_verification_tile_request_status_accepted" = "התקבלת"; +"key_verification_tile_request_status_cancelled" = "%@ בוטל"; +"key_verification_tile_request_status_cancelled_by_me" = "ביטלת"; +"key_verification_tile_request_status_expired" = "פג תוקף"; +"key_verification_tile_request_status_waiting" = "ממתין…"; +"key_verification_tile_request_status_data_loading" = "מידע נטען…"; +"key_verification_tile_request_outgoing_title" = "אימות נשלח"; + +// Tiles + +"key_verification_tile_request_incoming_title" = "בקשת אימות"; +"key_verification_bootstrap_not_setup_message" = "אתה נדרש ראשית לבצע אתחול בהתחברות מאומתת."; + +// MARK: - Key Verification + +"key_verification_bootstrap_not_setup_title" = "שגיאה"; +"error_not_supported_on_mobile" = "אתה לא יכול לבצע זאת מנייד %@."; + + +// Generic errors +"error_invite_3pid_with_no_identity_server" = "הוסף שרת זיהוי בהגדרות שלך על מנת לשלוח הזמנה במייל."; + +// MARK: Reaction history +"reaction_history_title" = "תגובות"; +"resend" = "שלח שוב"; +"room_accessibility_video_call" = "שיחת וידאו"; +"room_accessibility_call" = "שיחה"; + +// Mark: - Room avatar view + +"room_avatar_view_accessibility_label" = "דמות"; +"invite_friends_share_text" = "שלום, דבר איתי ב%@:%@"; + +// MARK: - Invite friends + +"invite_friends_action" = "הזמן חברים ל%@"; +"favourites_empty_view_information" = "אתה יכול לבחור מספר דרכים - הדרך המהירה ביותר היא ללחוץ ולהחזיק. לחץ על הכוכב והם יופיעו כאן בצורה אוטומטית לשמירה בטוחה."; + +// MARK: - Favourites + +"favourites_empty_view_title" = "חדרים ואנשים מועדפים"; +"event_formatter_widget_added" = "יישומון %@ התווסף ע\"י %@"; +"event_formatter_widget_removed" = "יישומון %@ הוסר ע\"י %@"; + +// Events formatter +"event_formatter_member_updates" = "% שינויי חברות"; +"directory_server_placeholder" = "matrix.org"; +"directory_server_type_homeserver" = "הקלד שרת בית על מנת להציג רשימת חדרים ממנו"; +"directory_server_all_native_rooms" = "כל חדרי מטריקס המקוריים"; +"directory_server_all_rooms" = "כל החדרים בשרת %@"; +"directory_server_picker_title" = "בחר ספריה"; + +// Directory +"directory_title" = "ספריה"; +"image_picker_action_library" = "בחר מתוך ספריה"; + +// Image picker +"image_picker_action_camera" = "צלם תמונה"; +"media_picker_select" = "בחר"; +"media_picker_library" = "ספריה"; + +// Media picker +"media_picker_title" = "ספרית מדיה"; +"receipt_status_read" = "קרא: "; + +// Read Receipts +"read_receipts_list" = "קרא רשימת קבלות"; + +// Group rooms +"group_rooms_filter_rooms" = "סינון חדרי קהילה"; +"group_participants_invited_section" = "מוזמן"; +"group_participants_invite_malformed_id" = "מזהה לא תקין. צריך להיות מזהה חוקי כמו 'localpart:domain@'"; +"group_participants_invite_malformed_id_title" = "שגיאת הזמנה"; +"group_participants_invite_another_user" = "חפש/הזמן לפי מספר או שם משתמש"; +"group_participants_filter_members" = "סינון חברי קהילה"; +"group_participants_invite_prompt_msg" = "האם אתה בטוח שברצונך להוסיף את %@ לקבוצה זו?"; +"group_participants_invite_prompt_title" = "אישור"; +"group_participants_remove_prompt_msg" = "האם אתה בטוח שברצונך להסיר את %@ מקבוצה זו?"; +"group_participants_remove_prompt_title" = "אישור"; +"group_participants_leave_prompt_msg" = "האם אתה בטוח שאתה רוצה לעזוב את הקבוצה?"; +"group_participants_leave_prompt_title" = "עזוב קבוצה"; + +// Group participants +"group_participants_add_participant" = "הוסף משתתף"; +"group_invitation_format" = "%@ הזמין אותך להצטרף לקהילה זו"; +"group_home_multi_rooms_format" = "% חדרים"; +"group_home_one_room_format" = "חדר 1"; +"group_home_multi_members_format" = "% חברים"; + +// Group Home +"group_home_one_member_format" = "חבר 1"; +"group_details_rooms" = "חדרים"; +"device_verification_emoji_pin" = "סיכה"; +"device_verification_emoji_folder" = "תיקייה"; +"device_verification_emoji_headphones" = "אוזניות"; +"device_verification_emoji_anchor" = "עוגן"; +"device_verification_emoji_bell" = "פעמון"; +"device_verification_emoji_trumpet" = "חצוצרה"; +"device_verification_emoji_guitar" = "גיטרה"; +"device_verification_emoji_ball" = "כדור"; +"device_verification_emoji_trophy" = "טרופי"; +"device_verification_emoji_rocket" = "טיל"; +"device_verification_emoji_aeroplane" = "מטוס"; +"device_verification_emoji_bicycle" = "אופניים"; +"device_verification_emoji_train" = "רכבת"; +"device_verification_emoji_flag" = "דגל"; +"device_verification_emoji_telephone" = "טלפון"; +"device_verification_emoji_hammer" = "פטיש"; +"device_verification_emoji_key" = "מפתח"; +"device_verification_emoji_lock" = "מנעול"; +"device_verification_emoji_scissors" = "מספריים"; +"device_verification_emoji_paperclip" = "אטב"; +"device_verification_emoji_pencil" = "עיפרון"; +"device_verification_emoji_book" = "ספר"; +"device_verification_emoji_light bulb" = "נורה"; +"device_verification_emoji_gift" = "שי"; +"device_verification_emoji_clock" = "שעון"; +"device_verification_emoji_hourglass" = "שעון חול"; +"device_verification_emoji_umbrella" = "מטריה"; +"device_verification_emoji_thumbs up" = "אגודלים למעלה"; +"device_verification_emoji_santa" = "סנטה"; +"device_verification_emoji_spanner" = "מפתח ברגים"; +"device_verification_emoji_glasses" = "משקפיים"; +"device_verification_emoji_hat" = "כובע"; +"device_verification_emoji_robot" = "רובוט"; +"device_verification_emoji_smiley" = "חייכן"; +"device_verification_emoji_heart" = "לב"; +"device_verification_emoji_cake" = "עוגה"; +"device_verification_emoji_pizza" = "פיצה"; +"device_verification_emoji_corn" = "תירס"; +"device_verification_emoji_strawberry" = "תות שדה"; +"device_verification_emoji_apple" = "תפוח"; +"device_verification_emoji_banana" = "בננה"; +"device_verification_emoji_fire" = "אש"; +"device_verification_emoji_cloud" = "ענן"; +"device_verification_emoji_moon" = "ירח"; +"device_verification_emoji_globe" = "כדור הארץ"; +"device_verification_emoji_mushroom" = "פטריה"; +"device_verification_emoji_cactus" = "קקטוס"; +"device_verification_emoji_tree" = "עץ"; +"device_verification_emoji_flower" = "פרח"; +"device_verification_emoji_butterfly" = "פרפר"; +"device_verification_emoji_octopus" = "תמנון"; +"device_verification_emoji_fish" = "דג"; +"device_verification_emoji_turtle" = "צב"; +"device_verification_emoji_penguin" = "פינגו'ין"; +"device_verification_emoji_rooster" = "תרנגול"; +"device_verification_emoji_panda" = "פנדה"; +"device_verification_emoji_rabbit" = "ארנבת"; +"device_verification_emoji_elephant" = "פיל"; +"device_verification_emoji_pig" = "חזיר"; +"device_verification_emoji_unicorn" = "חד קרן"; +"device_verification_emoji_horse" = "סוס"; +"device_verification_emoji_lion" = "אריה"; +"device_verification_emoji_cat" = "חתול"; + +// MARK: Emoji +"device_verification_emoji_dog" = "כלב"; + +// User + +"key_verification_verified_user_information" = "עם משתמש זה הודעות מוצפנות מקצה לקצה ואינן ניתנות לקריאה ע\"י צד שלישי."; +"key_verification_verified_this_session_information" = "אתה יכול לקרא כעת הודעות מוצפנות במכשיר זה, ומשתמשים אחרים יידעו שהם יכולים לסמוך על כך."; +"key_verification_verified_new_session_information" = "אתה יכול לקרא כעת הודעות מוצפנות במכשיר החדש שלך, ומשתמשים אחרים יידעו שהם יכולים לסמוך על כך."; +"key_verification_verified_other_session_information" = "אתה יכול לקרא כעת הודעות מוצפנות בקישור אחר שלך, ומשתמשים אחרים יידעו שהם יכולים לסמוך על כך."; +"key_verification_verified_new_session_title" = "קישור חדש אומת!"; +"device_verification_verified_got_it_button" = "התקבל"; + +// MARK: Verified + +// Device + +"device_verification_verified_title" = "מאומת!"; + +// Device + +"device_verification_verify_wait_partner" = "ממתין לאישור ע\"י השותף…"; +"key_verification_manually_verify_device_validate_action" = "אימות"; +"key_verification_manually_verify_device_additional_information" = "אם הם אינם תואמים, אבטחת התקשורת שלך עלולה להיפגע."; +"key_verification_manually_verify_device_key_title" = "מפתח קישור"; +"key_verification_manually_verify_device_id_title" = "מספר קישור"; +"key_verification_manually_verify_device_name_title" = "שם הקישור"; +"key_verification_manually_verify_device_instruction" = "מאושר ע\"י השוואה עם הגדרות המשתמש שלך בקישור אחר:"; + +// MARK: Manually Verify Device + +"key_verification_manually_verify_device_title" = "אמת בצורה ידנית באמצעות טקסט"; +"key_verification_verify_sas_additional_information" = "לאבטחה מקסימלית, השתמש באמצעי התקשרות בטוח אחר או בצע זאת באופן אישי."; +"key_verification_verify_sas_validate_action" = "הם תואמים"; +"key_verification_verify_sas_cancel_action" = "הם אינם תואמים"; +"key_verification_verify_sas_title_number" = "משווה מספרים"; + +// MARK: Verify + +"key_verification_verify_sas_title_emoji" = "משווה סימן"; +"device_verification_self_verify_wait_recover_secrets_checking_availability" = "בודק יכולות אימות נוספות..."; +"device_verification_self_verify_wait_recover_secrets_additional_information" = "אם אתה לא יכול להיכנס לקישור קיים"; +"device_verification_self_verify_wait_recover_secrets_with_passphrase" = "השתמש במשפט מפתח מוצפן"; +"device_verification_self_verify_wait_recover_secrets_without_passphrase" = "השתמש במפתח הצפנה"; +"device_verification_self_verify_wait_additional_information" = "זה עובד באמצעות %@ ומשתמשים בעלי יכולת חתימה מוצלבת."; +"device_verification_self_verify_wait_information" = "אמת קישור זה מאחד הקישורים האחרים שלך, פעולה זו תיתן גישה להודעות מוצפנות.\n\nהשתמש ב%@ העדכני במכשירים האחרים שלך:"; +"device_verification_self_verify_wait_new_sign_in_title" = "אמת התחברות זו"; + +// MARK: Self verification wait + +"device_verification_self_verify_wait_title" = "השלם אבטחה"; +"key_verification_self_verify_unverified_sessions_alert_validate_action" = "סקירה"; +"key_verification_self_verify_unverified_sessions_alert_message" = "אמת את כל הקישורים שלך על מנת להבטיח שהחשבון וההודעות שלך בטוחים."; + +// Unverified sessions + +"key_verification_self_verify_unverified_sessions_alert_title" = "בדוק היכן אתה מחובר"; +"key_verification_self_verify_current_session_alert_validate_action" = "אמת"; +"key_verification_self_verify_current_session_alert_message" = "משתמשים אחרים עלולים שלא לבטוח בזה."; +"onboarding_splash_page_4_message" = "אלמנט נהדר גם עבור מקום העבודה. היא זוכה לאמון על ידי הארגונים המאובטחים בעולם."; +"onboarding_splash_page_4_title_no_pun" = "הודעות עבור הקבוצה שלך."; +"onboarding_splash_page_3_message" = "מוצפן מקצה לקצה ואין צורך במספר טלפון. ללא פרסומות או עיבוד נתונים."; +"onboarding_splash_page_3_title" = "הודעה מאובטחת."; +"onboarding_splash_page_2_message" = "בחר היכן השיחות שלך נשמרות, מה שמעניק לך שליטה ועצמאות. מחובר דרך מטריקס."; +"onboarding_splash_page_2_title" = "אתה בשליטה."; +"onboarding_splash_page_1_message" = "תקשורת בטוחה ועצמאית המעניקה לך את אותה רמת פרטיות כמו שיחה פנים אל פנים בבית שלך."; +"onboarding_splash_page_1_title" = "שייך לשיחות שלך."; +"spaces_left_panel_title" = "מרחבים"; +"spaces_no_result_found_title" = "אין ממצאים"; +"spaces_empty_space_detail" = "חלק מהחדרים לא מופיעים בגלל שהם פרטיים, יש צורך בהזמנה להצטרף אליהם."; +"spaces_empty_space_title" = "למרחב הזה אין עדיין חדרים"; +"space_beta_announce_title" = "בקרוב - מרחבים"; +"space_feature_unavailable_subtitle" = "מרחבים עדיין לא קיימים עבור iOS, אפשר להשתמש בהם בממשק ה WEB והמחשב"; diff --git a/Riot/Assets/hu.lproj/Vector.strings b/Riot/Assets/hu.lproj/Vector.strings index 2b2bf8853..cca7148ed 100644 --- a/Riot/Assets/hu.lproj/Vector.strings +++ b/Riot/Assets/hu.lproj/Vector.strings @@ -229,7 +229,7 @@ "room_event_action_view_decrypted_source" = "Visszafejtett forrás megjelenítése"; "room_event_action_report" = "Tartalom bejelentése"; "room_event_action_report_prompt_reason" = "Ok amiért a tartalmat bejelented"; -"room_event_action_kick_prompt_reason" = "Ok amiér kirúgod ezt a felhasználót"; +"room_event_action_kick_prompt_reason" = "Ok amiért eltávolítod ezt a felhasználót"; "room_event_action_ban_prompt_reason" = "Ok amiért kitiltod ezt a felhasználót"; "room_event_action_report_prompt_ignore_user" = "El akarod rejteni az összes üzenetet ettől a felhasználótól?"; "room_event_action_save" = "Mentés"; @@ -1182,7 +1182,6 @@ "pin_protection_settings_section_footer" = "A PIN újbóli beállításához újra be kell lépjél és létre kell hozni egy újat."; "pin_protection_settings_enabled_forced" = "PIN engedélyezve"; "pin_protection_settings_enable_pin" = "PIN engedélyezése"; -"pin_protection_settings_section_header" = "PIN"; "pin_protection_settings_section_header_with_biometrics" = "PIN & %@"; "biometrics_mode_touch_id" = "Érintéses azonosítás"; "biometrics_mode_face_id" = "Arc felismerés"; @@ -1658,3 +1657,482 @@ "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"; +"location_sharing_open_open_street_maps" = "OpenStreetMapon való megnyitás"; +"search_filter_placeholder" = "Szűrés"; +"onboarding_use_case_existing_server_button" = "Szerverhez csatlakozás"; +"onboarding_use_case_existing_server_message" = "Csatlakoznál egy már meglévő szerverhez?"; +"onboarding_use_case_skip_button" = "kérdés kihagyása"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Még nem vagy biztos? Tudhatsz ilyent: %@"; +"onboarding_use_case_community_messaging" = "Közösségek"; +"onboarding_use_case_work_messaging" = "Csoportok"; +"onboarding_use_case_personal_messaging" = "Barátok és család"; +"onboarding_use_case_message" = "Segítünk a kapcsolatteremétésben."; +"onboarding_use_case_title" = "Kivel beszélgetnék leginkább?"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Fiók létrehozása:"; +"login_server_url_placeholder" = "URL (például https://matrix.org)"; +"login_home_server_title" = "Matrix szerver URL:"; +"login_home_server_info" = "A matrix szerver tárolja minden beszélgetésedet és felhasználói fiók adatodat"; +"login_identity_server_title" = "Azonosítási szerver URL:"; +"login_identity_server_info" = "Matrix biztosít egy azonosító szerver ami nyilvántartja, hogy melyik matrix azonosítóhoz milyen e-mail cím, stb. tartozik. Jelenleg csak a https://matrix.org az egyetlen ilyen szerver."; +"login_user_id_placeholder" = "Matrix azonosító (pl.: @bob:matrix.org vagy csak bob)"; +"login_password_placeholder" = "Jelszó"; +"login_optional_field" = "opcionális"; +"login_display_name_placeholder" = "Megjelenített név (pl. Bob Obson)"; +"login_email_info" = "Az e-mail cím megadásával más felhasználók könnyebben találhatnak meg a Matrixon és lehetőséget ad a jelszó alaphelyzetbe állítására."; +"login_email_placeholder" = "E-mail cím"; +"login_prompt_email_token" = "Kérlek add meg az e-mail érvényesítő kódot:"; +"login_error_title" = "A bejelentkezés sikertelen"; +"login_error_no_login_flow" = "Nem sikerült letölteni az azonosítási információkat erről a saját szerverről"; +"login_error_do_not_support_login_flows" = "Jelenleg nem támogatunk egyetlen bejelentkezési sémát sem azok közül amit a saját szerver ismer"; +"login_error_registration_is_not_supported" = "A regisztráció jelenleg nem támogatott"; +"login_error_forbidden" = "Érvénytelen felhasználói név/jelszó"; +"login_error_unknown_token" = "A megadott hozzáférési kód nem ismert"; +"login_error_bad_json" = "Hibás JSON"; +"login_error_not_json" = "Nem tartalmaz helyes JSON adatot"; +"login_error_limit_exceeded" = "Túl sok kérés lett elküldve"; +"login_error_user_in_use" = "Ez a felhasználói név már használatban van"; +"login_error_login_email_not_yet" = "Az e-mailben küldött hivatkozásra még nem kattintottál rá"; +"login_use_fallback" = "Alternatív oldal használata"; +"login_leave_fallback" = "Mégse"; +"login_invalid_param" = "Érvénytelen paraméter"; +"register_error_title" = "A regisztráció sikertelen"; +"login_error_forgot_password_is_not_supported" = "Az „elfelejtett jelszó” jelenleg nem támogatott"; +"login_mobile_device" = "Mobil"; +"login_tablet_device" = "Tablet"; +"login_desktop_device" = "Asztali"; +// Action +"no" = "Nem"; +"yes" = "Igen"; +"abort" = "Megszakítás"; +"discard" = "Elvetés"; +"dismiss" = "Elutasítás"; +"sign_up" = "Regisztráció"; +"submit" = "Elküldés"; +"submit_code" = "Kód küldése"; +"set_default_power_level" = "Hozzáférési szint visszaállítása"; +"set_moderator" = "Beállítás moderátornak"; +"set_admin" = "Beállítás adminisztrátornak"; +"start_chat" = "Csevegés kezdése"; +"start_voice_call" = "Hanghívás kezdése"; +"start_video_call" = "Videóhívás kezdése"; +"mention" = "Megemlítés"; +"select_account" = "Felhasználói fiók kiválasztása"; +"attach_media" = "Média fájl csatolása a könyvtárból"; +"capture_media" = "Fénykép/videó készítése"; +"invite_user" = "Matrix felhasználó meghívása"; +"reset_to_default" = "Alapértelmezés visszaállítása"; +"resend_message" = "Üzenet újraküldése"; +"select_all" = "Mind kijelölése"; +"cancel_upload" = "Feltöltés megszakítása"; +"cancel_download" = "Letöltés megszakítása"; +"show_details" = "Részletek megmutatása"; +"answer_call" = "Hívás fogadása"; +"reject_call" = "Hívás elutasítása"; +"end_call" = "Hívás befejezése"; +"ignore" = "Figyelmen kívül hagyás"; +"unignore" = "Figyelembe vétel"; +// Events formatter +"notice_avatar_changed_too" = "(a felhasználó képe is megváltozott )"; +"notice_room_name_removed" = "%@ törölte a szoba nevét"; +"notice_room_topic_removed" = "%@ törölte a témát"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " %@ által"; +"notice_event_redacted_reason" = " [indok: %@]"; +"notice_profile_change_redacted" = "%@ frissítette az adatait %@"; +"notice_room_created" = "%@ szobát készített és beállította."; +"notice_room_join_rule" = "A csatlakozási szabály: %@"; +"notice_room_power_level_intro" = "A szoba tagjainak a hozzáférési szintje:"; +"notice_room_power_level_acting_requirement" = "Mielőtt a felhasználó ezt tehetné legalább az alábbi hozzáférési szinttel kell rendelkeznie:"; +"notice_room_power_level_event_requirement" = "Az eseményekhez kapcsolódó minimális hozzáférési szintek:"; +"notice_room_aliases" = "A szoba becenevei: %@"; +"notice_room_related_groups" = "A szobához kapcsolódó csoportok: %@"; +"notice_encrypted_message" = "Titkosított üzenet"; +"notice_encryption_enabled" = "%@ bekapcsolta a végponttól végpontig titkosítást (algoritmus: %@)"; +"notice_image_attachment" = "képmelléklet"; +"notice_audio_attachment" = "hangmelléklet"; +"notice_video_attachment" = "videómelléklet"; +"notice_location_attachment" = "helyadat-melléklet"; +"notice_file_attachment" = "fájlmelléklet"; +"notice_invalid_attachment" = "érvénytelen melléklet"; +"notice_unsupported_attachment" = "Nem támogatott melléklet: %@"; +"notice_feedback" = "Visszajelzés esemény (azon.: %@): %@"; +"notice_redaction" = "%@ kitakart egy eseményt (azon.: %@)"; +"notice_error_unsupported_event" = "Nem támogatott esemény"; +"notice_error_unexpected_event" = "Nem várt esemény"; +"notice_error_unknown_event_type" = "Ismeretlen eseménytípus"; +"notice_room_history_visible_to_anyone" = "%@ a szoba jövőbeni üzeneteit mindenki számára láthatóvá tette."; +"notice_room_history_visible_to_members" = "%@ a szoba jövőbeni üzeneteit a szobában lévő minden felhasználó számára láthatóvá tette."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ a szoba jövőbeni üzeneteit a szobában lévő félhasználók számára a meghívásuk pillanatától tette láthatóvá."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ a szoba jövőbeni üzeneteit a szobában lévő felhasználók számára a csatlakozásuktól tette láthatóvá."; +"notice_crypto_unable_to_decrypt" = "** Nem sikerül visszafejteni: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "A küldő munkamenete nem küldte el a kulcsot ehhez az üzenethez."; +"notice_sticker" = "Matrica"; +"notice_in_reply_to" = "Válaszolva erre"; +// Settings +"settings" = "Beállítások"; +"settings_enable_inapp_notifications" = "Alkalmazáson belüli értesítések engedélyezése"; +"settings_enable_push_notifications" = "Leküldéses értesítések engedélyezése"; +"settings_enter_validation_token_for" = "Érvényesítő kód megadása (%@):"; +"notification_settings_room_rule_title" = "Szoba: „%@”"; +// Devices +"device_details_title" = "Munkamenet információk\n"; +"device_details_name" = "Nyilvános név\n"; +"device_details_identifier" = "Azon.\n"; +"device_details_last_seen" = "Utoljára ekkor láttuk:\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "A munkamenet nyilvános neve megjelenik azoknál az embereknél, akikkel beszélgetsz"; +"device_details_delete_prompt_title" = "Hitelesítés"; +"device_details_delete_prompt_message" = "A művelethez további hitelesítés szükséges.\nA továbblépéshez add meg a jelszavadat."; +// Encryption information +"room_event_encryption_info_title" = "Végpontok közötti titkosítási információk\n\n"; +"room_event_encryption_info_event" = "Esemény információ\n"; +"room_event_encryption_info_event_user_id" = "Felhasználó azonosító\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519 azonosítási kulcs\n"; +"room_event_encryption_info_event_fingerprint_key" = "Claimed Ed25519 ujjlenyomat kulcs\n"; +"room_event_encryption_info_event_algorithm" = "Algoritmus\n"; +"room_event_encryption_info_event_session_id" = "Munkamenet-azonosító\n"; +"room_event_encryption_info_event_decryption_error" = "Visszafejtési hiba\n"; +"room_event_encryption_info_event_unencrypted" = "titkosítatlan"; +"room_event_encryption_info_event_none" = "nincs"; +"room_event_encryption_info_device" = "\nKüldő munkamenetének információi\n"; +"room_event_encryption_info_device_unknown" = "ismeretlen munkamenet\n"; +"room_event_encryption_info_device_name" = "Nyilvános név\n"; +"room_event_encryption_info_device_id" = "Azon.\n"; +"room_event_encryption_info_device_verification" = "Ellenőrzés\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519 ujjlenyomat\n"; +"room_event_encryption_info_device_verified" = "Ellenőrizve"; +"room_event_encryption_info_device_not_verified" = "NINCS ellenőrizve"; +"room_event_encryption_info_device_blocked" = "Tiltólistán"; +"room_event_encryption_info_verify" = "Ellenőriz..."; +"room_event_encryption_info_unverify" = "Ellenőrzés visszavonása"; +"room_event_encryption_info_block" = "Tiltólistára tétel"; +"room_event_encryption_info_unblock" = "Törlés a tiltólistáról"; +"room_event_encryption_verify_title" = "Munkamenet ellenőrzése\n\n"; +"room_event_encryption_verify_ok" = "Ellenőrzés"; +// Account +"account_save_changes" = "Változások mentése"; +"account_link_email" = "E-mail cím összekötése"; +"account_linked_emails" = "Hozzárendelt e-mail címek"; +"account_email_validation_title" = "Ellenőrzés folyamatban"; +"account_msisdn_validation_title" = "Ellenőrzés folyamatban"; +"account_msisdn_validation_error" = "A telefonszám ellenőrzése sikertelen."; +"account_error_display_name_change_failed" = "Megjelenítési név megváltoztatása sikertelen"; +"account_error_picture_change_failed" = "A kép megváltoztatása sikertelen"; +"account_error_matrix_session_is_not_opened" = "A Matrix munkamenet nincs megnyitva"; +"account_error_email_wrong_title" = "Érvénytelen e-mail cím"; +"account_error_email_wrong_description" = "Ez nem tűnik érvényes e-mail címnek"; +"account_error_msisdn_wrong_title" = "Érvénytelen telefonszám"; +"account_error_msisdn_wrong_description" = "Nem tűnik érvényes telefonszámnak"; +// Room creation +"room_creation_name_title" = "Szoba neve:"; +"room_creation_name_placeholder" = "(pl.: ebédCsoport)"; +"room_creation_alias_title" = "Szoba beceneve:"; +"room_creation_alias_placeholder" = "(pl.: #foo:example.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(pl.: #foo%@)"; +"room_creation_participants_title" = "Résztvevők:"; +"room_creation_participants_placeholder" = "(pl.: @bob:homeserver1; @john:homeserver2...)"; +// Room +"room_please_select" = "Kérlek válassz szobát"; +"room_error_join_failed_title" = "A szobához való csatlakozás nem sikerült"; +"room_error_join_failed_empty_room" = "Üres szobába jelenleg nem lehet belépni."; +"room_error_name_edition_not_authorized" = "A szoba nevének megváltoztatásához nincs jogosultságod"; +"room_event_encryption_verify_message" = "Ennek a munkamenet hitelességének a vizsgálatához vedd fel a kapcsolatot a tulajdonossal egy másik csatornán (pl. személyes találkozó vagy telefonhívás) és kérdezd meg, hogy amit ő lát a személyes beállításoknál mint a munkamenethez tartozó kulcs, az megegyezik az alábbi kulccsal:\n\n\tMunkamenet neve: %@\n\tMunkamenet azonosító: %@\n\tMunkamenet kulcs: %@\n\nHa egyezik akkor nyomd meg az ellenőrizve gombot alább. Ha nem egyezik, akkor valaki jogosulatlanul akarja használni a munkamenetet; talán a legjobb, ha a tiltólista gombot nyomod meg inkább.\n\nA jövőben ezen az ellenőrzési módon javítani fogunk."; +"account_email_validation_message" = "Ellenőrizd a leveleidet, és kattints a levélben lévő hivatkozásra. Ha az megvan, akkor kattints itt a tovább gombra."; +"account_email_validation_error" = "Az e-mail címet nem sikerült ellenőrizni. Ellenőrizd a leveleidet, és kattints a levélben lévő hivatkozásra. Ha az megvan, akkor kattints itt a tovább gombra"; +"account_msisdn_validation_message" = "SMS-t küldtünk az aktiváló kóddal. Add meg az aktiváló kódot alább."; +"room_error_topic_edition_not_authorized" = "Nem vagy jogosult a szoba témájának szerkesztésére"; +"room_error_cannot_load_timeline" = "Az idővonalat nem sikerült betölteni"; +"room_error_timeline_event_not_found_title" = "Az idővonali pozíciót nem sikerült letölteni"; +"room_error_timeline_event_not_found" = "Az alkalmazás megpróbált az idővonalról betölteni egy időpillanatot de nem találja"; +"room_left" = "Elhagytad a szobát"; +"room_no_power_to_create_conference_call" = "Ebben a szobában nincs jogosultságod meghívni valakit konferenciát indítani"; +"room_no_conference_call_in_encrypted_rooms" = "Titkosított szobákban a konferenciahívások nem támogatottak"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "kép elküldve."; +"message_reply_to_sender_sent_a_video" = "videó elküldve."; +"message_reply_to_sender_sent_an_audio_file" = "hangfájl elküldve."; +"message_reply_to_sender_sent_a_file" = "fájl elküldve."; +"message_reply_to_message_to_reply_to_prefix" = "Válaszolva erre"; +// Room members +"room_member_ignore_prompt" = "Biztos, hogy eltakarod ennek a felhasználónak az összes üzenetét?"; +"room_member_power_level_prompt" = "Valószínűleg nem fogod tudni visszavonni ezt a műveletet, mivel ugyanarra a szintre emeled a felhasználót mint amin te magad vagy.\nBiztos vagy benne?"; +// Attachment +"attachment_size_prompt" = "Hogy szeretnéd elküldeni:"; +"attachment_original" = "Jelenlegi méret (%@)"; +"attachment_small" = "Kicsi (~%@)"; +"attachment_medium" = "Közepes (~%@)"; +"attachment_large" = "Nagy (~%@)"; +"attachment_cancel_download" = "Megszakítod a letöltést?"; +"attachment_cancel_upload" = "Megszakítod a feltöltést?"; +"attachment_multiselection_size_prompt" = "Hogy szeretnéd elküldeni a képet:"; +"attachment_multiselection_original" = "Jelenlegi méret"; +"attachment_e2e_keys_file_prompt" = "Ez a fájl a Matrix kliensből kimentett titkosító kulcsokat tartalmaz.\nSzeretnéd megjeleníteni a fájl tartalmát vagy betöltöd a kulcsokat amiket tartalmaz?"; +"attachment_e2e_keys_import" = "Betöltés..."; +// Contacts +"contact_mx_users" = "Matrix felhasználók"; +"contact_local_contacts" = "Helyi névjegyek"; +// Groups +// Search +"search_no_results" = "Nincs találat"; +"search_searching" = "Keresés folyamatban..."; +// Time +"format_time_s" = "mp"; +"format_time_m" = "p"; +"format_time_h" = "ó"; +"format_time_d" = "n"; +// E2E import +"e2e_import_room_keys" = "Szoba kulcsok betöltése"; +"e2e_import_prompt" = "Ez a folyamat betölti azokat a titkosítási kulcsokat amiket előzőleg egy másik Matrix kliensből mentettél ki. Ez után minden olyan üzenetet vissza tudsz fejteni amit a másik eszköz vissza tud.\nA kulcsokat tartalmazó fájl jelszóval védett. Add meg itt a jelszót a fájl visszafejtéséhez."; +"e2e_import" = "Betöltés"; +"e2e_passphrase_enter" = "Jelszó megadása"; +// E2E export +"e2e_export_room_keys" = "Szoba kulcsok kimentése"; +"e2e_export_prompt" = "Ezzel a folyamattal kimentheted azokat a kulcsokat amiket a titkosított szobákban az üzenetek visszafejtésére használtál. Így később ezt a fájlt egy másik Matrix kliensbe betöltve a kliens vissza tudja fejteni ezeket az üzeneteket.\nAki el tudja olvasni a kimentett kulcsokat tartalmazó fájlt vissza fogja tudni fejteni az üzeneteket amiket látsz, ezért tartsd a fájlt biztonságosan."; +"e2e_export" = "Kiment"; +"e2e_passphrase_confirm" = "Jelszó megerősítése"; +"e2e_passphrase_empty" = "A jelszó nem lehet üres"; +"e2e_passphrase_not_match" = "A jelszavaknak egyezniük kell"; +// Others +"user_id_title" = "Felhasználói azonosító:"; +"offline" = "kapcsolat nélkül"; +"unsent" = "Elküldetlen"; +"error" = "Hiba"; +"error_common_message" = "Hiba történt. Kérlek próbáld meg később."; +"not_supported_yet" = "Jelenleg nem támogatott"; +"default" = "alapértelmezett"; +"private" = "Privát"; +"public" = "Nyilvános"; +"power_level" = "Hozzáférési szint"; +"network_error_not_reachable" = "Ellenőrizd a hálózati hozzáférésed"; +"user_id_placeholder" = "pl.: @bob:matrixszerver"; +"ssl_homeserver_url" = "Matrix szerver URL: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Videó hívásokhoz engedélyezni kell a hozzáférést a kamerához de %@ nem rendelkezik ilyen engedéllyel"; +"microphone_access_not_granted_for_call" = "Hívásokhoz engedélyezni kell a hozzáférést a mikrofonhoz, de %@ nem rendelkezik ilyen engedéllyel"; +"local_contacts_access_not_granted" = "Címjegyzékben található felhasználók feltérképezéséhez engedéllyel kell rendelkezni a címjegyzékhez, de %@ nem rendelkezik ilyen engedéllyel"; +"local_contacts_access_discovery_warning_title" = "Felhasználók keresése"; +"local_contacts_access_discovery_warning" = "Az olyan ismerősök felderítéséhez akik már használják a Matrixot, %@ el tudja küldeni a címjegyzékben található e-mail címeket és telefonszámokat az általad választott Matrix azonosítási szervernek. Ahol lehetséges a személyes adatok hash-elve lesznek - kérlek ellenőrizd az azonosítási szervered adatvédelmi szabályait."; +// Country picker +"country_picker_title" = "Válassz országot"; +// Language picker +"language_picker_title" = "Válassz nyelvet"; +"language_picker_default_language" = "Alapértelmezett (%@)"; +"notice_room_invite" = "%@ meghívta %@ felhasználót"; +"notice_room_third_party_invite" = "%@ meghívót küldött %@ felhasználónak, hogy lépjen be a szobába"; +"notice_room_third_party_registered_invite" = "%@ elfogadta a meghívást ide: %@"; +"notice_room_join" = "%@ csatlakozott"; +"notice_room_leave" = "%@ távozott"; +"notice_room_reject" = "%@ elutasította a meghívást"; +"notice_room_kick" = "%@ eltávolította: %@"; +"notice_room_unban" = "%@ visszaengedte: %@"; +"notice_room_ban" = "%@ kitiltotta: %@"; +"notice_room_withdraw" = "%@ visszavonta %@ meghívóját"; +"notice_room_reason" = ". Ok: %@"; +"notice_avatar_url_changed" = "%@ megváltoztatta a profilképét"; +"notice_display_name_set" = "%@ a becenevét %@ névre állította be"; +"notice_display_name_changed_from" = "%@ megváltoztatta a becenevét %@ névről %@ névre"; +"notice_display_name_removed" = "%@ törölte a becenevét"; +"notice_topic_changed" = "%@ megváltoztatta a témát erre: „%@”."; +"notice_room_name_changed" = "%@ megváltoztatta a szoba nevét erre: %@."; +"notice_placed_voice_call" = "%@ hanghívást kezdeményezett"; +"notice_placed_video_call" = "%@ videóhívást kezdeményezett"; +"notice_answered_video_call" = "%@ fogadta a hívást"; +"notice_ended_video_call" = "%@ befejezte a hívást"; +"notice_conference_call_request" = "%@ VoIP konferenciát kezdeményezett"; +"notice_conference_call_started" = "VoIP konferencia indult"; +"notice_conference_call_finished" = "VoIP konferencia befejeződött"; +// button names +"send" = "Küld"; +"copy_button_name" = "Másol"; +"resend" = "Újraküld"; +"redact" = "Töröl"; +"share" = "Megosztás"; +"set_power_level" = "Hozzáférési szint beállítása"; +"delete" = "Töröl"; +// actions +"action_logout" = "Kilép"; +"create_room" = "Szoba készítése"; +"login" = "Belép"; +"create_account" = "Felhasználói fiók készítés"; +"membership_invite" = "Meghívva"; +"membership_leave" = "Elhagyva"; +"membership_ban" = "Kitiltva"; +"num_members_one" = "%@ felhasználó"; +"num_members_other" = "%@ felhasználó"; +"kick" = "Eltávolítás"; +"ban" = "Kitilt"; +"unban" = "Visszaenged"; +"message_unsaved_changes" = "Mentetlen beállítások vannak. Ha kilépsz a beállítások elvesznek."; +// Login Screen +"login_error_already_logged_in" = "Már bejelentkeztél"; +"login_error_must_start_http" = "Az URL-nek http[s]:// -sel kell kezdődnie"; +// room details dialog screen +// contacts list screen +"invitation_message" = "Szeretnék veled beszélgetni a Matrix-szal. További információkért látogasd meg a http://matrix.org weboldalt."; +// Settings screen +"settings_title_config" = "Beállítások"; +"settings_title_notifications" = "Értesítések"; +// Notification settings screen +"notification_settings_disable_all" = "Minden értesítés kikapcsolása"; +"notification_settings_enable_notifications" = "Értesítések engedélyezése"; +"notification_settings_enable_notifications_warning" = "Minden értesítés tiltva van minden eszközhöz."; +"notification_settings_global_info" = "Az értesítések beállításai a felhasználói fiókhoz van elmentve és minden eszköz használhatja amelyik támogatja (beleértve az asztali értesítéseket is).\n\nA szabályok sorrendje számít; az első szabály ami illeszkedik határozza meg a viselkedést az üzenethez.\nÍgy a kulcsszó szintű értesítések fontosabbak mint a szoba szintűek amik fontosabbak mint a küldő szintű értesítések.\nHa több szabály van ugyanolyan kategóriából a listában az első szabály ami illeszkedik lesz a meghatározó."; +"notification_settings_per_word_notifications" = "Kulcsszó alapú értesítések"; +"notification_settings_per_word_info" = "A szavaknál a kis-, és nagybetű nincs megkülönböztetve és tartalmazhat „wildcard” karaktert (*). Például:\nfoo illeszkedik minden szövegre ahol a foo szó elválasztó karakterrel van körülvéve (pl.: írásjel, szóköz, sor eleje, sor vége).\nfoo* illeszkedik minden szövegre ami foo-val kezdődik.\n*foo* illeszkedik minden szövegre ami a három betűt (foo) tartalmazza."; +"notification_settings_always_notify" = "Mindig értesít"; +"notification_settings_never_notify" = "Soha ne értesítsen"; +"notification_settings_word_to_match" = "szó amire illeszkedjen"; +"notification_settings_highlight" = "Kiemel"; +"notification_settings_custom_sound" = "Egyedi hang"; +"notification_settings_per_room_notifications" = "Szoba szintű értesítések"; +"notification_settings_per_sender_notifications" = "Küldő szintű értesítések"; +"notification_settings_sender_hint" = "@felhasznalo:domain.com"; +"notification_settings_select_room" = "Válassz szobát"; +"notification_settings_other_alerts" = "További figyelmeztetések"; +"notification_settings_contain_my_user_name" = "Hangos értesítés ha az üzenet tartalmazza a nevemet"; +"notification_settings_contain_my_display_name" = "Hangos értesítés ha az üzenet a becenevemet tartalmazza"; +"notification_settings_just_sent_to_me" = "Hangos értesítés ha az üzenetet csak nekem küldték"; +"notification_settings_invite_to_a_new_room" = "Értesítés ha meghívnak egy új szobába"; +"notification_settings_people_join_leave_rooms" = "Értesítés, ha valaki belép vagy elhagy szobát"; +"notification_settings_receive_a_call" = "Értesítés, ha hívást kapok"; +"notification_settings_suppress_from_bots" = "Robotoktól való értesítések tiltása"; +"notification_settings_by_default" = "Alapértelmezetten..."; +"notification_settings_notify_all_other" = "Értesítés minden egyéb üzenethez/szobához"; +// gcm section +// call string +"call_waiting" = "Vár..."; +"call_connecting" = "Kapcsolás…"; +"call_ended" = "Hívás vége"; +"call_ring" = "Hívás..."; +"incoming_video_call" = "Érkező videó hívás"; +"incoming_voice_call" = "Érkező hang hívás"; +"call_invite_expired" = "Hívás meghívás lejárt"; +// unrecognized SSL certificate +"ssl_trust" = "Megbízhatóság"; +"ssl_logout_account" = "Kilép"; +"ssl_remain_offline" = "Figyelmen kívül hagy"; +"ssl_fingerprint_hash" = "Ujjlenyomat (%@):"; +"ssl_could_not_verify" = "A távoli szerver nem azonosítható."; +"ssl_cert_not_trust" = "Ez azt jelentheti, hogy valaki lehallgatja a forgalmat vagy a telefon nem tekinti megbízhatónak a szerver tanúsítványát."; +"ssl_cert_new_account_expl" = "Ha a szolgáltatás adminisztrátorának információi alapján ez várható, ellenőrizd az ujjlenyomatot azzal amit az adminisztrátor közölt."; +"ssl_unexpected_existing_expl" = "A tanúsítvány amit eddig a telefon elfogadott megváltozott. Ez nagyon GYANÚS. Ajánlott az új tanúsítvány ELUTASÍTÁSA."; +"ssl_expected_existing_expl" = "Az eddig elfogadott tanúsítvány egy nem elfogadottra módosult. A szerver lehet, hogy megújította a tanúsítványát. Vedd fel a kapcsolatot a szerver adminisztrátorával az új ujjlenyomat ellenőrzéséhez."; +"ssl_only_accept" = "CSAK akkor fogadd el a tanúsítványt ha a szerver adminisztrátora közzétette az ujjlenyomatot és az megegyezik az alábbival."; +"login_error_resource_limit_exceeded_title" = "Erőforrás korlát túllépés"; +"login_error_resource_limit_exceeded_message_default" = "Ez a Matrix szerver túllépte az egyik erőforrás-korlátját."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Ez a Matrix szerver elérte a havi aktív felhasználói korlátját."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nKérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával, hogy tovább használhasd."; +"login_error_resource_limit_exceeded_contact_button" = "Adminisztrátor kapcsolatfelvétel"; +// room display name +"room_displayname_empty_room" = "Üres szoba"; +"e2e_passphrase_create" = "Jelmondat készítés"; +"account_error_push_not_allowed" = "Értesítések nincsenek engedélyezve"; +"notice_room_third_party_revoked_invite" = "%@ visszavonta a a meghívót ehhez a szobához: %@"; +"device_details_rename_prompt_title" = "Munkamenet neve"; +"notice_encryption_enabled_ok" = "%@ bekapcsolta a végpontok közötti titkosítást."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ bekapcsolta a végpontok közötti titkosítást (ismeretlen algoritmus: %2$@)."; +// Notice Events with "You" +"notice_room_invite_by_you" = "Meghívtad őt: %@"; +"notice_room_invite_you" = "%@ meghívott"; +"notice_room_third_party_invite_by_you" = "Meghívót küldtél neki: %@, hogy be tudjon lépni a szobába"; +"notice_room_third_party_registered_invite_by_you" = "A meghívót ide: %@ elfogadtad"; +"notice_room_third_party_revoked_invite_by_you" = "Visszavontad a meghívót ehhez a szobához: %@"; +"notice_room_join_by_you" = "Beléptél"; +"notice_room_leave_by_you" = "Távoztál"; +"notice_room_reject_by_you" = "A meghívót elutasítottad"; +"notice_room_kick_by_you" = "Eltávolítottad őt: %@"; +"notice_room_unban_by_you" = "Visszaengedted őt: %@"; +"notice_room_ban_by_you" = "Kitiltottad őt: %@"; +"notice_room_withdraw_by_you" = "%@ meghívóját visszavontad"; +"notice_avatar_url_changed_by_you" = "A profilképedet megváltoztattad"; +"notice_display_name_set_by_you" = "A megjelenő nevedet megváltoztattad erre: %@"; +"notice_display_name_changed_from_by_you" = "A megjelenő nevedet megváltoztattad erről: %@ erre: %@"; +"notice_display_name_removed_by_you" = "A megjelenő nevedet törölted"; +"notice_topic_changed_by_you" = "A témát megváltoztattad erre: „%@”."; +"notice_room_name_changed_by_you" = "A szoba nevét megváltoztattad erre: %@."; +"notice_placed_voice_call_by_you" = "Hanghívást kezdeményeztél"; +"notice_placed_video_call_by_you" = "Videóhívást kezdeményeztél"; +"notice_answered_video_call_by_you" = "Fogadtad a hívást"; +"notice_ended_video_call_by_you" = "Befejezted a hívást"; +"notice_conference_call_request_by_you" = "VoIP konferenciát kezdeményeztél"; +"notice_room_name_removed_by_you" = "A szoba nevét törölted"; +"notice_room_topic_removed_by_you" = "A szoba témáját törölted"; +"notice_event_redacted_by_you" = " nálad"; +"notice_profile_change_redacted_by_you" = "A profilodat megváltoztattad: %@"; +"notice_room_created_by_you" = "A szobát létrehoztad és beállítottad."; +"notice_encryption_enabled_ok_by_you" = "A végpontok közötti titkosítást bekapcsoltad."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "A végpontok közötti titkosítást bekapcsoltad (az algoritmus ismeretlen: %@)."; +"notice_redaction_by_you" = "Kitakartál egy eseményt (azon.: %@)"; +"notice_room_history_visible_to_anyone_by_you" = "Láthatóvá tetted a szoba jövőbeni üzeneteit mindenki számára."; +"notice_room_history_visible_to_members_by_you" = "Láthatóvá tetted a szoba jövőbeni üzeneteit a szobában tartózkodók számára."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "A szoba jövőbeni üzeneteit a szobában lévő felhasználók számára a meghívásuk pillanatától láthatóvá tetted."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "A szoba jövőbeni üzeneteit a szobában lévő felhasználók számára a szobába való belépésük pillanatától láthatóvá tetted."; +"notice_room_name_removed_for_dm" = "%@ törölte a nevet"; +"notice_room_created_for_dm" = "%@ csatlakozott."; +// New +"notice_room_join_rule_invite" = "%@meghívásossá tette a szobát."; +"notice_room_join_rule_invite_for_dm" = "%@meghívásossá tette."; +"notice_room_join_rule_invite_by_you" = "A szobát meghívásossá tetted."; +"notice_room_join_rule_invite_by_you_for_dm" = "Meghívásossá tetted."; +"notice_room_join_rule_public" = "%@ nyilvánossá tette a szobát."; +"notice_room_join_rule_public_for_dm" = "%@ nyilvánossá tette."; +"notice_room_join_rule_public_by_you" = "A szobát nyilvánossá tetted."; +"notice_room_join_rule_public_by_you_for_dm" = "Ezt nyilvánossá tetted."; +"notice_room_power_level_intro_for_dm" = "A tagok a hozzáférési szintje:"; +"notice_room_aliases_for_dm" = "A becenevek: %@"; +"notice_room_history_visible_to_members_for_dm" = "%@ a jövőbeni üzeneteket láthatóvá tette a szobában lévő minden felhasználó számára."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ a jövőbeni üzeneteket láthatóvá tette mindenki számára a meghívásuk pillanatától."; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ a jövőbeni üzeneteket láthatóvá tette mindenki számára a belépésük pillanatától."; +"room_left_for_dm" = "Távoztál"; +"notice_room_third_party_invite_for_dm" = "%@ meghívta %@ felhasználót"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ visszavonta az ő meghívóját: %@"; +"notice_room_name_changed_for_dm" = "%@ megváltoztatta a nevet erre: %@."; +"notice_room_third_party_invite_by_you_for_dm" = "Meghívtad őt: %@"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Visszavontad az ő meghívóját: %@"; +"notice_room_name_changed_by_you_for_dm" = "Megváltoztattad a nevet erre: %@."; +"notice_room_name_removed_by_you_for_dm" = "A nevet törölted"; +"notice_room_created_by_you_for_dm" = "Beléptél."; +"notice_room_history_visible_to_members_by_you_for_dm" = "A jövőbeni üzeneteket láthatóvá tetted a szobában lévő minden felhasználó számára."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "A jövőbeni üzeneteket láthatóvá tetted mindenki számára a meghívásuk pillanatától."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "A jövőbeni üzeneteket láthatóvá tetted mindenki számára a belépésük pillanatától."; +"call_more_actions_dialpad" = "Tárcsázó számlap"; +"call_more_actions_transfer" = "Átadás"; +"call_more_actions_audio_use_device" = "Eszköz hangszóró"; +"call_more_actions_audio_use_headset" = "Fejhallgató használata"; +"call_more_actions_change_audio_device" = "Hang eszköz megváltoztatása"; +"call_more_actions_unhold" = "Folytatás"; +"call_more_actions_hold" = "Várakoztat"; +"call_holded" = "Felfüggesztette a hívást"; +"call_remote_holded" = "%@ felfüggesztette a hívást"; +"notice_declined_video_call_by_you" = "Elutasította a hívást"; +"notice_declined_video_call" = "%@ elutasította a hívást"; +"resume_call" = "Folytatás"; +"call_transfer_to_user" = "Hívásátirányítás ide: %@"; +"call_consulting_with_user" = "Konzultáció vele: %@"; +"call_video_with_user" = "Videóhívás vele: %@"; +"call_voice_with_user" = "Hanghívás vele: %@"; +"call_ringing" = "Hívás…"; +"e2e_passphrase_too_short" = "A jelmondat túl rövid (legalább %d karakter hosszúnak kell lennie)"; +"microphone_access_not_granted_for_voice_message" = "Ha hangüzenetekhez a mikrofonhoz szükséges a hozzáférés, de %@ nem rendelkezik a használatához szükséges engedéllyel"; +"message_reply_to_sender_sent_a_voice_message" = "hang üzenet elküldve."; +"attachment_large_with_resolution" = "Nagy %@ (~%@)"; +"attachment_medium_with_resolution" = "Közepes %@ (~%@)"; +"attachment_small_with_resolution" = "Kicsi %@ (~%@)"; +"attachment_size_prompt_message" = "Ezt a beállításokban kikapcsolhatod."; +"attachment_size_prompt_title" = "Méret megerősítése küldéshez"; +"room_displayname_all_other_participants_left" = "%@ (Bal)"; +"room_displayname_all_other_members_left" = "%@ (Bal)"; +"attachment_unsupported_preview_message" = "Ez a fájl típus nem támogatott."; +"attachment_unsupported_preview_title" = "Az előnézetet nem lehet megjeleníteni"; +"message_reply_to_sender_sent_their_location" = "megosztotta a földrajzi helyzetét."; +"home_syncing" = "Szinkronizálás"; +"room_participants_leave_success" = "Szobából kilépve"; +"room_participants_leave_processing" = "Távozás"; diff --git a/Riot/Assets/id.lproj/Vector.strings b/Riot/Assets/id.lproj/Vector.strings index 87c75e41c..7940ead90 100644 --- a/Riot/Assets/id.lproj/Vector.strings +++ b/Riot/Assets/id.lproj/Vector.strings @@ -1774,3 +1774,562 @@ "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"; +"onboarding_use_case_skip_button" = "melewati pertanyaan ini"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Belum yakin? Anda dapat %@"; +"onboarding_use_case_message" = "Kami akan membantu Anda untuk terhubung."; +"onboarding_use_case_community_messaging" = "Komunitas"; +"onboarding_use_case_work_messaging" = "Tim"; +"onboarding_use_case_personal_messaging" = "Teman dan keluarga"; +"onboarding_use_case_title" = "Siapa saja yang Anda sering chat?"; +"onboarding_use_case_existing_server_message" = "Ingin bergabung ke server yang sudah ada?"; +"onboarding_use_case_existing_server_button" = "Hubungkan ke server"; +"search_filter_placeholder" = "Saring"; +"location_sharing_open_open_street_maps" = "Buka di OpenStreetMap"; + + +// MARK: - MatrixKit + + + + +"notice_room_power_level_intro_for_dm" = "Level kekuatan anggota pesan langsung adalah:"; +"notice_room_power_level_intro" = "Level kekuatan anggota ruangan adalah:"; +"notice_room_join_rule_public_by_you_for_dm" = "Anda membuat pesan langsung ini publik."; +"notice_room_join_rule_public_by_you" = "Anda membuat ruangan ini publik."; +"notice_room_join_rule_public_for_dm" = "%@ membuat pesan langsung ini publik."; +"notice_room_join_rule_public" = "%@ membuat ruangan ini publik."; +"notice_room_join_rule_invite_by_you_for_dm" = "Anda membuat pesan langsung ini undangan saja."; +"notice_room_join_rule_invite_by_you" = "Anda membuat ruangan ini undangan saja."; +"notice_room_join_rule_invite_for_dm" = "%@ membuat pesan langsung ini undangan saja."; +// New +"notice_room_join_rule_invite" = "%@ membuat ruangan ini undangan saja."; +// Old +"notice_room_join_rule" = "Peraturan bergabung adalah: %@"; +"notice_room_created_for_dm" = "%@ bergabung."; +"notice_room_created" = "%@ membuat dan mengatur ruangan ini."; +"notice_profile_change_redacted" = "%@ memperbarui profilnya %@"; +"notice_event_redacted_reason" = " [alasan: %@]"; +"notice_event_redacted_by" = " dari %@"; +"notice_event_redacted" = ""; +"notice_room_topic_removed" = "%@ menghapus topik ruangan"; +"notice_room_name_removed_for_dm" = "%@ menghapus nama pesan langsung"; +"notice_room_name_removed" = "%@ menghapus nama ruangan"; + +// Events formatter +"notice_avatar_changed_too" = "(avatar juga diganti)"; +"unignore" = "Hapus Pengabaian"; +"ignore" = "Abaikan"; +"resume_call" = "Lanjutkan"; +"end_call" = "Akhiri Panggilan"; +"reject_call" = "Tolak Panggilan"; +"answer_call" = "Jawab Panggilan"; +"show_details" = "Tampilkan Detail"; +"cancel_upload" = "Batal Mengunggah"; +"cancel_download" = "Batal Mengunduh"; +"select_all" = "Pilih Semua"; +"resend_message" = "Kirim ulang pesan"; +"reset_to_default" = "Atur ulang ke bawaan"; +"invite_user" = "Undang pengguna Matrix"; +"capture_media" = "Ambil Foto/Video"; +"attach_media" = "Lampirkan Media dari Library"; +"select_account" = "Pilih sebuah akun"; +"mention" = "Sebutan"; +"start_video_call" = "Mulai Panggilan Video"; +"start_voice_call" = "Mulai Panggilan Suara"; +"start_chat" = "Mulai Mengobrol"; +"set_moderator" = "Tetapkan Moderator"; +"set_admin" = "Tetapkan Admin"; +"set_power_level" = "Atur Level Kekuatan"; +"set_default_power_level" = "Atur Ulang Level Kekuatan"; +"submit_code" = "Kirim kode"; +"submit" = "Kirim"; +"sign_up" = "Daftar"; +"dismiss" = "Lupakan"; +"discard" = "Buang"; +"abort" = "Batalkan"; +"yes" = "Ya"; + +// Action +"no" = "Tidak"; +"login_error_resource_limit_exceeded_contact_button" = "Hubungi Administrator"; +"login_error_resource_limit_exceeded_message_contact" = "\n\nSilakan hubungi service homeserver Anda untuk melanjutkan menggunakan perangkat ini."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Homeserver ini telah mencapai batas Pengguna Aktif Bulanan."; +"login_error_resource_limit_exceeded_message_default" = "Homeserver ini telah melebihi batas sumbernya."; +"login_error_resource_limit_exceeded_title" = "Melebihi Batas Sumber"; +"login_desktop_device" = "Desktop"; +"login_tablet_device" = "Tablet"; +"login_mobile_device" = "Mobile"; +"login_error_forgot_password_is_not_supported" = "Lupa kata sandi saat ini belum didukung"; +"register_error_title" = "Pendaftaran Gagal"; +"login_invalid_param" = "Parameter tidak valid"; +"login_leave_fallback" = "Batalkan"; +"login_use_fallback" = "Gunakan halaman fallback"; +"login_error_login_email_not_yet" = "Tautan email yang belum diklik"; +"login_error_user_in_use" = "Nama pengguna ini sudah dipakai"; +"login_error_limit_exceeded" = "Terlalu banyak permintaan yang dikirim"; +"login_error_not_json" = "Tidak mengandung JSON yang valid"; +"login_error_unknown_token" = "Token akses yang ditentukan tidak diketahui"; +"login_error_bad_json" = "JSON cacat"; +"login_error_forbidden" = "Nama pengguna/kata sandi tidak valid"; +"login_error_registration_is_not_supported" = "Pendaftaran saat ini tidak didukung"; +"login_error_do_not_support_login_flows" = "Saat ini kami tidak mendukung salah satu atau semua alur masuk yang ditentukan oleh homeserver ini"; +"login_error_no_login_flow" = "Kami gagal untuk menerima informasi otentikasi dari homeserver ini"; +"login_error_title" = "Login Gagal"; +"login_prompt_email_token" = "Harap masukkan token validasi email Anda:"; +"login_email_placeholder" = "Alamat email"; +"login_email_info" = "Menentukan alamat email memungkinkan pengguna lain untuk menemukan Anda di Matrix dengan lebih mudah, dan akan memberi Anda cara untuk menyetel ulang sandi di masa mendatang."; +"login_display_name_placeholder" = "Nama tampilan (mis. Bob Obson)"; +"login_optional_field" = "opsional"; +"login_password_placeholder" = "Kata sandi"; +"login_user_id_placeholder" = "ID Matrix (mis. @bob:matrix.org atau bob)"; +"login_identity_server_info" = "Matrix menyediakan server identitas untuk melacak email mana, dll., milik ID Matrix mana. Hanya https://matrix.org yang saat ini ada."; +"login_identity_server_title" = "URL server identitas:"; +"login_home_server_info" = "Homeserver Anda menyimpan semua pesan Anda dan data akun"; +"login_home_server_title" = "URL Homeserver:"; +"login_server_url_placeholder" = "URL (mis. https://matrix.org)"; + +// Login Screen +"login_create_account" = "Buat akun:"; +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "Matrix"; +"ssl_only_accept" = "HANYA terima sertifikat jika administrator server telah mempublikasikan sidik jari yang cocok dengan sidik jari di atas."; +"ssl_expected_existing_expl" = "Sertifikat ini telah berubah dari yang sebelumnya tepercaya menjadi yang tidak tepercaya. Servernya mungkin telah memperbarui sertifikatnya. Hubungi administrator server untuk sidik jari yang diharapkan."; +"ssl_unexpected_existing_expl" = "Sertifikat ini telah berubah dari yang dipercaya oleh ponsel Anda. Ini SANGAT TIDAK BIASA. Anda disarankan untuk TIDAK MENERIMA sertifikat baru ini."; +"ssl_cert_new_account_expl" = "Jika administrator server mengatakan bahwa ini diharapkan, pastikan bahwa sidik jari di bawah ini cocok dengan sidik jari yang disediakannya."; +"ssl_cert_not_trust" = "Ini bisa berarti bahwa seseorang mencegat lalu lintas Anda, atau bahwa ponsel Anda tidak mempercayai sertifikat yang disediakan oleh server jarak jauh."; +"ssl_could_not_verify" = "Tidak dapat memverifikasi identitas server jarak jauh."; +"ssl_fingerprint_hash" = "Sidik Jari (%@):"; +"ssl_remain_offline" = "Abaikan"; +"ssl_logout_account" = "Keluar"; + +// unrecognized SSL certificate +"ssl_trust" = "Percayai"; +"call_transfer_to_user" = "Pindahkan ke %@"; +"call_consulting_with_user" = "Mengkonsultasi dengan %@"; +"call_video_with_user" = "Panggilan video dengan %@"; +"call_voice_with_user" = "Panggilan suara dengan %@"; +"call_more_actions_dialpad" = "Tombol penyetel"; +"call_more_actions_transfer" = "Pindahkan"; +"call_more_actions_audio_use_device" = "Speaker Perangkat"; +"call_more_actions_change_audio_device" = "Ubah Perangkat Audio"; +"call_more_actions_unhold" = "Lanjutkan"; +"call_more_actions_hold" = "Jeda"; +"call_holded" = "Anda menjeda panggilan ini"; +"call_remote_holded" = "%@ menjeda panggilan ini"; +"call_invite_expired" = "Undangan Panggilan Kedaluwarsa"; +"incoming_voice_call" = "Masuk Panggilan Suara"; +"incoming_video_call" = "Masuk Panggilan Video"; +"call_ended" = "Panggilan diakhiri"; +"call_ringing" = "Berdering…"; + +// Settings keys + +// call string +"call_connecting" = "Menghubungkan…"; + +// gcm section +"notification_settings_notify_all_other" = "Beritahu untuk semua pesan/ruangan lainnya"; +"notification_settings_by_default" = "Secara default..."; +"notification_settings_suppress_from_bots" = "Jangan beritahu saya tentang notifikasi dari bot"; +"notification_settings_receive_a_call" = "Beritahu saya ketika saya menerima panggilan"; +"notification_settings_people_join_leave_rooms" = "Beritahu saya ketika ada orang bergabung atau meninggalkan ruangan"; +"notification_settings_invite_to_a_new_room" = "Beritahu saya ketika saya diundang ke ruangan baru"; +"notification_settings_just_sent_to_me" = "Beritahu saya dengan suara tentang pesan yang baru saja dikirim ke saya"; +"notification_settings_contain_my_display_name" = "Beritahu saya dengan suara tentang pesan yang berisi nama tampilan saya"; +"notification_settings_contain_my_user_name" = "Beritahu saya dengan suara tentang pesan yang berisi nama pengguna saya"; +"notification_settings_other_alerts" = "Pemberitahuan Lainnya"; +"notification_settings_select_room" = "Pilih sebuah ruangan"; +"notification_settings_sender_hint" = "@pengguna:domain.com"; +"notification_settings_per_sender_notifications" = "Notifikasi per pengirim"; +"notification_settings_per_room_notifications" = "Notifikasi per ruangan"; +"notification_settings_custom_sound" = "Suara kustom"; +"notification_settings_highlight" = "Highlight"; +"notification_settings_word_to_match" = "kata untuk dicocokkan"; +"notification_settings_never_notify" = "Jangan diberitahu"; +"notification_settings_always_notify" = "Selalu diberitahu"; +"notification_settings_per_word_info" = "Kata-kata tidak cocok dengan huruf besar-kecil, dan mungkin menyertakan karakter pengganti *. Jadi:\nfoo cocok dengan string foo yang dikelilingi oleh pembatas kata (misalnya tanda baca dan spasi atau awal/akhir baris).\nfoo* cocok dengan kata apa pun yang dimulai foo.\n*foo* cocok dengan kata apa pun yang menyertakan 3 huruf foo."; +"notification_settings_per_word_notifications" = "Notifikasi per kata"; +"notification_settings_global_info" = "Pengaturan notifikasi disimpan ke akun pengguna Anda dan dibagikan di antara semua client yang mendukungnya (termasuk pemberitahuan desktop).\n\nAturan diterapkan secara berurutan; aturan pertama yang cocok menentukan hasil untuk pesan.\nJadi: Notifikasi per kata lebih penting daripada notifikasi per ruangan yang lebih penting daripada notifikasi per pengirim.\nUntuk beberapa aturan dengan jenis yang sama, yang pertama dalam daftar yang cocok akan diprioritaskan."; +"notification_settings_enable_notifications_warning" = "Semua notifikasi saat ini dinonaktifkan untuk semua perangkat."; +"notification_settings_enable_notifications" = "Aktifkan notifikasi"; + +// Notification settings screen +"notification_settings_disable_all" = "Nonaktifkan semua notifikasi"; +"settings_title_notifications" = "Notifikasi"; + +// Settings screen +"settings_title_config" = "Konfigurasi"; + +// members list Screen + +// accounts list Screen + +// image size selection + +// invitation members list Screen + +// room creation dialog Screen + +// room info dialog Screen + +// room details dialog screen +"login_error_must_start_http" = "URL harus dimulai dengan http[s]://"; + +// Login Screen +"login_error_already_logged_in" = "Sudah masuk"; +"message_unsaved_changes" = "Ada perubahan yang belum disimpan. Meninggalkannya akan membuang mereka."; +"unban" = "Hilangkan Cekalan"; +"ban" = "Cekal"; +"kick" = "Keluarkan dari obrolan"; +"num_members_other" = "%@ pengguna"; +"num_members_one" = "%@ pengguna"; +"membership_ban" = "Dicekal"; +"membership_leave" = "Keluar"; +"membership_invite" = "Diundang"; +"create_account" = "Buat Akun"; +"create_room" = "Buat Ruangan"; +"login" = "Masuk"; + +// actions +"action_logout" = "Keluar"; +"delete" = "Hapus"; +"share" = "Bagikan"; +"redact" = "Hapus"; +"resend" = "Kirim Ulang"; +"copy_button_name" = "Salin"; +"send" = "Kirim"; + +// Room Screen + +// general errors + +// Home Screen + +// Last seen time + +// call events + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /console/src/main/res/values/strings.xml. +*/ + + +// titles + +// button names +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Anda membuat sejarah pesan di masa mendatang dapat dilihat oleh semuanya, sejak mereka bergabung."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Anda membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruang, sejak mereka bergabung."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Anda mengaktifkan enkripsi ujung-ke-ujung (algoritma %@ tidak dikenal)."; +"notice_room_third_party_revoked_invite" = "%@ menghilangkan undangannya %@ untuk bergabung ke ruangan ini"; +"notice_room_third_party_revoked_invite_by_you" = "Anda menghilangkan undangannya %@ untuk bergabung ke ruangan ini"; +"account_email_validation_error" = "Tidak dapat memverifikasi alamat email. Silakan cek email Anda dan tekan tautannya yang ada. Setelah selesai, tekan lanjut"; + +// contacts list screen +"invitation_message" = "Saya ingin berkomunikasi dengan Anda dengan Matrix. Silakan kunjungi ke websitenya di https://matrix.org untuk informasi selanjutnya."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Anda membuat sejarah pesan di masa mendatang dapat dilihat oleh semuanya, sejak mereka diundang."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Anda membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruangan, sejak mereka diundang."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Anda membuat pesan di masa depan dapat dilihat oleh semua anggota ruangan."; +"notice_room_history_visible_to_members_by_you" = "Anda membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruangan."; +"notice_room_history_visible_to_anyone_by_you" = "Anda membuat sejarah ruangan di masa mendatang dapat dilihat oleh siapa saja."; +"notice_redaction_by_you" = "Anda menghapus sebuah peristiwa (id: %@)"; +"notice_encryption_enabled_ok_by_you" = "Anda mengaktifkan enkripsi ujung-ke-ujung."; +"notice_room_created_by_you_for_dm" = "Anda bergabung."; +"notice_room_created_by_you" = "Anda membuat dan mengatur ruangan ini."; +"notice_profile_change_redacted_by_you" = "Anda memperbarui profil Anda %@"; +"notice_event_redacted_by_you" = " oleh Anda"; +"notice_room_topic_removed_by_you" = "Anda menghilangkan topik ruangan ini"; +"notice_room_name_removed_by_you_for_dm" = "Anda menghilangkan nama ruangan ini"; +"notice_room_name_removed_by_you" = "Anda menghilangkan nama ruangan ini"; +"notice_conference_call_request_by_you" = "Anda telah meminta konferensi VoIP"; +"notice_declined_video_call_by_you" = "Anda menolak anggilannya"; +"notice_ended_video_call_by_you" = "Anda mengakhiri pangilannya"; +"notice_answered_video_call_by_you" = "Anda menjawab panggilannya"; +"notice_placed_video_call_by_you" = "Anda melakukan panggilan video"; +"notice_placed_voice_call_by_you" = "Anda melakukan panggilan suara"; +"notice_room_name_changed_by_you_for_dm" = "Anda mengubah nama ruangan ini ke%@."; +"notice_room_name_changed_by_you" = "Anda mengubah nama ruangan ini ke %@."; +"notice_topic_changed_by_you" = "Anda mengubah topik ruangan nini ke \"%@\"."; +"notice_display_name_removed_by_you" = "Anda menghilangkan nama tampilan Anda"; +"notice_display_name_changed_from_by_you" = "Anda mengubah nama tampilan Anda dari %@ ke %@"; +"notice_display_name_set_by_you" = "Anda mengubah nama tampilan Anda ke %@"; +"notice_avatar_url_changed_by_you" = "Anda mengubah avatar Anda"; +"notice_room_withdraw_by_you" = "Anda menghilangkan undangannya %@"; +"notice_room_ban_by_you" = "Anda mencekal %@"; +"notice_room_unban_by_you" = "Anda menghilangkan cekalan %@"; +"notice_room_kick_by_you" = "Anda mengeluarkan %@"; +"notice_room_reject_by_you" = "Anda menolak undangannya"; +"notice_room_leave_by_you" = "Anda keluar"; +"notice_room_join_by_you" = "Anda bergabung"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Anda menghilangkan undangannya %@"; +"notice_room_third_party_registered_invite_by_you" = "Anda menerima undangan untuk %@"; +"notice_room_third_party_invite_by_you_for_dm" = "Anda mengundang %@"; +"notice_room_third_party_invite_by_you" = "Anda mengirim sebuah undangan ke @% untuk bergabung ke ruangan ini"; +"notice_room_invite_you" = "%@ mengundang Anda"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "Anda mengundang %@"; +"notice_conference_call_finished" = "Konferensi VoIP diakhiri"; +"notice_conference_call_started" = "Konferensi VoIP dimulai"; +"notice_conference_call_request" = "%@ telah meminta konferensi VoIP"; +"notice_declined_video_call" = "%@ menolak panggilannya"; +"notice_ended_video_call" = "%@ mengakhiri panggilannya"; +"notice_answered_video_call" = "%@ menjawab panggilannya"; +"notice_placed_video_call" = "%@ melakukan panggilan video"; +"notice_placed_voice_call" = "%@ melakukan panggilan suara"; +"notice_room_name_changed_for_dm" = "%@ mengubah nama ruangan ini ke %@."; +"notice_room_name_changed" = "%@ mengubah nama ruangan ini ke %@."; +"notice_topic_changed" = "%@ mengubah topik ruangan ini ke \"%@\"."; +"notice_display_name_removed" = "%@ menghilangkan nama tampilannya"; +"notice_display_name_changed_from" = "%@ mengubah nama tampilannya dari %@ ke %@"; +"notice_display_name_set" = "%@ mengubah nama tampilannya ke %@"; +"notice_avatar_url_changed" = "%@ mengubah avatarnya"; +"notice_room_reason" = ". Alasan: %@"; +"notice_room_withdraw" = "%@ menghilangkan undangannya %@"; +"notice_room_ban" = "%@ mencekal %@"; +"notice_room_unban" = "%@ menghilangkan cekalan %@"; +"notice_room_kick" = "%@ mengeluarkan %@"; +"notice_room_reject" = "%@ menolak undangannya"; +"notice_room_leave" = "%@ keluar"; +"notice_room_join" = "%@ bergabung"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ menghilangkan undangannya %@"; +"notice_room_third_party_registered_invite" = "%@ menerima undangan untuk %@"; +"notice_room_third_party_invite_for_dm" = "%@ mengundang %@"; +"notice_room_third_party_invite" = "%@ mengirim sebuah undangan ke %@ untuk bergabung ke ruangan ini"; + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /matrix-sdk/src/main/res/values/strings.xml. +*/ + +"notice_room_invite" = "%@ mengundang %@"; +"language_picker_default_language" = "Bawaan (%@)"; + +// Language picker +"language_picker_title" = "Pilih sebuah bahasa"; + +// Country picker +"country_picker_title" = "Pilih sebuah negara"; +"microphone_access_not_granted_for_voice_message" = "Pesan suara membutuhkan akses ke Mikrofon tetapi %@ tidak memiliki izin untuk menggunakannya"; +"local_contacts_access_discovery_warning" = "Untuk menemukan kontak Anda yang sudah menggunakan Matrix, %@ dapat mengirim alamat email dan nomor telepon di kontak Anda ke server identitas Matrix yang Anda pilih. Di mana saja yang didukung, data personal akan di-hash sebelum dikirim — mohon cek kebijakan privasi identitas server Anda untuk detail lainnya."; +"local_contacts_access_discovery_warning_title" = "Penemuan pengguna"; +"local_contacts_access_not_granted" = "Penemuan pengguna dari kontak lokal membutuhkan akses ke kontak Anda tetapi %@ tidak memiliki izin untuk menggunakannya"; +"microphone_access_not_granted_for_call" = "Panggilan membutuhkan akses ke Mikrofon tetapi %@ tidak memiliki izin untuk menggunakannya"; + +// Permissions +"camera_access_not_granted_for_call" = "Panggilan video membutuhkan akses ke Kamera tetapi %@ tidak memiliki izin untuk menggunakannya"; +"ssl_homeserver_url" = "URL Homeserver: %@"; +"user_id_placeholder" = "misal: @bob:homeserver"; +"network_error_not_reachable" = "Mohon cek koneksi jaringan Anda"; +"power_level" = "Level Kekuatan"; +"public" = "Publik"; +"private" = "Privat"; +"default" = "bawaan"; +"not_supported_yet" = "Belum didukung"; +"error_common_message" = "Sebuah kesalahan terjadi. Coba lagi nanti."; +"error" = "Gagal"; +"unsent" = "Belum Terkirim"; +"offline" = "offline"; + +// Others +"user_id_title" = "ID Pangguna:"; +"e2e_passphrase_create" = "Buat frasa sandi"; +"e2e_passphrase_not_match" = "Frasa sandi harus cocok"; +"e2e_passphrase_too_short" = "Frasa sandi terlalu pendek (Harus minimal %d karakter panjangnya)"; +"e2e_passphrase_empty" = "Frasa sandi tidak boleh kosong"; +"e2e_passphrase_confirm" = "Konfirmasi frasa sandi"; +"e2e_export" = "Ekspor"; +"e2e_export_prompt" = "Proses ini memungkinkan Anda untuk mengekspor kunci untuk pesan yang Anda telah terima di ruangan terenkripsi ke file lokal. Anda nanti akan dapat mengimpor filenya ke client Matrix lainnya di masa mendatang, supaya client itu juga bisa mendekripsi pesan yang terenkripsi.\nFile yang diekspor akan memungkinan siapa saja yang dapat membaca untuk mendekripsikan pesan terenkripsi apa saja yang Anda bisa lihat, jadi Anda harus berhati-hati untuk menyimpannya secara aman."; + +// E2E export +"e2e_export_room_keys" = "Ekspor kunci ruangan"; +"e2e_passphrase_enter" = "Masukkan frasa sandi"; +"e2e_import" = "Impor"; +"e2e_import_prompt" = "Proses ini memungkinkan Anda untuk mengimpor kunci enkripsi yang Anda punya sebelumnya yang diekspor dari client Matrix lain. Anda nanti akan dapat mendekripsi pesan apa saja yang client lain dapat mendekripsinya.\nFile yang diekspor dilindungi dengan frasa sandi. Anda seharusnya masukkan frasa sandinya di sini, untuk mendekripsi filenya."; + +// E2E import +"e2e_import_room_keys" = "Impor kunci ruangan"; +"format_time_d" = "h"; +"format_time_h" = "j"; +"format_time_m" = "m"; + +// Time +"format_time_s" = "d"; +"search_searching" = "Pencarian sedang dilakukan..."; + +// Search +"search_no_results" = "Tidak Ada Hasil"; + +// Groups +"contact_local_contacts" = "Kontak Local"; + +// Contacts +"contact_mx_users" = "Pengguna Matrix"; +"attachment_e2e_keys_import" = "Impor..."; +"attachment_e2e_keys_file_prompt" = "File ini berisi kunci enkripsi yang diimpor dari client Matrix lain.\nApakah Anda ingin menampilkan konten file atau impor kunci yang berisi?"; +"attachment_multiselection_original" = "Ukuran Sebenarnya"; +"attachment_multiselection_size_prompt" = "Apakah Anda ingin mengirim gambarnya sebagai:"; +"attachment_cancel_upload" = "Batalkan unggahannya?"; +"attachment_cancel_download" = "Batalkan unduhannya?"; +"attachment_large_with_resolution" = "Besar %@ (~%@)"; +"attachment_medium_with_resolution" = "Sedang %@ (~%@)"; +"attachment_small_with_resolution" = "Kecil %@ (~%@)"; +"attachment_large" = "Besar (~%@)"; +"attachment_medium" = "Sedang (~%@)"; +"attachment_small" = "Kecil (~%@)"; +"attachment_original" = "Ukuran Sebenarnya (%@)"; +"attachment_size_prompt_message" = "Anda dapat menonaktifkannya di pengaturan."; +"attachment_size_prompt_title" = "Konfirmasi ukuran untuk dikirim"; + +// Attachment +"attachment_size_prompt" = "Apakah Anda ingin mengirimnya sebagai:"; +"room_member_power_level_prompt" = "Anda tidak akan lagi membatalkan perubahan ini ketika Anda mempromosikan penggunanya untuk memiliki tingkat daya yang sama dengan Anda sendiri.\nApakah Anda yakin?"; + +// Room members +"room_member_ignore_prompt" = "Apakah Anda yakin untuk menyembunyikan semua pesan dari pengguna ini?"; +"message_reply_to_message_to_reply_to_prefix" = "Membalas ke"; +"message_reply_to_sender_sent_a_file" = "mengirim sebuah file."; +"message_reply_to_sender_sent_a_voice_message" = "mengirim sebuah pesan suara."; +"message_reply_to_sender_sent_an_audio_file" = "mengirim sebuah file audio."; +"message_reply_to_sender_sent_a_video" = "mengirim sebuah video."; + +// Reply to message +"message_reply_to_sender_sent_an_image" = "mengirim sebuah gambar."; +"room_no_conference_call_in_encrypted_rooms" = "Panggilan konferensi tidak didukung di ruangan terenkripsi"; +"room_no_power_to_create_conference_call" = "Anda membutuhkan izin untuk mengundang untuk memulai konferensi di ruangan ini"; +"room_left_for_dm" = "Anda keluar"; +"room_left" = "Anda meninggalkan ruangan ini"; +"room_error_timeline_event_not_found" = "Aplikasi ini sedang mencoba untuk memuat titik tertenu di linimasa ruangan ini tetapi tidak dapat menemukannya"; +"room_error_timeline_event_not_found_title" = "Gagal untuk memuat posisi linimasa"; +"room_error_cannot_load_timeline" = "Gagal untuk memuat linimasa"; +"room_error_topic_edition_not_authorized" = "Anda tidak diizinkan untuk mengubah topik ruangan ini"; +"room_error_name_edition_not_authorized" = "Anda tidak diizinkan untuk mengubah nama ruangan ini"; +"room_error_join_failed_empty_room" = "Saat ini tidak mungkin untuk bergabung ke ruangan yang kosong."; +"room_error_join_failed_title" = "Gagal untuk bergabung ke ruangan"; + +// Room +"room_please_select" = "Silakan pilih sebuah ruangan"; +"room_creation_participants_placeholder" = "(mis. @bob:homeserver1; @john:homeserver2...)"; +"room_creation_participants_title" = "Anggota:"; +"room_creation_alias_placeholder_with_homeserver" = "(mis. #foo%@)"; +"room_creation_alias_placeholder" = "(mis. #foo:example.org)"; +"room_creation_alias_title" = "Alias ruangan:"; +"room_creation_name_placeholder" = "(mis. grupMakanSiang)"; + +// Room creation +"room_creation_name_title" = "Nama ruangan:"; +"account_error_push_not_allowed" = "Notifikasi tidak diizinkan"; +"account_error_msisdn_wrong_description" = "Ini sepertinya bukan nomor telepon yang valid"; +"account_error_msisdn_wrong_title" = "Nomor Telepon Tidak Valid"; +"account_error_email_wrong_description" = "Ini sepertinya bukan alamat email yang valid"; +"account_error_email_wrong_title" = "Alamat Email Tidak Valid"; +"account_error_matrix_session_is_not_opened" = "Sesi Matrix tidak dibuka"; +"account_error_picture_change_failed" = "Penggantian gambar gagal"; +"account_error_display_name_change_failed" = "Penggantian nama tampilan gagal"; +"account_msisdn_validation_error" = "Tidak dapat memverifikasi nomor telepon."; +"account_msisdn_validation_message" = "Kami telah mengirim sebuah SMS dengan kode aktivasi. Silakan masukkan kodenya di bawah."; +"account_msisdn_validation_title" = "Menunggu Verifikasi"; +"account_email_validation_message" = "Silakan cek email Anda dan tekan tautannya yang ada. Setelah selesai, tekan lanjut."; +"account_email_validation_title" = "Menunggu Verifikasi"; +"account_linked_emails" = "Email yang tertaut"; +"account_link_email" = "Tautkan Email"; + +// Account +"account_save_changes" = "Simpan perubahan"; +"room_event_encryption_verify_ok" = "Verifikasi"; +"room_event_encryption_verify_message" = "Untuk memverifikasi bahwa sesi ini dapat dipercaya, harap hubungi pemiliknya menggunakan cara lain (misalnya secara langsung atau melalui panggilan telepon) dan tanyakan apakah kunci yang mereka lihat di Pengaturan Pengguna untuk sesi ini cocok dengan kunci di bawah ini:\n\n\tNama sesi: %@\n\tID sesi: %@\n\tKunci sesi: %@\n\nJika cocok, tekan tombol verifikasi di bawah. Jika tidak, maka orang lain mencegat sesi ini dan Anda mungkin ingin menekan tombol daftar hitam sebagai gantinya.\n\nDi masa yang mendatang proses verifikasi ini akan semakin canggih."; +"room_event_encryption_verify_title" = "Verifikasi sesi\n\n"; +"room_event_encryption_info_unblock" = "Hilangkan dari daftar hitam"; +"room_event_encryption_info_block" = "Tambahkan ke daftar hitam"; +"room_event_encryption_info_unverify" = "Hilangkan verifikasi"; +"room_event_encryption_info_verify" = "Verifikasi..."; +"room_event_encryption_info_device_blocked" = "Di dalam daftar hitam"; +"room_event_encryption_info_device_not_verified" = "TIDAK terverifikasi"; +"room_event_encryption_info_device_verified" = "Terverifikasi"; +"room_event_encryption_info_device_fingerprint" = "Sidik jari Ed25519\n"; +"room_event_encryption_info_device_verification" = "Verifikasi\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_name" = "Nama Publik\n"; +"room_event_encryption_info_device_unknown" = "sesi tidak dikenal\n"; +"room_event_encryption_info_device" = "\nInformasi sesi pengirim\n"; +"room_event_encryption_info_event_none" = "tidak ada"; +"room_event_encryption_info_event_unencrypted" = "tidak terenkripsi"; +"room_event_encryption_info_event_decryption_error" = "Kesalahan saat mendekripsi\n"; +"room_event_encryption_info_event_session_id" = "ID Sesi\n"; +"room_event_encryption_info_event_algorithm" = "Algoritma\n"; +"room_event_encryption_info_event_fingerprint_key" = "Mendapatkan kunci sidik jari Ed25519\n"; +"room_event_encryption_info_event_identity_key" = "Kunci identitas Curve25519\n"; +"room_event_encryption_info_event_user_id" = "ID Pengguna\n"; +"room_event_encryption_info_event" = "Informasi peristiwa\n"; + +// Encryption information +"room_event_encryption_info_title" = "Informasi enkripsi ujung-ke-ujung\n\n"; +"device_details_delete_prompt_message" = "Operasi ini membutuhkan otentikasi tambahan.\nUntuk melanjutkan, silakan masukkan kata sandi Anda."; +"device_details_delete_prompt_title" = "Otentikasi"; +"device_details_rename_prompt_message" = "Nama publik sesi dapat dilihat oleh orang yang berkomunikasi dengan Anda"; +"device_details_rename_prompt_title" = "Nama Sesi"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_last_seen" = "Terakhir dilihat\n"; +"device_details_identifier" = "ID\n"; +"device_details_name" = "Nama Publik\n"; + +// Devices +"device_details_title" = "Informasi sesi\n"; +"notification_settings_room_rule_title" = "Ruangan: '%@'"; +"settings_enter_validation_token_for" = "Masukkan token validasi untuk %@:"; +"settings_enable_push_notifications" = "Aktifkan notifikasi push"; +"settings_enable_inapp_notifications" = "Aktifkan notifikasi di dalam aplikasi"; + +// Settings +"settings" = "Pengaturan"; +"room_displayname_all_other_members_left" = "%@ (Keluar)"; +"room_displayname_more_than_two_members" = "%@ dan %@ lainnya"; +"room_displayname_two_members" = "%@ dan %@"; + +// room display name +"room_displayname_empty_room" = "Ruangan kosong"; +"notice_in_reply_to" = "Membalas ke"; +"notice_sticker" = "stiker"; +"notice_crypto_error_unknown_inbound_session_id" = "Sesi pengirim belum mengirim kami kunci untuk pesan ini."; +"notice_crypto_unable_to_decrypt" = "** Tidak dapat mendekripsi: %@ **"; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ membuat pesan di masa mendatang dapat dilihat oleh semuanya, sejak mereka bergabung."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ membuat sejarah pesan di masa mendatang dapat dilihat oleh semuanya, sejak mereka diundang."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruangan, sejak mereka bergabung."; +"notice_room_history_visible_to_anyone" = "%@ membuat sejarah ruangan di masa mendatang dapat dilihat oleh siapa saja."; +"notice_room_history_visible_to_members" = "%@ membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruangan."; +"notice_room_history_visible_to_members_for_dm" = "%@ membuat semua pesan di masa mendatang dapat dilihat oleh semua anggota ruangan."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruang, sejak mereka diundang."; +"notice_error_unknown_event_type" = "Tipe peristiwa yang tidak dikenal"; +"notice_error_unexpected_event" = "Peristiwa yang tidak terduga"; +"notice_error_unsupported_event" = "Peristiwa yang tidak didukung"; +"notice_redaction" = "%@ menghapus sebuah peristiwa (id: %@)"; +"notice_feedback" = "Peristiwa umpan balik (id: %@): %@"; +"notice_unsupported_attachment" = "Lampiran yang tidak didukung: %@"; +"notice_invalid_attachment" = "lampiran tidak valid"; +"notice_file_attachment" = "lampiran file"; +"notice_location_attachment" = "lampiran lokasi"; +"notice_video_attachment" = "lampiran video"; +"notice_audio_attachment" = "lampiran audio"; +"notice_image_attachment" = "lampiran gambar"; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ mengaktifkan enkripsi ujung-ke-ujung (algoritma %2$@ tidak dikenal)."; +"notice_encryption_enabled_ok" = "%@ mengaktifkan enkripsi ujung-ke-ujung."; +"notice_encrypted_message" = "Pesan terenkripsi"; +"notice_room_related_groups" = "Grup yang terkait dengan ruangan ini adalah: %@"; +"notice_room_aliases_for_dm" = "Aliasnya adalah: %@"; +"notice_room_aliases" = "Alias ruangannya adalah: %@"; +"notice_room_power_level_event_requirement" = "Tingkat daya minimum yang terkait dengan peristiwa adalah:"; +"notice_room_power_level_acting_requirement" = "Tingkat daya minimum yang harus dimiliki pengguna sebelum bertindak adalah:"; +"attachment_unsupported_preview_title" = "Tidak dapat ditampilkan"; +"attachment_unsupported_preview_message" = "Tipe file ini tidak didukung."; +"message_reply_to_sender_sent_their_location" = "telah membagikan lokasinya."; +"home_syncing" = "Menyinkronkan"; +"room_participants_leave_success" = "Telah keluar dari ruangan"; +"room_participants_leave_processing" = "Meninggalkan"; diff --git a/Riot/Assets/is.lproj/Vector.strings b/Riot/Assets/is.lproj/Vector.strings index a34e891ad..2c53b14b6 100644 --- a/Riot/Assets/is.lproj/Vector.strings +++ b/Riot/Assets/is.lproj/Vector.strings @@ -478,3 +478,9 @@ "share_extension_auth_prompt" = "Skráðu inn í aðalforrit til að deila efni"; "e2e_room_key_request_message_new_device" = "Þú bættir við nýju tæki '%@', sem er að krefjast dulritunarlykla."; "e2e_room_key_request_message" = "Ósannvottaða tækið þitt '%@' er að krefjast dulritunarlykla."; + + +// MARK: - MatrixKit + + + diff --git a/Riot/Assets/it.lproj/Vector.strings b/Riot/Assets/it.lproj/Vector.strings index abb600606..e9b963254 100644 --- a/Riot/Assets/it.lproj/Vector.strings +++ b/Riot/Assets/it.lproj/Vector.strings @@ -1629,3 +1629,483 @@ "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"; +"location_sharing_open_open_street_maps" = "Apri in OpenStreetMap"; +"search_filter_placeholder" = "Filtra"; +"onboarding_use_case_existing_server_button" = "Connetti al server"; +"onboarding_use_case_existing_server_message" = "Vuoi unirti ad un server esistente?"; +"onboarding_use_case_skip_button" = "salta questa domanda"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Ancora non lo sai? Puoi %@"; +"onboarding_use_case_community_messaging" = "Comunità"; +"onboarding_use_case_work_messaging" = "Squadre"; +"onboarding_use_case_personal_messaging" = "Amici e famiglia"; +"onboarding_use_case_message" = "Vi aiuteremo a connettervi."; +"onboarding_use_case_title" = "Con chi parlerai di più?"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Nuovo utente:"; +"login_server_url_placeholder" = "URL (es. https://matrix.org)"; +"login_home_server_title" = "URL homeserver:"; +"login_home_server_info" = "Lo storico delle conversazioni e i dati utente sono salvati sul tuo homeserver"; +"login_identity_server_title" = "URL del server d'identità:"; +"login_identity_server_info" = "Matrix fornisce dei server d'identità per associare i tuoi recapiti (es. l'indirizzo email) al tuo ID Matrix. Attualmente esiste solo il server https://matrix.org."; +"login_user_id_placeholder" = "ID Matrix (es. @gianni:matrix.org o gianni)"; +"login_password_placeholder" = "Password"; +"login_optional_field" = "opzionale"; +"login_display_name_placeholder" = "Nome completo (es. Gianni Rossi)"; +"login_email_info" = "Indicare un indirizzo email consente ad altri utenti di trovarti facilmente in Matrix, e ti da modo di resettare la password in caso di necessità."; +"login_email_placeholder" = "Indirizzo email"; +"login_prompt_email_token" = "Inserisci il token di validazione della tua email:"; +"login_error_title" = "Accesso fallito"; +"login_error_no_login_flow" = "Impossibile ottenere i dati di autenticazione da questo homeserver"; +"login_error_do_not_support_login_flows" = "Al momento non è supportato alcuno dei flussi di accesso definiti da questo homeserver"; +"login_error_registration_is_not_supported" = "La registrazione non è consentita al momento"; +"login_error_forbidden" = "Nome utente o password errati"; +"login_error_unknown_token" = "Il token di accesso inserito non è stato riconosciuto"; +"login_error_bad_json" = "JSON malformato"; +"login_error_not_json" = "Contenuto JSON non valido"; +"login_error_limit_exceeded" = "Limite di richieste superato"; +"login_error_user_in_use" = "Questo nome utente è già in uso"; +"login_error_login_email_not_yet" = "Il link inviato via email che non è stata ancora visitato"; +"login_use_fallback" = "Usa la pagina alternativa"; +"login_leave_fallback" = "Annulla"; +"login_invalid_param" = "Parametro non valido"; +"register_error_title" = "Registrazione fallita"; +"login_error_forgot_password_is_not_supported" = "Le password dimenticate non sono supportate"; +"notice_room_join_rule" = "Regole per accedere: %@"; +// contacts list screen +"invitation_message" = "Vorrei comunicare con te usando Matrix. Visita il sito web http://matrix.org per avere maggiori informazioni."; +"login_mobile_device" = "Mobile"; +"login_tablet_device" = "Tablet"; +"login_desktop_device" = "Desktop"; +"login_error_resource_limit_exceeded_title" = "Superato il limite delle risorse"; +"login_error_resource_limit_exceeded_message_default" = "Questo homeserver ha superato uno dei suoi limiti di risorsa."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Questo homeserver ha raggiunto il limite massimo di utenti attivi in un mese."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nContatta l’amministratore del sistema per continuare a usare questo servizio."; +"login_error_resource_limit_exceeded_contact_button" = "Contatta l’amministratore"; +// Action +"no" = "No"; +"yes" = "Si"; +"abort" = "Annulla"; +"discard" = "Annulla"; +"dismiss" = "Annulla"; +"sign_up" = "Registrati"; +"submit" = "Invia"; +"submit_code" = "Invia codice"; +"set_power_level" = "Imposta livello di accesso"; +"set_default_power_level" = "Ripristina livello di accesso"; +"set_moderator" = "Imposta moderatore"; +"set_admin" = "Imposta amministratore"; +"start_chat" = "Nuova chat"; +"start_voice_call" = "Nuova telefonata"; +"start_video_call" = "Nuova videochiamata"; +"mention" = "Menziona"; +"select_account" = "Seleziona un utente"; +"attach_media" = "Allega contenuto multimediale"; +"capture_media" = "Riprendi foto/video"; +"invite_user" = "Invita un utente Matrix"; +"reset_to_default" = "Ripristina predefinito"; +"resend_message" = "Reinvia messaggio"; +"select_all" = "Seleziona tutto"; +"cancel_upload" = "Annulla caricamento"; +"cancel_download" = "Annulla scaricamento"; +"show_details" = "Mostra dettagli"; +"answer_call" = "Rispondi a chiamata"; +"reject_call" = "Rifiuta chiamata"; +"end_call" = "Chiudi chiamata"; +"ignore" = "Ignora"; +"unignore" = "Non ignorare"; +// Events formatter +"notice_avatar_changed_too" = "(anche l’avatar è cambiato)"; +"notice_room_name_removed" = "%@ ha cancellato il nome del canale"; +"notice_room_topic_removed" = "%@ ha cancellato il titolo"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " da %@"; +"notice_event_redacted_reason" = " [motivo: %@]"; +"notice_profile_change_redacted" = "%@ ha aggiornato il suo profilo %@"; +"notice_room_created" = "%@ ha creato e configurato la stanza."; +"notice_room_power_level_intro" = "Il livello di accesso dei partecipanti è:"; +"notice_room_power_level_acting_requirement" = "Il livello minimo di accesso per partecipare è:"; +"notice_room_power_level_event_requirement" = "Il livello minimo di accesso per visualizzare eventi è:"; +"notice_room_aliases" = "Gli alias di questo canale sono: %@"; +"notice_room_related_groups" = "I gruppi associati a questo canale sono: %@"; +"notice_encrypted_message" = "Messaggio criptato"; +"notice_encryption_enabled" = "%@ ha attivato la crittografia end-to-end (algoritmo %@)"; +"notice_image_attachment" = "allegato immagine"; +"notice_audio_attachment" = "allegato audio"; +"notice_video_attachment" = "allegato video"; +"notice_location_attachment" = "allegato posizione"; +"notice_file_attachment" = "allegato file"; +"notice_invalid_attachment" = "allegato non valido"; +"notice_unsupported_attachment" = "Allegato non supportato: %@"; +"notice_feedback" = "Evento di feedback (id: %@): %@"; +"notice_redaction" = "%@ ha modificato un evento (id: %@)"; +"notice_error_unsupported_event" = "Evento non supportato"; +"notice_error_unexpected_event" = "Evento inatteso"; +"notice_error_unknown_event_type" = "Tipo di evento sconosciuto"; +"notice_room_history_visible_to_anyone" = "%@ ha permesso a chiunque di visualizzare lo storico della conversazione."; +"notice_room_history_visible_to_members" = "%@ ha permesso di visualizzare lo storico della conversazione solo ai partecipanti."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ ha permesso di visualizzare lo storico della conversazione solo ai partecipanti, dal momento del loro invito."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ ha permesso di visualizzare lo storico della conversazione solo ai partecipanti, dal momento della loro entrata."; +"notice_crypto_unable_to_decrypt" = "** Impossibile decriptare: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "La sessione del mittente non ci ha inviato le chiavi per questo messaggio."; +"notice_sticker" = "etichetta"; +"notice_in_reply_to" = "In risposta a"; +// room display name +"room_displayname_empty_room" = "Canale senza partecipanti"; +"room_displayname_two_members" = "%@ e %@"; +"room_displayname_more_than_two_members" = "%@ e %@ altri"; +// Settings +"settings" = "Impostazioni"; +"settings_enable_inapp_notifications" = "Abilita notifiche In-App"; +"settings_enable_push_notifications" = "Abilita notifiche push"; +"settings_enter_validation_token_for" = "Inserisci token di validazione per %@:"; +"notification_settings_room_rule_title" = "Canale: '%@'"; +// Devices +"device_details_title" = "Informazioni sessione\n"; +"device_details_name" = "Nome pubblico\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Ultimo contatto\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_title" = "Nome sessione"; +"device_details_rename_prompt_message" = "Il nome pubblico della sessione è visibile alle persone con cui comunichi"; +"device_details_delete_prompt_title" = "Autenticazione"; +"device_details_delete_prompt_message" = "Questa operazione necessita di ulteriore autenticazione.\nInserisci la tua password per procedere."; +// Encryption information +"room_event_encryption_info_title" = "Informazioni crittografia End-to-end\n\n"; +"room_event_encryption_info_event" = "Informazioni evento\n"; +"room_event_encryption_info_event_user_id" = "ID utente:\n"; +"room_event_encryption_info_event_identity_key" = "Chiave di identificazione Curve25519\n"; +"room_event_encryption_info_event_fingerprint_key" = "Richiamata chiave per l’impronta Ed25519\n"; +"room_event_encryption_info_event_algorithm" = "Algoritmo\n"; +"room_event_encryption_info_event_session_id" = "ID sessione\n"; +"room_event_encryption_info_event_decryption_error" = "Errore decrittazione\n"; +"room_event_encryption_info_event_unencrypted" = "non criptato"; +"room_event_encryption_info_event_none" = "nessuna"; +"room_event_encryption_info_device" = "\nInformazioni sessione mittente\n"; +"room_event_encryption_info_device_unknown" = "sessione sconosciuta\n"; +"room_event_encryption_info_device_name" = "Nome pubblico\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "Verifica\n"; +"room_event_encryption_info_device_fingerprint" = "Impronta Ed25519\n"; +"room_event_encryption_info_device_verified" = "Verificato"; +"room_event_encryption_info_device_not_verified" = "NON verificato"; +"room_event_encryption_info_device_blocked" = "Bloccato"; +"room_event_encryption_info_verify" = "Verifica..."; +"room_event_encryption_info_unverify" = "Annulla verifica"; +"room_event_encryption_info_block" = "Bloccato"; +"room_event_encryption_info_unblock" = "Sbloccato"; +"room_event_encryption_verify_title" = "Verifica sessione\n\n"; +"room_event_encryption_verify_message" = "Per verificare che questa sessione possa essere fidata, si prega di contattare il suo proprietario in altro modo (es. di persona o via telefonica) e chiedergli se la chiave che lui vede nelle Impostazioni Utente per la sessione sia uguale a questa:\n\n\tNome sessione: %@\n\tID sessione: %@\n\tChiave sessione: %@\n\nSe le chiavi sono identiche, premere il pulsante di verifica qui sotto. Se non lo sono, allora quancun altro sta intercettando questa sessione e probabilmente dovresti bloccarlo.\n\nIn futuro questo processo di verifica sarà più sofisticato."; +"room_event_encryption_verify_ok" = "Verifica"; +// Account +"account_save_changes" = "Salva cambiamenti"; +"account_link_email" = "Collegamento email"; +"account_linked_emails" = "Indirizzi email collegati"; +"account_email_validation_title" = "Verifica in corso"; +"account_email_validation_message" = "Controlla l'email e clicca sul collegamento che contiene. Dopo averlo fatto, clicca su continua."; +"account_email_validation_error" = "Impossibile verificare l'indirizzo email. Controlla l'email e clicca sul collegamento che contiene. Dopo averlo fatto, clicca su continua"; +"account_msisdn_validation_title" = "Verifica in corso"; +"account_msisdn_validation_message" = "Abbiamo inviato un SMS con un codice di attivazione. Inserisci il codice qui sotto."; +"account_msisdn_validation_error" = "Impossibile verificare il numero di telefono."; +"account_error_display_name_change_failed" = "Cambio del nome completo fallito"; +"account_error_picture_change_failed" = "Cambio dell'immagine fallito"; +"account_error_matrix_session_is_not_opened" = "La sessione Matrix non è attiva"; +"account_error_email_wrong_title" = "Indirizzo email non valido"; +"account_error_email_wrong_description" = "Questo non sembra essere un indirizzo email valido"; +"account_error_msisdn_wrong_title" = "Numero di telefono non valido"; +"account_error_msisdn_wrong_description" = "Questo non sembra essere un numero telefonico valido"; +"account_error_push_not_allowed" = "Notifiche non permesse"; +// Room creation +"room_creation_name_title" = "Nome canale:"; +"room_creation_name_placeholder" = "(es. gruppoPranzo)"; +"room_creation_alias_title" = "Alias canale:"; +"room_creation_alias_placeholder" = "(es. #blah:dominio.it)"; +"room_creation_alias_placeholder_with_homeserver" = "(es. #blah%@)"; +"room_creation_participants_title" = "Partecipanti:"; +"room_creation_participants_placeholder" = "(e.g. @gianni:homeserver1; @alice:homeserver2...)"; +// Room +"room_please_select" = "Seleziona un canale"; +"room_error_join_failed_title" = "Accesso al canale fallito"; +"room_error_join_failed_empty_room" = "Al momento non è possibile entrare in una stanza vuota."; +"room_error_name_edition_not_authorized" = "Non sei autorizzato a modificare il nome di questo canale"; +"room_error_topic_edition_not_authorized" = "Non sei autorizzato a modificare l'argomento di questo canale"; +"room_error_cannot_load_timeline" = "Caricamento storico dei messaggi fallito"; +"room_error_timeline_event_not_found_title" = "Caricamento della posizione nello storico fallito"; +"room_error_timeline_event_not_found" = "L'applicazione ha cercato di caricare un punto specifico dello storico dei messaggi in questo canale, ma non è riuscita a trovarlo"; +"room_left" = "Sei uscito dalla stanza"; +"room_no_power_to_create_conference_call" = "Hai bisogno del permesso per invitare a iniziare una conferenza in questo canale"; +"room_no_conference_call_in_encrypted_rooms" = "Le chiamate in conferenza non sono supportate nei canali criptati"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "immagine inviata."; +"message_reply_to_sender_sent_a_video" = "video inviato."; +"message_reply_to_sender_sent_an_audio_file" = "file audio inviato."; +"message_reply_to_sender_sent_a_file" = "file inviato."; +"message_reply_to_message_to_reply_to_prefix" = "In risposta a"; +// Room members +"room_member_ignore_prompt" = "Sei sicuro di voler nascondere tutti i messaggi da questo utente?"; +"room_member_power_level_prompt" = "Non potrai annullare questa modifica perché stai innalzando i permessi dell'utente al tuo stesso livello di accesso.\nSei sicuro?"; +// Attachment +"attachment_size_prompt" = "Vuoi inviare come:"; +"attachment_original" = "Dim. effettiva (%@)"; +"attachment_small" = "Piccolo (~%@)"; +"attachment_medium" = "Medio (~%@)"; +"attachment_large" = "Grande (~%@)"; +"attachment_cancel_download" = "Interrompi scaricamento?"; +"attachment_cancel_upload" = "Interrompi caricamento?"; +"attachment_multiselection_size_prompt" = "Vuoi inviare le immagini come:"; +"attachment_multiselection_original" = "Originali"; +"attachment_e2e_keys_file_prompt" = "Questo file contiene le chiavi crittografiche esportate da un client Matrix.\nVuoi visualizzarlo o importare le chiavi che contiene?"; +"attachment_e2e_keys_import" = "Importa..."; +// Contacts +"contact_mx_users" = "Utenti Matrix"; +"contact_local_contacts" = "Contatti locali"; +// Groups +// Search +"search_no_results" = "Nessun risultato"; +"search_searching" = "Ricerca in corso..."; +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "h"; +"format_time_d" = "d"; +// E2E import +"e2e_import_room_keys" = "Importa le chiavi del canale"; +"e2e_import_prompt" = "Questo processo ti consente di importare le chiavi di crittografia che hai precedentemente esportato da un altro client Matrix. Sarai quindi in grado di decifrare gli stessi messaggi leggibili dall'altro client.\nIl file esportato è protetto da password. Devi inserirla qui per decifrare il file."; +"e2e_import" = "Importa"; +"e2e_passphrase_enter" = "Inserisci password"; +// E2E export +"e2e_export_room_keys" = "Esporta chiavi del canale"; +"e2e_export_prompt" = "Questo processo consente di esportare in un file locale le chiavi per leggere i messaggi ricevuti in canali criptati. Sarai quindi in grado di importare il file in un altro client Matrix, in modo da rendergli possibile decriptare quei messaggi in futuro.\nIl file esportato consentirà a chiunque di decriptare tutti i messaggi che puoi leggere, quindi dovresti tenerlo al sicuro."; +"e2e_export" = "Esporta"; +"e2e_passphrase_confirm" = "Conferma password di accesso"; +"e2e_passphrase_empty" = "La password di accesso non può essere vuota"; +"e2e_passphrase_not_match" = "Le password di accesso devono corrispondere"; +"e2e_passphrase_create" = "Crea password di accesso"; +// Others +"user_id_title" = "ID utente:"; +"offline" = "non in linea"; +"unsent" = "Non inviato"; +"error" = "Errore"; +"error_common_message" = "Si è verificato un errore. Riprova più tardi."; +"not_supported_yet" = "Non ancora supportato"; +"default" = "predefinito"; +"private" = "Privato"; +"public" = "Pubblico"; +"power_level" = "Livello di accesso"; +"network_error_not_reachable" = "Verifica di essere connesso alla rete"; +"user_id_placeholder" = "es.: @gianni@homeserver"; +"ssl_homeserver_url" = "URL homeserver: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Le video chiamate necessitano di accesso alla videocamera ma %@ non ha il permesso di usarla"; +"microphone_access_not_granted_for_call" = "Le telefonate necessitano l'accesso al microfono, ma %@ non ha il permesso di usarlo"; +"local_contacts_access_not_granted" = "La ricerca degli utenti fra i contatti locali necessita l'accesso alla rubrica, ma %@ non ha il permesso di usarla"; +"local_contacts_access_discovery_warning_title" = "Ricerca utenti"; +"local_contacts_access_discovery_warning" = "Per scoprire chi fra i tuoi contatti sta già usando Matrix, %@ può inviare gli indirizzi email e i numeri telefonici della tua rubrica al tuo server d'identità Matrix. Se possibile, i dati personali vengono codificati prima di essere inviati - controlla la politica di riservatezza del tuo server d'identità per maggiori dettagli."; +// Country picker +"country_picker_title" = "Scegli un paese"; +// Language picker +"language_picker_title" = "Scegli una lingua"; +"language_picker_default_language" = "Predefinito (%@)"; +"notice_room_invite" = "%@ invitato %@"; +"notice_room_third_party_invite" = "%@ ha invitato %@ a unirsi al canale"; +"notice_room_third_party_registered_invite" = "%@ ha accettato l'invito per %@"; +"notice_room_third_party_revoked_invite" = "%@ ha ritirato l'invito per %@ a unirsi al canale"; +"notice_room_join" = "%@ si è unito al canale"; +"notice_room_leave" = "%@ ha lasciato il canale"; +"notice_room_reject" = "%@ ha rifiutato l'invito"; +"notice_room_kick" = "%@ ha rimosso %@"; +"notice_room_unban" = "%@ ha revocato il divieto di accesso a %@"; +"notice_room_ban" = "%@ ha vietato l'accesso a %@"; +"notice_room_withdraw" = "%@ ha ritirato l'invito di %@"; +"notice_room_reason" = ". Motivo: %@"; +"notice_avatar_url_changed" = "%@ ha modificato la sua immagine"; +"notice_display_name_set" = "%@ ha impostato il suo nome in %@"; +"notice_display_name_changed_from" = "%@ ha cambiato il suo nome da %@ a %@"; +"notice_display_name_removed" = "%@ ha rimosso il suo nome"; +"notice_topic_changed" = "%@ ha cambiato l'argomento in \"%@\"."; +"notice_room_name_changed" = "%@ ha cambiato il nome della stanza in %@."; +"notice_placed_voice_call" = "%@ ha effettuato una telefonata"; +"notice_placed_video_call" = "%@ ha iniziato una videochiamata"; +"notice_answered_video_call" = "%@ ha risposto alla chiamata"; +"notice_ended_video_call" = "%@ ha terminato la chiamata"; +"notice_conference_call_request" = "%@ ha richiesto una conferenza VoIP"; +"notice_conference_call_started" = "Conferenza VoIP iniziata"; +"notice_conference_call_finished" = "Conferenza VoIP terminata"; +// button names +"send" = "Invia"; +"copy_button_name" = "Copia"; +"resend" = "Invia di nuovo"; +"redact" = "Cancella"; +"share" = "Condividi"; +"delete" = "Elimina"; +// actions +"action_logout" = "Esci"; +"create_room" = "Crea un canale"; +"login" = "Entra"; +"create_account" = "Crea utente"; +"membership_invite" = "Invitati"; +"membership_leave" = "Uscito"; +"membership_ban" = "Espulso"; +"num_members_one" = "%@ utente"; +"num_members_other" = "%@ utenti"; +"kick" = "Rimuovi dalla chat"; +"ban" = "Vieta accesso"; +"unban" = "Consenti accesso"; +"message_unsaved_changes" = "Ci sono modifiche non salvate. Uscendo saranno perse."; +// Login Screen +"login_error_already_logged_in" = "Accesso già effettuato"; +"login_error_must_start_http" = "l'URL deve iniziare con http[s]://"; +// room details dialog screen +// Settings screen +"settings_title_config" = "Configurazione"; +"settings_title_notifications" = "Notifiche"; +// Notification settings screen +"notification_settings_disable_all" = "Disabilita tutte le notifiche"; +"notification_settings_enable_notifications" = "Abilita le notifiche"; +"notification_settings_enable_notifications_warning" = "Le notifiche sono al momento disabilitate per tutti i dispositivi."; +"notification_settings_global_info" = "Le impostazioni di notifica sono salvate nel tuo account e condivise fra i client che le supportano (incluse le notifiche del desktop)\n\nLe regole si applicano in ordine; la prima regola che corrisponde definisce l'esito del messaggio.\nQuindi: Le notifiche per-parola hanno la precedenza sulle notifiche per-canale, che precedono quelle per-mittente.\nSe esistono diverse regole dello stesso tipo, viene applicata la prima della lista."; +"notification_settings_per_word_notifications" = "Notifiche per-parola"; +"notification_settings_per_word_info" = "Le parole sono confrontate senza tenere conto dei caratteri maiuscoli/minuscoli, e possono includere asterischi. Quindi:\nblah corrisponde alla stringa blah con qualsiasi delimitatore di parola (es. segni di punteggiatura e spazi o segni di accapo).\nblah* corrisponde a qualsiasi parola inizi con blah.\n*blah* corrisponde a qualsiasi parola contenga le 4 lettere blah."; +"notification_settings_always_notify" = "Notifica sempre"; +"notification_settings_never_notify" = "Non notificare mai"; +"notification_settings_word_to_match" = "parola da cercare"; +"notification_settings_highlight" = "Evidenziare"; +"notification_settings_custom_sound" = "Suono personalizzato"; +"notification_settings_per_room_notifications" = "Notifiche per-canale"; +"notification_settings_per_sender_notifications" = "Notifiche per-mittente"; +"notification_settings_sender_hint" = "@utente:dominio.it"; +"notification_settings_select_room" = "Seleziona un canale"; +"notification_settings_other_alerts" = "Altri avvisi"; +"notification_settings_contain_my_user_name" = "Notifica con un suono i messaggi che contengono il mio nome utente"; +"notification_settings_contain_my_display_name" = "Notifica con un suono i messaggi che contengono il mio nome completo"; +"notification_settings_just_sent_to_me" = "Notifica con un suono i messaggi inviati solo a me"; +"notification_settings_invite_to_a_new_room" = "Notifica quando sono invitato in un nuovo canale"; +"notification_settings_people_join_leave_rooms" = "Notifica quando gli utenti entrano o escono dai canali"; +"notification_settings_receive_a_call" = "Notifica quando ricevo una chiamata"; +"notification_settings_suppress_from_bots" = "Sopprimi le notifiche dai bot"; +"notification_settings_by_default" = "Come predefinito..."; +"notification_settings_notify_all_other" = "Notifica tutti gli altri messaggi/canali"; +// gcm section +// call string +"call_waiting" = "Attendere..."; +"call_connecting" = "In connessione…"; +"call_ended" = "Chiamata terminata"; +"call_ring" = "Chiamata in corso..."; +"incoming_video_call" = "Videochiamata in arrivo"; +"incoming_voice_call" = "Telefonata in arrivo"; +"call_invite_expired" = "Tempo di chiamata scaduto"; +// unrecognized SSL certificate +"ssl_trust" = "Fidati"; +"ssl_logout_account" = "Esci"; +"ssl_remain_offline" = "Ignora"; +"ssl_fingerprint_hash" = "Impronta (%@):"; +"ssl_could_not_verify" = "Impossibile verificare l'identità del server remoto."; +"ssl_cert_not_trust" = "Potrebbe voler dire che qualcuno sta intercettando il tuo traffico, o che il tuo telefono non si fida del certificato offerto dal server remoto."; +"ssl_cert_new_account_expl" = "Se l'amministratore del server ti ha detto che questo sarebbe successo, accertati che l'impronta qui sotto corrisponda a quella che lui ti ha fornito."; +"ssl_unexpected_existing_expl" = "Il certificato è diverso da quello di cui il tuo telefono si fidava. Questo è un COMPORTAMENTO ANOMALO. Si consiglia di NON ACCETTARE questo nuovo certificato."; +"ssl_expected_existing_expl" = "Il certificato è cambiato da uno precedentemente accettato a uno che non è fidato. Il server potrebbe averlo rinnovato. Contatta l'amministratore del server per verificarne l'impronta."; +"ssl_only_accept" = "Accetta il certificato SOLAMENTE se l'amministratore del server ha pubblicato un'impronta che corrisponde a quella qui sopra."; +"notice_encryption_enabled_ok" = "%@ ha attivato la crittografia end-to-end."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ ha attivato la crittografia end-to-end (algoritmo %2$@ non riconosciuto)."; +// Notice Events with "You" +"notice_room_invite_by_you" = "Hai invitato %@"; +"notice_room_invite_you" = "%@ ti ha invitato"; +"notice_room_third_party_invite_by_you" = "Hai mandato un invito a %@ a unirsi alla stanza"; +"notice_room_third_party_registered_invite_by_you" = "Hai accettato l'invito per %@"; +"notice_room_third_party_revoked_invite_by_you" = "Hai revocato l'invito per %@ a unirsi alla stanza"; +"notice_room_join_by_you" = "Sei entrato"; +"notice_room_leave_by_you" = "Sei uscito"; +"notice_room_reject_by_you" = "Hai rifiutato l'invito"; +"notice_room_kick_by_you" = "Hai rimosso %@"; +"notice_room_unban_by_you" = "Hai riammesso %@"; +"notice_room_ban_by_you" = "Hai bandito %@"; +"notice_room_withdraw_by_you" = "Hai ritirato l'invito di %@"; +"notice_avatar_url_changed_by_you" = "Hai cambiato il tuo avatar"; +"notice_display_name_set_by_you" = "Hai impostato il tuo nome visualizzato a %@"; +"notice_display_name_changed_from_by_you" = "Hai cambiato il tuo nome visualizzato da %@ a %@"; +"notice_display_name_removed_by_you" = "Hai rimosso il tuo nome visualizzato"; +"notice_topic_changed_by_you" = "Hai cambiato l'argomento in \"%@\"."; +"notice_room_name_changed_by_you" = "Hai cambiato il nome della stanza in %@."; +"notice_placed_voice_call_by_you" = "Hai iniziato una telefonata"; +"notice_placed_video_call_by_you" = "Hai iniziato una videochiamata"; +"notice_answered_video_call_by_you" = "Hai risposto alla chiamata"; +"notice_ended_video_call_by_you" = "Hai terminato la chiamata"; +"notice_conference_call_request_by_you" = "Hai richiesto una conferenza VoIP"; +"notice_room_name_removed_by_you" = "Hai rimosso il nome della stanza"; +"notice_room_topic_removed_by_you" = "Hai rimosso l'argomento"; +"notice_event_redacted_by_you" = " da te"; +"notice_profile_change_redacted_by_you" = "Hai aggiornato il tuo profilo %@"; +"notice_room_created_by_you" = "Hai creato e configurato la stanza."; +"notice_encryption_enabled_ok_by_you" = "Hai attivato la crittografia end-to-end."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Hai attivato la crittografia end-to-end (algoritmo %@ sconosciuto)."; +"notice_redaction_by_you" = "Hai corretto un evento (id: %@)"; +"notice_room_history_visible_to_anyone_by_you" = "Hai reso visibile a chiunque la cronologia futura della stanza."; +"notice_room_history_visible_to_members_by_you" = "Hai reso visibile a tutti i membri della stanza la cronologia futura della stanza."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Hai reso visibile a tutti i membri della stanza la cronologia futura della stanza, dal momento del loro invito."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Hai reso visibile a tutti i membri della stanza la cronologia futura della stanza, dal momento della loro entrata."; +// New +"notice_room_join_rule_invite" = "%@ ha reso la stanza solo su invito."; +"notice_room_join_rule_invite_by_you" = "Hai reso la stanza solo su invito."; +"notice_room_join_rule_public" = "%@ ha reso la stanza pubblica."; +"notice_room_join_rule_public_by_you" = "Hai reso la stanza pubblica."; +"notice_room_name_removed_for_dm" = "%@ ha rimosso il nome"; +"notice_room_created_for_dm" = "%@ è entrato."; +"notice_room_join_rule_invite_for_dm" = "%@ l'ha resa solo su invito."; +"notice_room_join_rule_invite_by_you_for_dm" = "L'hai resa solo su invito."; +"notice_room_join_rule_public_for_dm" = "%@ l'ha resa pubblica."; +"notice_room_join_rule_public_by_you_for_dm" = "L'hai resa pubblica."; +"notice_room_power_level_intro_for_dm" = "Il livello di accesso dei partecipanti è:"; +"notice_room_aliases_for_dm" = "Gli alias sono: %@"; +"notice_room_history_visible_to_members_for_dm" = "%@ ha reso visibili i messaggi futuri a tutti i membri della stanza."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ ha reso visibili i messaggi futuri a chiunque, dal momento dell'invito."; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ ha reso visibili i messaggi futuri a chiunque, dal momento dell'entrata."; +"room_left_for_dm" = "Sei uscito"; +"notice_room_third_party_invite_for_dm" = "%@ ha invitato %@"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ ha revocato l'invito per %@"; +"notice_room_name_changed_for_dm" = "%@ ha cambiato il nome in %@."; +"notice_room_third_party_invite_by_you_for_dm" = "Hai invitato %@"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Hai revocato l'invito per %@"; +"notice_room_name_changed_by_you_for_dm" = "Hai cambiato il nome in %@."; +"notice_room_name_removed_by_you_for_dm" = "Hai rimosso il nome"; +"notice_room_created_by_you_for_dm" = "Sei entrato."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Hai reso visibili i messaggi futuri a tutti i membri della stanza."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Hai reso visibili i messaggi futuri a chiunque, dal momento dell'invito."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Hai reso visibili i messaggi futuri a chiunque, dal momento dell'entrata."; +"call_more_actions_dialpad" = "Tastierino numerico"; +"call_more_actions_transfer" = "Trasferisci"; +"call_more_actions_audio_use_device" = "Altoparlante dispositivo"; +"call_more_actions_audio_use_headset" = "Usa audio da cuffie"; +"call_more_actions_change_audio_device" = "Cambia dispositivo audio"; +"call_more_actions_unhold" = "Riprendi"; +"call_more_actions_hold" = "In attesa"; +"call_holded" = "Hai messo la chiamata in attesa"; +"call_remote_holded" = "%@ ha messo la chiamata in attesa"; +"notice_declined_video_call_by_you" = "Hai rifiutato la chiamata"; +"notice_declined_video_call" = "%@ ha rifiutato la chiamata"; +"resume_call" = "Riprendi"; +"call_transfer_to_user" = "Trasferisci a %@"; +"call_consulting_with_user" = "Consultazione con %@"; +"call_video_with_user" = "Videochiamata con %@"; +"call_voice_with_user" = "Telefonata con %@"; +"call_ringing" = "Sta squillando…"; +"e2e_passphrase_too_short" = "Password troppo corta (deve avere almeno %d caratteri)"; +"microphone_access_not_granted_for_voice_message" = "I messaggi vocali hanno bisogno dell'accesso al microfono, ma %@ non ha il permesso di usarlo"; +"message_reply_to_sender_sent_a_voice_message" = "inviato un messaggio vocale."; +"attachment_large_with_resolution" = "Grande %@ (~%@)"; +"attachment_medium_with_resolution" = "Medio %@ (~%@)"; +"attachment_small_with_resolution" = "Piccolo %@ (~%@)"; +"attachment_size_prompt_message" = "Puoi disattivarlo nelle impostazioni."; +"attachment_size_prompt_title" = "Conferma dimensione da inviare"; +"room_displayname_all_other_members_left" = "%@ (Uscito)"; +"attachment_unsupported_preview_message" = "Questo tipo di file non è supportato."; +"attachment_unsupported_preview_title" = "Anteprima non disponibile"; +"message_reply_to_sender_sent_their_location" = "ha condiviso la sua posizione."; +"home_syncing" = "Sincronizzazione"; +"room_participants_leave_success" = "Stanza abbandonata"; +"room_participants_leave_processing" = "Uscita in corso"; diff --git a/Riot/Assets/ja.lproj/Localizable.strings b/Riot/Assets/ja.lproj/Localizable.strings index b47601f88..74ee7d133 100644 --- a/Riot/Assets/ja.lproj/Localizable.strings +++ b/Riot/Assets/ja.lproj/Localizable.strings @@ -53,7 +53,7 @@ /** Key verification **/ -"KEY_VERIFICATION_REQUEST_FROM_USER" = "%@は検証を求めています"; +"KEY_VERIFICATION_REQUEST_FROM_USER" = "%@は認証を要求しています"; /* New message indicator on a room */ "MESSAGE_IN_X" = "%@ 内のメッセージ"; @@ -77,3 +77,31 @@ /** General **/ "NOTIFICATION" = "通知"; + +/* New message reply from a specific person in a named room. */ +"REPLY_FROM_USER_IN_ROOM_TITLE" = "%@ さんが %@ で返信"; + +/* New message reply from a specific person, not referencing a room. */ +"REPLY_FROM_USER_TITLE" = "%@ さんが返信"; + +/** Reactions **/ + +/* A user has reacted to a message, including the reaction e.g. "Alice reacted 👍". */ +"REACTION_FROM_USER" = "%@ さんが %@ とリアクション"; + +/* A user has reacted to a message, but the reaction content is unknown */ +"GENERIC_REACTION_FROM_USER" = "%@ さんがリアクション"; + +/* New file message from a specific person, not referencing a room. */ +"LOCATION_FROM_USER" = "%@ さんが位置情報を共有"; + +/* New voice message from a specific person, not referencing a room. */ +"VOICE_MESSAGE_FROM_USER" = "%@ さんが音声メッセージを送信"; + +/* New video message from a specific person, not referencing a room. */ +"VIDEO_FROM_USER" = "%@ さんが動画を送信"; + +/** Media Messages **/ + +/* New image message from a specific person, not referencing a room. */ +"PICTURE_FROM_USER" = "%@ さんが写真を送信"; diff --git a/Riot/Assets/ja.lproj/Vector.strings b/Riot/Assets/ja.lproj/Vector.strings index 6e9584a13..9a3211902 100644 --- a/Riot/Assets/ja.lproj/Vector.strings +++ b/Riot/Assets/ja.lproj/Vector.strings @@ -30,7 +30,7 @@ "active_call_details" = "通話開始(%@)"; "later" = "後で"; "rename" = "名前変更"; -"collapse" = "たたむ"; +"collapse" = "折りたたむ"; "send_to" = "%@さんへ送信"; "sending" = "送信中"; // Authentication @@ -65,7 +65,7 @@ "auth_missing_email" = "メールアドレスが入力されていません"; "auth_missing_phone" = "電話番号が入力されていません"; "auth_missing_email_or_phone" = "メールアドレスまたは電話番号が入力されていません"; -"auth_email_in_use" = "このメールアドレスは既に使われています"; +"auth_email_in_use" = "このメールアドレスは既に使用されています"; "auth_phone_in_use" = "この電話番号は既に使用されています"; "auth_untrusted_id_server" = "この認証サーバーは信用されていません"; "auth_password_dont_match" = "パスワードが一致しません"; @@ -95,14 +95,14 @@ "room_creation_appearance_picture" = "チャット画像(任意)"; "room_creation_privacy" = "個人情報保護"; "room_creation_private_room" = "この会話は非公開です"; -"room_creation_public_room" = "この会話は公開されます"; +"room_creation_public_room" = "この会話は公開されています"; "room_creation_make_public" = "公開"; "room_creation_make_public_prompt_title" = "このチャットを公開しますか?"; "room_creation_make_public_prompt_msg" = "このチャットを公開してもよろしいですか?誰でもあなたのメッセージを読んでチャットに参加できます。"; "room_creation_keep_private" = "非公開に保つ"; "room_creation_make_private" = "非公開にする"; "room_creation_wait_for_creation" = "ルームは既に作成されています。お待ちください。"; -"room_creation_invite_another_user" = "ユーザーID、表示名、電子メールで検索と招待"; +"room_creation_invite_another_user" = "ユーザーID、表示名、電子メール"; // Room recents "room_recents_directory_section" = "ルーム一覧"; "room_recents_favourites_section" = "お気に入り"; @@ -159,7 +159,7 @@ "room_participants_remove_third_party_invite_msg" = "サードパーティの招待を削除することは、APIが存在するまでサポートされていません"; "room_participants_invite_prompt_title" = "確認"; "room_participants_invite_prompt_msg" = "%@をチャットに招待してよろしいですか?"; -"room_participants_filter_room_members" = "ルームのメンバーを絞り込む"; +"room_participants_filter_room_members" = "ルームメンバーを現在"; "room_participants_invite_another_user" = "ユーザーID、名前、電子メールで検索、招待"; "room_participants_invite_malformed_id_title" = "招待エラー"; "room_participants_invite_malformed_id" = "不正なIDです。メールアドレスを用いるか、'@localpart:domain'のようなMatrix IDを使用してください"; @@ -244,9 +244,9 @@ "room_title_one_member" = "1名のメンバー"; // Room Preview "room_preview_invitation_format" = "あなたは%@さんに呼ばれてこのルームへ参加しました"; -"room_preview_subtitle" = "これはルームのプレビューです。ルームでのやり取りは無効化されています。"; +"room_preview_subtitle" = "現在表示しているのはルームのプレビューです。メッセージの送信などは行えません。"; "room_preview_unlinked_email_warning" = "このアカウントに関連付けられていない%@宛に招待が送信されました。別のアカウントでログインするか、メールアドレスをこのアカウントに追加することができます。"; -"room_preview_try_join_an_unknown_room" = "あなたは%@へ接続しようとしています。この会議に参加しますか?"; +"room_preview_try_join_an_unknown_room" = "%@ に参加しますか?"; "room_preview_try_join_an_unknown_room_default" = "ルーム"; // Settings "settings_title" = "設定"; @@ -293,8 +293,8 @@ "settings_ui_language" = "言語"; "settings_ui_theme" = "外観"; "settings_ui_theme_auto" = "自動"; -"settings_ui_theme_light" = "明るい"; -"settings_ui_theme_dark" = "暗い"; +"settings_ui_theme_light" = "ライト"; +"settings_ui_theme_dark" = "ダーク"; "settings_ui_theme_picker_title" = "外観を選択"; "settings_ui_theme_picker_message" = "色反転設定の端末では、「自動」を使ってください"; "settings_unignore_user" = "%@さんからのメッセージを見ますか?"; @@ -323,26 +323,26 @@ "settings_crypto_device_id" = "\nセッションID: "; "settings_crypto_device_key" = "\nセッションキー:\n"; "settings_crypto_export" = "鍵をエクスポート"; -"settings_crypto_blacklist_unverified_devices" = "検証されたセッションのみで暗号化"; +"settings_crypto_blacklist_unverified_devices" = "認証されたセッションのみで暗号化"; // Room Details "room_details_title" = "ルームの詳細"; "room_details_people" = "メンバー"; "room_details_files" = "アップロード"; "room_details_settings" = "設定"; -"room_details_photo" = "ルームの画像アイコン"; +"room_details_photo" = "ルームのアイコン画像"; "room_details_room_name" = "ルーム名"; "room_details_topic" = "トピック"; "room_details_favourite_tag" = "お気に入り"; "room_details_low_priority_tag" = "低優先度"; "room_details_mute_notifs" = "発言があっても通知しない"; "room_details_direct_chat" = "対話"; -"room_details_access_section" = "誰がルームにアクセスできますか?"; +"room_details_access_section" = "ルームにアクセスできる人"; "room_details_access_section_invited_only" = "招待された人のみ"; "room_details_access_section_anyone_apart_from_guest" = "ルームのリンクを知っている人なら誰でも(ゲストユーザーを除く)"; "room_details_access_section_anyone" = "ルームのリンクを知っている人なら誰でも(ゲストユーザーを含む)"; "room_details_access_section_no_address_warning" = "このルームへのリンクを作成するには、ルームのアドレスが必要です"; "room_details_access_section_directory_toggle" = "ルーム一覧へ公開"; -"room_details_history_section" = "誰をこのルームの発言履歴を読めるようにしますか?"; +"room_details_history_section" = "発言履歴を閲覧できる人"; "room_details_history_section_anyone" = "誰でも"; "room_details_history_section_members_only" = "メンバーのみ (この設定を選択した時点から)"; "room_details_history_section_members_only_since_invited" = "メンバーのみ(招待を送った時点から)"; @@ -363,7 +363,7 @@ "room_details_advanced_enable_e2e_encryption" = "暗号化を有効にする(警告: 有効後にこれを無効にすることはできません!)"; "room_details_advanced_e2e_encryption_enabled" = "このルームの発言は暗号化されています"; "room_details_advanced_e2e_encryption_disabled" = "このルームの発言は暗号化されていません。"; -"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "検証されたセッションのみで暗号化"; +"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "認証されたセッションのみで暗号化"; "room_details_fail_to_update_avatar" = "ルームのアイコン画像の更新に失敗"; "room_details_fail_to_update_room_name" = "ルーム名の更新に失敗"; "room_details_fail_to_update_topic" = "ルームの説明の更新に失敗"; @@ -478,7 +478,7 @@ "room_event_action_kick_prompt_reason" = "このユーザーを追放する理由"; "room_action_send_photo_or_video" = "写真か動画を送る"; "room_action_send_sticker" = "スタンプ送信"; -"room_replacement_information" = "このルームは交換されており、使用されていません。"; +"room_replacement_information" = "このルームは置き換えられており、アクティブではありません。"; "room_replacement_link" = "こちらから継続中の会話を確認する。"; "room_predecessor_information" = "このルームは別の会話の続きです。"; "room_predecessor_link" = "以前のメッセージを見るには、ここをタップしてください。"; @@ -531,9 +531,9 @@ // Room key request dialog "e2e_room_key_request_title" = "暗号鍵の要求"; "e2e_room_key_request_message_new_device" = "暗号鍵を要求している新しい端末 '%@' を追加しました。"; -"e2e_room_key_request_message" = "検証されていない端末 '%@' が暗号鍵を要求しています。"; -"e2e_room_key_request_start_verification" = "検証を始めます…"; -"e2e_room_key_request_share_without_verifying" = "検証せずに共有"; +"e2e_room_key_request_message" = "認証されていない端末 '%@' が暗号鍵を要求しています。"; +"e2e_room_key_request_start_verification" = "認証を始めます…"; +"e2e_room_key_request_share_without_verifying" = "認証せずに共有"; "e2e_room_key_request_ignore_request" = "要求を無視"; // GDPR "gdpr_consent_not_given_alert_message" = "%@ホームサーバーを引き続き使用するには、利用規約を確認して同意する必要があります。"; @@ -555,7 +555,7 @@ "rerequest_keys_alert_message" = "鍵をこのセッションに送信できるように、メッセージを復号化できる他の端末で%@を起動してください。"; "room_event_action_ban_prompt_reason" = "このユーザーをブロックする理由"; "room_resource_limit_exceeded_message_contact_1" = " お願い "; -"settings_ui_theme_black" = "Black"; +"settings_ui_theme_black" = "ブラック"; "settings_flair" = "特色を表示"; // String for App Store "store_short_description" = "セキュアな分散型チャット/VoIP"; @@ -685,7 +685,7 @@ "room_details_access_section_for_dm" = "誰がアクセスできますか?"; "room_details_photo_for_dm" = "写真"; "room_details_integrations" = "インテグレーション"; -"room_details_search" = "ルーム(部屋)を探す"; +"room_details_search" = "ルーム内検索"; "room_details_title_for_dm" = "詳細"; "identity_server_settings_alert_error_invalid_identity_server" = "%@は有効なIDサーバーではありません。"; "identity_server_settings_alert_error_terms_not_accepted" = "IDサーバーとして設定するには%@の条件を受け入れる必要があります。"; @@ -725,7 +725,7 @@ "settings_integrations" = "インテグレーション"; "settings_discovery_settings" = "ディスカバリー"; "room_multiple_typing_notification" = "%@とその他のユーザーが入力中です"; -"external_link_confirmation_message" = "リンク%@は別のサイトに移動します:%@\n\n本当に続けますか?"; +"external_link_confirmation_message" = "リンク %@ は別のサイトに移動します:%@\n\n続行してよろしいですか?"; "room_event_action_delete_confirmation_title" = "未送信メッセージを削除"; "room_unsent_messages_cancel_message" = "このルームにある未送信のメッセージを全て削除してもよろしいですか?"; "room_unsent_messages_cancel_title" = "未送信メッセージを削除"; @@ -736,14 +736,14 @@ "room_member_power_level_short_moderator" = "モデレーター"; "room_member_power_level_custom_in" = "カスタム (%@) in %@"; "room_member_power_level_short_admin" = "管理者"; -"room_member_power_level_moderator_in" = "モデレーターは%@"; -"room_member_power_level_admin_in" = "管理者は%@"; +"room_member_power_level_moderator_in" = "%@のモデレーター"; +"room_member_power_level_admin_in" = "%@の管理者"; "room_participants_security_loading" = "読み込んでいます…"; "room_participants_action_security_status_loading" = "読み込んでいます…"; "room_participants_action_security_status_warning" = "警告"; "room_participants_action_security_status_complete_security" = "セキュリティーを確認"; -"room_participants_action_security_status_verify" = "検証"; -"room_participants_action_security_status_verified" = "検証済"; +"room_participants_action_security_status_verify" = "認証"; +"room_participants_action_security_status_verified" = "認証済"; "room_participants_action_section_security" = "セキュリティー"; "room_participants_start_new_chat_error_using_user_email_without_identity_server" = "IDサーバーが設定されていないため、メールアドレスを使って連絡先とチャットを開始することができません。"; "room_participants_filter_room_members_for_dm" = "メンバーを絞り込む"; @@ -778,7 +778,7 @@ "callbar_only_multiple_paused" = "一時停止した%@の通話"; "callbar_only_single_paused" = "通話の一時停止"; "store_promotional_text" = "オープンネットワーク上でプライバシーを保護したチャットアプリ。あなた自身でコントロールできるように非中央集権化(分散化)されています。データマイニング、バックドア、サードパーティによるアクセスはありません。"; -"auth_softlogout_clear_data" = "個人データをクリア"; +"auth_softlogout_clear_data" = "個人データを消去"; "auth_softlogout_recover_encryption_keys" = "暗号化されたメッセージがどの端末でも読めるように、サインインしてこの端末にのみ保存されている暗号鍵を取り戻してください。"; "auth_softlogout_reason" = "ホームサーバー(%1$@)の管理者が%2$@(%3$@)からサインアウトさせました。"; "auth_softlogout_sign_in" = "サインイン"; @@ -814,7 +814,7 @@ "security_settings_user_password_description" = "アカウントのパスワードを入力して本人確認を行ってください"; "security_settings_coming_soon" = "申し訳ありません。このアクションはElement iOSではまだ利用できません。他のMatrixクライアントを使って設定してください。将来的にはElement iOSでも実装される予定です。"; "security_settings_complete_security_alert_message" = "現在のセッションのセキュリティーを完了させる必要があります。"; -"security_settings_blacklist_unverified_devices_description" = "全てのセッションを検証して、信頼できるものとしてマークしメッセージを送信します。"; +"security_settings_blacklist_unverified_devices_description" = "全てのセッションを認証して、信頼できるものとしてマークしメッセージを送信します。"; "security_settings_blacklist_unverified_devices" = "信頼していないセッションにはメッセージを送信しない"; "security_settings_advanced" = "上級者向け"; "security_settings_export_keys_manually" = "手動で鍵をエクスポート"; @@ -842,7 +842,7 @@ "settings_identity_server_no_is" = "IDサーバーが設定されていません"; "settings_identity_server_description" = "上記で設定したIDサーバーを使って、自分の知り合いを発見したり、発見されたりすることができます。"; "settings_discovery_three_pid_details_enter_sms_code_action" = "SMSアクティベーションコードを入力"; -"settings_discovery_three_pid_details_cancel_email_validation_action" = "メールの検証をキャンセル"; +"settings_discovery_three_pid_details_cancel_email_validation_action" = "メールの認証をキャンセル"; "settings_discovery_three_pid_details_revoke_action" = "取り消し"; "settings_discovery_three_pid_details_share_action" = "共有"; "settings_discovery_three_pid_details_title_email" = "メールアドレスを管理"; @@ -858,7 +858,7 @@ "settings_key_backup_delete_confirmation_prompt_msg" = "よろしいですか?鍵が適切にバックアップされていないと、暗号化されたメッセージを失うことがあります。"; "settings_key_backup_button_connect" = "このセッションを鍵のバックアップに接続"; "settings_key_backup_button_delete" = "バックアップの削除"; -"settings_key_backup_button_restore" = "バックアップによる復元"; +"settings_key_backup_button_restore" = "バックアップから復元"; "settings_key_backup_button_create" = "鍵のバックアップを使用開始"; "settings_key_backup_info_trust_signature_invalid_device_unverified" = "バックアップには%@による無効な署名があります"; "settings_key_backup_info_trust_signature_invalid_device_verified" = "バックアップには%@による無効な署名があります"; @@ -876,13 +876,13 @@ "settings_security" = "セキュリティー"; "settings_three_pids_management_information_part3" = ""; "settings_three_pids_management_information_part2" = "ディスカバリー"; -"store_full_description" = "Elementはまったく新しいメッセンジャーアプリです。\n\n1. あなた自身がプライバシーをコントロールすることを可能にします。\n2. Matrixネットワークにいる誰とでも通信できることはもちろん、Slackなどのアプリとの連携によって他のネットワークとも通信ができます。\n3. 広告、データマイニング、バックドア、ウォールドガーデンから、あなたを守ります。\n4. エンドツーエンド暗号化とクロス署名によってあなたを保護します。\n\nElementは分散型(非中央集権型)でオープンソースであるため、他のメッセンジャーアプリと完全に異なっています。\n\nElementでは、あなた自身がサーバーを運営することも、サーバーを選ぶこともできます。これによってあなたのデータと会話に関するプライバシーや所有権はあなた自身で管理できるようになります。さらに、Elementは開かれたネットワークにアクセスするので、Elementのユーザー以外とも話すことができます。しかもきわめて安全です。\n\nElementはMatrixーーオープンな分散型通信の標準規格ーーで動作するため、これら全てを実現することができています。\n\nElementでは、どのサーバーを使用するかを、ご自身でElementのアプリから決めることができます。\n\n1. 開発者がホストする matrix.org のパブリックサーバーで無料アカウントを取得する。\n2. あなた自身がサーバーを運営し、アカウントを管理する。\n3. Element Matrix Servicesのホスティングプラットフォームに加入し、カスタムサーバー上でアカウントを作る。\n\nなぜElementを選ぶべきなのか?\n\n自分のデータを、自分で所有: データやメッセージを保管する場所を自分で決めることができます。データを所有しコントロールするのは、あなた自身です。データを解析したり第三者にデータを渡したりする巨大IT企業ではありません。\n\nオープンなメッセージングとコラボレーション: Matrixネットワーク上の誰とでも、相手がElementや他のMatrixアプリを使っているか、さらにはSlack、IRC、XMPPのような他のメッセージングシステムを使っているかに関わらず、チャットをすることができます。\n\n非常に安全: 本物のエンド・ツー・エンドの暗号化(会話に参加している人だけがメッセージを復号化できる)と、会話参加者の真正性を確認するための相互署名を行います。\n\n包括的なコミュニケーション: メッセージング、音声およびビデオ通話、ファイル共有、画面共有、その他多くのインテグレーション、ボット、ウィジェットを提供します。ルームやコミュニティーを立ち上げて連絡を取り合い、物事をスムーズに成し遂げることができます。\n\nいつでも、どこにいても: 全ての端末とウェブ(https://app.element.io)でメッセージの履歴が同期されるため、どこにいても連絡を取ることができます。"; -"user_verification_session_details_additional_information_untrusted_other_user" = "ユーザーがこのセッションを信頼するまでは、セッションとの間で送受信されるメッセージには警告が表示されます。また、手動で検証することもできます。"; +"store_full_description" = "Elementはまったく新しいメッセンジャーアプリです。\n\n1. あなた自身がプライバシーをコントロールすることを可能にします。\n2. Matrixネットワークにいる誰とでもコミュニケーションできるだけでなく、Slackなどのアプリと連携すれば、他のネットワークともコミュニケーションを行うことができます。\n3. 広告、データマイニング、バックドア、ユーザーの囲い込みから、あなたを守ります。\n4. エンドツーエンド暗号化とクロス署名によってあなたを保護します。\n\nElementは分散型(非中央集権型)でオープンソースであるため、他のメッセンジャーアプリと完全に異なっています。\n\nElementでは、あなた自身がサーバーを運営することも、サーバーを選ぶこともできます。あなたのデータと会話に関するプライバシーや所有権は、あなた自身で管理できます。さらに、Elementは開かれたネットワークにアクセスするので、Elementのユーザー以外とも話すことができます。しかもきわめて安全です。\n\nElementはMatrixーーオープンな分散型通信の標準規格ーーで動作するため、これら全てを実現することができています。\n\nElementでは、どのサーバーを使用するかを、ご自身でElementのアプリから決めることができます。\n\n1. 開発者がホストする matrix.org のパブリックサーバーで無料アカウントを取得する。\n2. あなた自身がサーバーを運営し、アカウントを管理する。\n3. Element Matrix Servicesのホスティングプラットフォームに加入し、カスタムサーバー上でアカウントを作る。\n\nなぜElementを選ぶべきなのか?\n\n自分のデータを、自分で所有: データやメッセージを保管する場所を自分で決めることができます。データを所有しコントロールするのは、あなた自身です。データを解析したり第三者にデータを渡したりする巨大IT企業ではありません。\n\nオープンなメッセージングとコラボレーション: Matrixネットワーク上の誰とでも、相手がElementや他のMatrixアプリを使っているか、さらにはSlack、IRC、XMPPのような他のメッセージングシステムを使っているかに関わらず、チャットをすることができます。\n\n非常に安全: 本物のエンド・ツー・エンドの暗号化(会話に参加している人だけがメッセージを復号化できます)と、会話参加者の真正性を確認するためのクロス署名を行います。\n\n包括的なコミュニケーション: メッセージング、音声およびビデオ通話、ファイル共有、画面共有、その他多くの機能統合、ボット、ウィジェットを提供します。ルームやコミュニティーを立ち上げて連絡を取り合い、物事をスムーズに成し遂げましょう。\n\nいつでも、どこにいても: 全ての端末とウェブ(https://app.element.io)でメッセージの履歴が同期されるため、どこにいても連絡を取ることができます。"; +"user_verification_session_details_additional_information_untrusted_other_user" = "ユーザーがこのセッションを信頼するまでは、セッションとの間で送受信されるメッセージには警告が表示されます。また、手動で認証することもできます。"; "user_verification_session_details_information_untrusted_other_user" = " 新しいセッションを使ってサインインしました:"; -"user_verification_session_details_information_untrusted_current_user" = "このセッションを検証することで、信頼できるものとしてマークし、暗号化されたメッセージへのアクセスを許可します。"; -"user_verification_session_details_information_trusted_other_user_part2" = " 検証済:"; +"user_verification_session_details_information_untrusted_current_user" = "このセッションを認証することで、信頼できるものとしてマークし、暗号化されたメッセージへのアクセスを許可します。"; +"user_verification_session_details_information_trusted_other_user_part2" = " 認証済:"; "user_verification_session_details_information_trusted_other_user_part1" = "このセッションは安全なものとして信頼されています。なぜなら "; -"user_verification_session_details_information_trusted_current_user" = "このセッションは、検証されたため安全なものとして信頼されています。"; +"user_verification_session_details_information_trusted_current_user" = "このセッションは、認証されたため安全なものとして信頼されています。"; "user_verification_session_details_untrusted_title" = "信頼されていません"; // Session details @@ -907,7 +907,7 @@ // Start -"user_verification_start_verify_action" = "検証を開始"; +"user_verification_start_verify_action" = "認証を開始"; "key_verification_scan_confirmation_scanned_device_information" = "もう一方の端末にも同じシールドが表示されていますか?"; "key_verification_scan_confirmation_scanned_user_information" = "%@は同じシールドを表示していますか?"; @@ -923,20 +923,20 @@ "key_verification_verify_qr_code_scan_other_code_success_message" = "QRコードの認証に成功しました。"; "key_verification_verify_qr_code_scan_other_code_success_title" = "コードが有効になりました!"; "key_verification_verify_qr_code_other_scan_my_code_title" = "相手がQRコードを読み取ってくれましたか?"; -"key_verification_verify_qr_code_start_emoji_action" = "絵文字による検証"; +"key_verification_verify_qr_code_start_emoji_action" = "絵文字による認証"; "key_verification_verify_qr_code_cannot_scan_action" = "スキャンできませんか?"; "key_verification_verify_qr_code_scan_code_action" = "コードをスキャン"; -"key_verification_verify_qr_code_emoji_information" = "絵文字の並びを比較して検証。"; +"key_verification_verify_qr_code_emoji_information" = "絵文字の並びを比較して認証。"; "key_verification_verify_qr_code_information_other_device" = "以下のコードをスキャンして確認してください:"; "key_verification_verify_qr_code_information" = "コードをスキャンして、お互いをしっかりと確認します。"; // MARK: QR code -"key_verification_verify_qr_code_title" = "スキャンして検証"; +"key_verification_verify_qr_code_title" = "スキャンして認証"; // Incoming key verification request -"key_verification_incoming_request_incoming_alert_message" = "%@は検証を求めています"; +"key_verification_incoming_request_incoming_alert_message" = "%@は認証を要求しています"; "key_verification_tile_conclusion_warning_title" = "信頼されていないサインイン"; "key_verification_tile_conclusion_done_title" = "認証済"; "key_verification_tile_request_incoming_approval_decline" = "却下"; @@ -1031,8 +1031,8 @@ // MARK: Verify "key_verification_verify_sas_title_emoji" = "絵文字の比較"; -"device_verification_self_verify_alert_validate_action" = "検証"; -"device_verification_self_verify_alert_message" = "ログインを検証してください:%@"; +"device_verification_self_verify_alert_validate_action" = "認証"; +"device_verification_self_verify_alert_message" = "ログインを認証してください:%@"; // MARK: Self verification start @@ -1149,3 +1149,454 @@ "secure_key_backup_setup_intro_use_security_key_info" = "セキュリティーキーを生成します。パスワードマネージャーもしくは金庫のような安全な場所で保管してください。"; "secure_key_backup_setup_intro_info" = "サーバー上の暗号鍵をバックアップして、暗号化されたメッセージとデータへのアクセスが失われるのを防ぎましょう。"; "secure_backup_setup_banner_subtitle" = "暗号化されたメッセージとデータへのアクセスが失われるのを防ぎましょう"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "アカウント作成:"; +"login_server_url_placeholder" = "URL (例 https://matrix.org)"; +"login_home_server_title" = "接続先サーバーURL:"; +"login_home_server_info" = "あなたの接続先サーバーは、あなたの全ての会話とアカウント情報を保存します"; +"login_identity_server_title" = "認証サーバーURL:"; +"login_password_placeholder" = "パスワード"; +"login_email_placeholder" = "メールアドレス"; +// Action +"no" = "いいえ"; +"yes" = "はい"; +"sign_up" = "登録"; +"resend_message" = "メッセージを再送信"; +"select_all" = "全て選択"; +"show_details" = "詳細を表示"; +"login_identity_server_info" = "Matrixは、どの電子メールなどがどのMatrix IDに属しているかを追跡するアイデンティティサーバーを提供します。 現在 https://matrix.org のみが存在します。"; +"login_user_id_placeholder" = "Matrix ID(例 @bob:matrix.org または bob)"; +"login_optional_field" = "オプション"; +"login_display_name_placeholder" = "表示名 (例 Bob Obson)"; +"login_email_info" = "メールアドレスを指定すると、他のユーザーがあなたをMatrixで簡単に見つけることができ、今後パスワードをリセットすることができます。"; +"login_prompt_email_token" = "メールの認証トークンを入力してください:"; +"login_error_title" = "ログインに失敗しました"; +"login_error_no_login_flow" = "このホームサーバーから認証情報を取得できませんでした"; +"login_error_do_not_support_login_flows" = "現在、このホームサーバーによって定義されたログインフローの一部または全てをサポートしていません"; +"login_error_registration_is_not_supported" = "登録は現在サポートされていません"; +"login_error_forbidden" = "無効なユーザー名/パスワード"; +"login_error_unknown_token" = "指定されたアクセストークンが認識されませんでした"; +"login_error_bad_json" = "不正な形式のJSON"; +"login_error_not_json" = "有効なJSONを含んでいませんでした"; +"login_error_limit_exceeded" = "あまりにも多くのリクエストが送られました"; +"login_error_user_in_use" = "このユーザー名は既に使用されています"; +"login_error_login_email_not_yet" = "まだクリックされていないメールリンク"; +"login_use_fallback" = "フォールバックページを使用"; +"login_leave_fallback" = "キャンセル"; +"login_invalid_param" = "無効なパラメーター"; +"register_error_title" = "登録に失敗しました"; +"login_error_forgot_password_is_not_supported" = "Forgot passwordは現在サポートされていません"; +"login_mobile_device" = "携帯"; +"login_tablet_device" = "タブレット"; +"login_desktop_device" = "デスクトップ"; +"login_error_resource_limit_exceeded_title" = "リソース制限を超えました"; +"login_error_resource_limit_exceeded_message_default" = "このホームサーバーは、リソース制限の1つを超えています。"; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "このホームサーバーは、月間アクティブユーザー制限を超えています。"; +"login_error_resource_limit_exceeded_message_contact" = "\n\nこのサービスを続行するには、サービス管理者に連絡してください。"; +"login_error_resource_limit_exceeded_contact_button" = "管理者に連絡"; +"abort" = "中断"; +"discard" = "破棄"; +"dismiss" = "却下"; +"submit" = "提出"; +"submit_code" = "コードを送信"; +"set_default_power_level" = "権限レベルをリセット"; +"set_moderator" = "モデレーターを設定"; +"set_admin" = "管理者を設定"; +"start_chat" = "チャットを開始"; +"start_voice_call" = "音声通話を開始"; +"start_video_call" = "ビデオ通話を開始"; +"mention" = "メンション"; +"select_account" = "アカウントを選択"; +"attach_media" = "ライブラリからメディアを添付"; +"capture_media" = "写真/ビデオを撮る"; +"invite_user" = "Matrixユーザーを招待"; +"reset_to_default" = "デフォルトにリセット"; +"cancel_upload" = "アップロードをキャンセル"; +"cancel_download" = "ダウンロードをキャンセル"; +"answer_call" = "通話に応答"; +"reject_call" = "通話を拒否"; +"end_call" = "通話終了"; +"ignore" = "無視"; +// Events formatter +"notice_avatar_changed_too" = "(アバターも変更されました)"; +"notice_room_name_removed" = "%@がルーム名を削除しました"; +"notice_room_topic_removed" = "%@がトピックを削除しました"; +"notice_event_redacted" = "<編集された%@>"; +"notice_event_redacted_by" = " %@により"; +"notice_event_redacted_reason" = " [理由: %@]"; +"notice_profile_change_redacted" = "%@が彼らのプロフィール %@を更新しました"; +"notice_room_created" = "%@がルームを作成しました"; +"notice_room_join_rule" = "結合ルールは次のとおり: %@"; +"notice_room_power_level_intro" = "ルームメンバーの権限レベル:"; +"notice_room_power_level_acting_requirement" = "アクション前にユーザーの必要な最小権限レベル:"; +"notice_room_power_level_event_requirement" = "イベントに関連する最小権限レベル:"; +"notice_room_aliases" = "ルームエイリアス: %@"; +"notice_room_related_groups" = "このルームに関連付けられたグループ: %@"; +"notice_encrypted_message" = "暗号化されたメッセージ"; +"notice_encryption_enabled" = "%@はエンドツーエンド暗号化を有効にする (アルゴリズム %@)"; +"notice_image_attachment" = "画像添付"; +"notice_audio_attachment" = "音声添付"; +"notice_video_attachment" = "動画添付"; +"notice_location_attachment" = "位置情報添付"; +"notice_file_attachment" = "ファイル添付"; +"notice_invalid_attachment" = "無効な添付"; +"notice_unsupported_attachment" = "サポートされていない添付: %@"; +"notice_feedback" = "フィードバックイベント (id: %@): %@"; +"notice_redaction" = "%@はイベントを編集しました (id: %@)"; +"notice_error_unsupported_event" = "サポートされていないイベント"; +"notice_error_unexpected_event" = "予期しないイベント"; +"notice_error_unknown_event_type" = "不明なイベントタイプ"; +"notice_room_history_visible_to_anyone" = "%@が今後のルーム履歴を「誰でも」閲覧可能に設定しました。"; +"notice_room_history_visible_to_members" = "%@が今後のルーム履歴を「メンバーのみ」閲覧可能に設定しました。"; +"notice_room_history_visible_to_members_from_invited_point" = "%@が今後のルーム履歴を「メンバーのみ (招待された時点以降)」閲覧可能に設定しました。"; +"notice_room_history_visible_to_members_from_joined_point" = "%@が今後のルーム履歴を「メンバーのみ (参加した時点以降)」閲覧可能に設定しました。"; +"notice_crypto_unable_to_decrypt" = "** 復号化できません: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "送信者のセッションからこのメッセージ用の鍵が送信されていません。"; +"notice_sticker" = "ステッカー"; +"notice_in_reply_to" = "返信先"; +// room display name +"room_displayname_empty_room" = "空のルーム"; +// Settings +"settings" = "設定"; +"settings_enable_inapp_notifications" = "アプリ内通知を有効にする"; +"settings_enable_push_notifications" = "プッシュ通知を有効にする"; +"settings_enter_validation_token_for" = "%@の認証トークンを入力:"; +"notification_settings_room_rule_title" = "ルーム: '%@'"; +// Devices +"device_details_title" = "セッション情報\n"; +"device_details_name" = "名前\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "最終接続日\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "セッションの公開名は、あなたとやり取りする人々に対して表示されます"; +"device_details_delete_prompt_title" = "認証"; +"device_details_delete_prompt_message" = "この操作には、追加の認証が必要です。\n続行するには、パスワードを入力してください。"; +// Encryption information +"room_event_encryption_info_title" = "エンドツーエンド暗号化情報\n\n"; +"room_event_encryption_info_event" = "イベント情報\n"; +"room_event_encryption_info_event_user_id" = "ユーザーID\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519 固有鍵\n"; +"room_event_encryption_info_event_fingerprint_key" = "要求されたフィンガープリントキー Ed25519\n"; +"room_event_encryption_info_event_algorithm" = "アルゴリズム\n"; +"room_event_encryption_info_event_session_id" = "セッションID\n"; +"room_event_encryption_info_event_decryption_error" = "復号化エラー\n"; +"room_event_encryption_info_event_unencrypted" = "暗号化されていません"; +"room_event_encryption_info_event_none" = "なし"; +"room_event_encryption_info_device" = "\n送信者セッション情報\n"; +"room_event_encryption_info_device_unknown" = "未知のセッション\n"; +"room_event_encryption_info_device_name" = "名前\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "認証\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519 fingerprint\n"; +"room_event_encryption_info_device_verified" = "認証済"; +"room_event_encryption_info_device_not_verified" = "認証されていない"; +"room_event_encryption_info_device_blocked" = "ブラックリストに載せた"; +"room_event_encryption_info_verify" = "認証しています…"; +"room_event_encryption_info_unverify" = "未認証"; +"room_event_encryption_info_block" = "ブラックリスト"; +"room_event_encryption_info_unblock" = "ブラックでないリスト"; +"room_event_encryption_verify_title" = "セッション認証\n\n"; +"room_event_encryption_verify_message" = "このセッションが信頼できることを確認するには、他の方法(対面や電話など)で所有者に連絡し、セッションのユーザー設定で表示される鍵が以下の鍵と一致するかどうかを訪ねてください。\n\nセッション名: %@\nセッションID: %@\nセッションキー: %@\n\n一致する場合は、下の確認ボタンを押します。 それ以外の人がこのセッションを傍受している場合は、代わりにブラックリストボタンを押してください。\n\n将来この認証プロセスはより洗練されたものになります。"; +"room_event_encryption_verify_ok" = "認証"; +// Account +"account_save_changes" = "変更を保存"; +"account_link_email" = "リンクメール"; +"account_linked_emails" = "リンクされたメール"; +"account_email_validation_title" = "認証の保留中"; +"account_email_validation_message" = "電子メールを確認して、本文中のURLをクリックしてください。完了したら「続行する」をクリックしてください。"; +"account_email_validation_error" = "メールアドレスを認証できません。メールを確認して、記載されているリンクをクリックしてください。その後、「続行する」をクリックしてください"; +"account_msisdn_validation_title" = "認証の保留中"; +"account_msisdn_validation_message" = "SMSで認証番号を送りました。以下にその番号を入力してください。"; +"account_msisdn_validation_error" = "電話番号を確認できません。"; +"account_error_display_name_change_failed" = "表示名の変更に失敗しました"; +"account_error_picture_change_failed" = "画像の変更に失敗しました"; +"account_error_matrix_session_is_not_opened" = "Matrixセッションが開かれていません"; +"account_error_email_wrong_title" = "無効な電子メールアドレス"; +"account_error_email_wrong_description" = "メールアドレスの形式が正しくありません"; +"account_error_msisdn_wrong_title" = "無効な電話番号"; +"account_error_msisdn_wrong_description" = "電話番号の形式が正しくありません"; +// Room creation +"room_creation_name_title" = "ルーム名:"; +"room_creation_name_placeholder" = "(例 ランチグループ)"; +"room_creation_alias_title" = "ルームの別名:"; +"room_creation_alias_placeholder" = "(例 #foo:example.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(例 #foo%@)"; +"room_creation_participants_title" = "参加者:"; +"room_creation_participants_placeholder" = "(例 @bob:homeserver1; @john:homeserver2…)"; +// Room +"room_please_select" = "ルームを選択してください"; +"room_error_join_failed_title" = "ルームに参加できませんでした"; +"room_error_join_failed_empty_room" = "現在空のルームに再参加することはできません。"; +"room_error_name_edition_not_authorized" = "このルームの名前を編集する権限がありません"; +"room_error_topic_edition_not_authorized" = "このルームのトピックを編集する権限がありません"; +"room_error_cannot_load_timeline" = "タイムラインの読み込みに失敗しました"; +"room_error_timeline_event_not_found_title" = "タイムラインの位置を読み込めませんでした"; +"room_error_timeline_event_not_found" = "アプリケーションがこのルームのタイムラインに特定のポイントをロードしようとしましたが、それを見つけることができませんでした"; +"room_left" = "あなたはルームを出ました"; +"room_no_power_to_create_conference_call" = "このルームで会議を開始するために招待する権限が必要です"; +"room_no_conference_call_in_encrypted_rooms" = "暗号化された会議室では会議通話はサポートされません"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "画像を送信しました。"; +"message_reply_to_sender_sent_a_video" = "動画を送りました。"; +"message_reply_to_sender_sent_an_audio_file" = "オーディオファイルを送信しました。"; +"message_reply_to_sender_sent_a_file" = "ファイルを送信しました。"; +"message_reply_to_message_to_reply_to_prefix" = "に返信"; +// Room members +"room_member_ignore_prompt" = "このユーザーからの全てのメッセージを非表示にしますか?"; +"room_member_power_level_prompt" = "この変更を元に戻すことはできません。ユーザーが自分と同じレベルの権限を持つように促しますが、よろしいですか?"; +// Attachment +"attachment_size_prompt" = "次のように送信しますか:"; +"attachment_original" = "実際のサイズ: %@"; +"attachment_small" = "小: %@"; +"attachment_medium" = "中: %@"; +"attachment_large" = "大: %@"; +"attachment_cancel_download" = "ダウンロードをキャンセルしますか?"; +"attachment_cancel_upload" = "アップロードをキャンセルしますか?"; +"attachment_multiselection_size_prompt" = "画像を次のように送信しますか:"; +"attachment_multiselection_original" = "実際のサイズ"; +"attachment_e2e_keys_file_prompt" = "このファイルには、Matrixクライアントからエクスポートされた暗号鍵が含まれています。\nファイルの内容を表示するか、ファイル内の鍵をインポートしますか?"; +"attachment_e2e_keys_import" = "インポート…"; +// Contacts +"contact_mx_users" = "Matrixユーザー"; +"contact_local_contacts" = "ローカルの連絡先"; +// Groups +// Search +"search_no_results" = "結果がありません"; +"search_searching" = "検索しています…"; +// Time +"format_time_s" = "秒"; +"format_time_m" = "分"; +"format_time_h" = "時"; +"format_time_d" = "日"; +// E2E import +"e2e_import_room_keys" = "ルームの暗号鍵をインポート"; +"e2e_import_prompt" = "このプロセスでは、以前に別のMatrixクライアントからエクスポートした暗号鍵をインポートできます。 これにより、他のクライアントが解読できる全てのメッセージを解読することができます。\nエクスポートした暗号鍵のファイルは、パスフレーズで保護されています。 ファイルを復号化するには、パスフレーズをここに入力する必要があります。"; +"e2e_import" = "インポート"; +"e2e_passphrase_enter" = "パスフレーズを入力"; +// E2E export +"e2e_export_room_keys" = "ルームの暗号鍵をエクスポート"; +"e2e_export_prompt" = "このプロセスでは、暗号化されたルームで受信したメッセージの鍵をローカルファイルにエクスポートできます。 そのファイルを別のMatrixクライアントにインポートすると、クライアントはこれらのメッセージを復号化することができます。\nエクスポートしたファイルを使えば、誰でも暗号化されたメッセージを復号化できるので、ファイルを安全に保つように注意する必要があります。"; +"e2e_export" = "エクスポート"; +"e2e_passphrase_confirm" = "パスフレーズを確認"; +"e2e_passphrase_empty" = "パスフレーズは空であってはいけません"; +"e2e_passphrase_not_match" = "パスフレーズは一致する必要があります"; +"e2e_passphrase_create" = "パスフレーズの作成"; +// Others +"user_id_title" = "ユーザーID:"; +"offline" = "オフライン"; +"unsent" = "未送信"; +"error" = "エラー"; +"error_common_message" = "エラーが発生しました。 後でもう一度お試しください。"; +"not_supported_yet" = "まだサポートされていません"; +"default" = "既定"; +"private" = "非公開"; +"public" = "公開"; +"power_level" = "権限レベル"; +"network_error_not_reachable" = "ネットワーク接続を確認してください"; +"user_id_placeholder" = "例: @bob:homeserver"; +"ssl_homeserver_url" = "ホームサーバーのURL: %@"; +// Permissions +"camera_access_not_granted_for_call" = "ビデオ通話はカメラにアクセスする必要がありますが、%@にはそのカメラを使用する権限がありません"; +"microphone_access_not_granted_for_call" = "通話にはマイクへのアクセスが必要ですが、%@には使用許可がありません"; +"local_contacts_access_not_granted" = "ローカルの連絡先からユーザーを探すには連絡先にアクセスする必要がありますが、%@にはそのアクセス権限がありません"; +"local_contacts_access_discovery_warning_title" = "ユーザーの探索"; +"local_contacts_access_discovery_warning" = "%@は、ユーザーを検索するためにあなたの連絡先から電子メールと電話番号をアップロードしたい"; +// Country picker +"country_picker_title" = "国を選択"; +// Language picker +"language_picker_title" = "言語を選択"; +"language_picker_default_language" = "既定値 (%@)"; +"notice_room_invite" = "%@が%@を招待しました"; +"notice_room_third_party_invite" = "%@が%@にルームへの招待状を送りました"; +"notice_room_third_party_registered_invite" = "%@が%@の招待を受け入れました"; +"notice_room_join" = "%@が参加しました"; +"notice_room_leave" = "%@が退出しました"; +"notice_room_reject" = "%@が招待を拒否しました"; +"notice_room_kick" = "%@が%@を追い出しました"; +"notice_room_unban" = "%@が%@を追放解除しました"; +"notice_room_ban" = "%@が%@を追放しました"; +"notice_room_withdraw" = "%@が%@の招待を辞退しました"; +"notice_room_reason" = ". 理由: %@"; +"notice_avatar_url_changed" = "%@がアバターを変更しました"; +"notice_display_name_set" = "%@が表示名を%@に設定しました"; +"notice_display_name_changed_from" = "%@が表示名を%@から%@に変更しました"; +"notice_display_name_removed" = "%@が表示名を削除しました"; +"notice_topic_changed" = "%@がトピックを次のように変更しました:%@"; +"notice_room_name_changed" = "%@がルーム名を次のように変更しました:%@"; +"notice_placed_voice_call" = "%@が電話をかけました"; +"notice_placed_video_call" = "%@がビデオ電話をかけました"; +"notice_answered_video_call" = "%@が電話に出ました"; +"notice_ended_video_call" = "%@が通話を終了しました"; +"notice_conference_call_request" = "%@がVoIP会議をリクエストしました"; +"notice_conference_call_started" = "VoIP会議が開始しました"; +"notice_conference_call_finished" = "VoIP会議が終了しました"; +// button names +"send" = "送信"; +"copy_button_name" = "コピー"; +"resend" = "再送信"; +"redact" = "編集"; +"share" = "共有"; +"set_power_level" = "権限レベル"; +"delete" = "削除"; +// actions +"action_logout" = "ログアウト"; +"create_room" = "ルームを作る"; +"login" = "ログイン"; +"create_account" = "アカウントを作成"; +"membership_invite" = "招待しました"; +"membership_leave" = "退出しました"; +"membership_ban" = "ブロックしました"; +"num_members_one" = "%@ ユーザー"; +"num_members_other" = "%@ ユーザー"; +"kick" = "キック"; +"ban" = "ブロック"; +"unban" = "ブロック解除"; +"message_unsaved_changes" = "保存されていない変更があります。 退出すると変更は取り消されます。"; +// Login Screen +"login_error_already_logged_in" = "ログイン済"; +"login_error_must_start_http" = "URLは http[s]:// で始まる必要があります"; +// room details dialog screen +// contacts list screen +"invitation_message" = "私はmatrixであなたとチャットしたい。 詳細はウェブサイトhttp://matrix.orgをお尋ねください。"; +// Settings screen +"settings_title_config" = "構成"; +"settings_title_notifications" = "通知"; +// Notification settings screen +"notification_settings_disable_all" = "全ての通知を無効にする"; +"notification_settings_enable_notifications" = "通知を有効にする"; +"notification_settings_enable_notifications_warning" = "現在、全ての端末で全ての通知が無効になっています。"; +"notification_settings_global_info" = "通知設定はユーザーアカウントに保存され、デスクトップ通知を含む全てのクライアント間で共有されます。\n\nルールは順番に適用されます。 一致する最初のルールは、メッセージの結果を定義します。\nだから:単語ごとの通知は、送信者ごとの通知よりも重要なルームごとの通知よりも重要です。\n同じ種類の複数のルールの場合、一致するリストの最初のルールが優先されます。"; +"notification_settings_per_word_notifications" = "単語単位の通知"; +"notification_settings_per_word_info" = "単語は大文字と小文字を区別せずに一致させ、*ワイルドカードを含めることができます。 従って:\nfooは、区切り文字で囲まれた文字列foo(例 句読点や空白、行の開始/終了)と一致します。\nfoo*は、fooで始まる単語に一致します。\n*foo*は、3文字のfooを含む単語に一致します。"; +"notification_settings_always_notify" = "常に通知"; +"notification_settings_never_notify" = "決して通知しない"; +"notification_settings_word_to_match" = "一致する単語"; +"notification_settings_highlight" = "Highlight"; +"notification_settings_custom_sound" = "カスタムサウンド"; +"notification_settings_per_room_notifications" = "1ルームあたりの通知"; +"notification_settings_per_sender_notifications" = "送信者ごとの通知"; +"notification_settings_sender_hint" = "@user:domain.com"; +"notification_settings_select_room" = "ルームを選択"; +"notification_settings_other_alerts" = "その他のアラート"; +"notification_settings_contain_my_user_name" = "私のユーザー名を含むメッセージについて音で私に通知してください"; +"notification_settings_contain_my_display_name" = "私の表示名が含まれているメッセージが届いた際に音で通知"; +"notification_settings_just_sent_to_me" = "私に送られたメッセージについての音で私に知らせる"; +"notification_settings_invite_to_a_new_room" = "私が新しいルームに招待されたときに知らせる"; +"notification_settings_people_join_leave_rooms" = "誰かがルームに参加もしくは退出したときに通知"; +"notification_settings_receive_a_call" = "通話を受信したときに通知"; +"notification_settings_suppress_from_bots" = "ボットからの通知を抑制"; +"notification_settings_by_default" = "既定値では…"; +"notification_settings_notify_all_other" = "他の全てのメッセージ/ルームについて通知"; +// gcm section +// call string +"call_waiting" = "待機中..."; +"call_connecting" = "通話接続中…"; +"call_ended" = "通話終了"; +"call_ring" = "呼び出し中..."; +"incoming_video_call" = "着信ビデオ通話"; +"incoming_voice_call" = "着信音声通話"; +"call_invite_expired" = "期限切れの招待コール"; +// unrecognized SSL certificate +"ssl_trust" = "信頼"; +"ssl_logout_account" = "ログアウト"; +"ssl_remain_offline" = "無視"; +"ssl_fingerprint_hash" = "指紋 (%@):"; +"ssl_could_not_verify" = "リモートサーバーのIDを確認できませんでした。"; +"ssl_cert_not_trust" = "これは、誰かがあなたのトラフィックを悪意を持って傍受しているか、あなたの電話機がリモートサーバーから提供された証明書を信頼していないことを意味します。"; +"ssl_cert_new_account_expl" = "サーバー管理者がこれが予期されると述べた場合は、以下の指紋が提供された指紋と一致することを確認してください。"; +"ssl_unexpected_existing_expl" = "証明書は、お使いの携帯電話にて信頼されたものから変更されました。 これは非常に珍しいことです。 この新しい証明書に同意しないことをお勧めします。"; +"ssl_expected_existing_expl" = "証明書が以前に信頼されたものから信頼されていないものに変更されました。 サーバーが証明書を更新した可能性があります。 予想される指紋については、サーバー管理者にお問い合わせください。"; +"ssl_only_accept" = "サーバー管理者が上記のものと一致する指紋を発行した場合にのみ、証明書を受け入れてください。"; +"unignore" = "無視しない"; +"notice_encryption_enabled_ok" = "%@がエンドツーエンド暗号化をオンにしました。"; +"notice_encryption_enabled_unknown_algorithm" = "%1$@がエンドツーエンド暗号化をオンにしました(不明なアルゴリズム %2$@)。"; +"device_details_rename_prompt_title" = "セッション名"; +"account_error_push_not_allowed" = "通知は許可されていません"; +"notice_room_third_party_revoked_invite" = "%@が%@のルームへの招待を取り消しました"; +// Notice Events with "You" +"notice_room_invite_by_you" = "%@を招待しました"; +"notice_room_invite_you" = "%@があなたを招待しました"; +"notice_room_join_by_you" = "参加しました"; +"notice_room_leave_by_you" = "退出しました"; +"notice_room_kick_by_you" = "%@をキックしました"; +"notice_room_unban_by_you" = "%@のブロックを解除しました"; +"notice_room_ban_by_you" = "%@をブロックしました"; +"notice_avatar_url_changed_by_you" = "アバターを変更しました"; +"notice_display_name_set_by_you" = "表示名を%@に変更しました"; +"notice_display_name_changed_from_by_you" = "表示名を%@から%@に変更しました"; +"notice_display_name_removed_by_you" = "表示名を削除しました"; +"notice_topic_changed_by_you" = "トピックを変更しました: %@"; +"notice_room_name_changed_by_you" = "ルームの名前を変更しました: %@"; +"notice_placed_voice_call_by_you" = "音声通話を開始しました"; +"notice_placed_video_call_by_you" = "ビデオ通話を開始しました"; +"notice_answered_video_call_by_you" = "電話に出ました"; +"notice_ended_video_call_by_you" = "通話を終了しました"; +"notice_conference_call_request_by_you" = "VoIP会議をリクエストしました"; +"notice_room_name_removed_by_you" = "ルーム名を削除しました"; +"notice_room_topic_removed_by_you" = "トピックを削除しました"; +"notice_profile_change_redacted_by_you" = "プロフィール %@を更新しました"; +"notice_room_created_by_you" = "ルームを作成しました"; +"notice_encryption_enabled_ok_by_you" = "あなたはエンドツーエンド暗号化をオンにしました。"; +"notice_encryption_enabled_unknown_algorithm_by_you" = "あなたはエンドツーエンド暗号化をオンにしました (不明なアルゴリズム %2$@)。"; +"notice_redaction_by_you" = "イベントを編集しました (id: %@)"; +"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" = "%@が今後のメッセージを「メンバーのみ」閲覧可能に設定しました。"; +"room_intro_cell_information_room_without_topic_sentence2_part2" = " と、このルームの目的が分かりやすくなります。"; +"room_intro_cell_information_room_without_topic_sentence2_part1" = "トピックを追加"; +"security_settings_secure_backup_restore" = "バックアップから復元"; +"settings_device_notifications" = "端末の通知"; +"settings_contacts_enable_sync" = "連絡先を探す"; +"settings_analytics_and_crash_data" = "クラッシュ・分析データを送信"; +"settings_ui_theme_picker_message_invert_colours" = "「自動」は端末の色の「反転」設定を使用します"; +"settings_ui_theme_picker_message_match_system_theme" = "「自動」は端末と同じ外観を自動で使用します"; +"space_home_show_all_rooms" = "全てのルームを表示"; +"room_notifs_settings_all_messages" = "全てのメッセージ"; + +// MARK: - Location sharing + +"location_sharing_title" = "位置情報"; +"poll_timeline_not_closed_subtitle" = "もう一度やり直してください"; +"poll_timeline_not_closed_title" = "アンケートの終了に失敗しました"; +"poll_timeline_total_no_votes" = "まだ誰も投票していません"; +"poll_timeline_votes_count" = "%lu票"; +"poll_timeline_one_vote" = "1票"; +"poll_edit_form_poll_type_closed_description" = "結果はアンケートを終了した後でのみ明らかにされます"; +"poll_edit_form_poll_type_closed" = "アンケートの終了後に結果を公開"; +"poll_edit_form_poll_type_open_description" = "投票した人には、投票の際に即座に結果が表示されます"; +"poll_edit_form_poll_type_open" = "投票の際に結果を公開"; +"poll_edit_form_update_failure_subtitle" = "もう一度やり直してください"; +"poll_edit_form_update_failure_title" = "アンケートの更新に失敗しました"; +"poll_edit_form_post_failure_subtitle" = "もう一度やり直してください"; +"poll_edit_form_post_failure_title" = "アンケートの作成に失敗しました"; +"poll_edit_form_add_option" = "選択肢を追加"; +"poll_edit_form_option_number" = "選択肢%lu"; +"poll_edit_form_create_options" = "選択肢を作成"; +"poll_edit_form_input_placeholder" = "記入してください"; +"poll_edit_form_question_or_topic" = "質問あるいはトピック"; +"poll_edit_form_poll_question_or_topic" = "アンケートの質問あるいはトピック"; +"poll_edit_form_poll_type" = "アンケートの種類"; + +// Mark: - Polls + +"poll_edit_form_create_poll" = "アンケートを作成"; +"poll_timeline_vote_not_registered_subtitle" = "申し訳ありませんが投票が登録されていません、再度お試しください"; +"poll_timeline_vote_not_registered_title" = "投票が登録されていません"; +"poll_timeline_total_final_results" = "合計%lu票の投票に基づく最終結果"; +"poll_timeline_total_final_results_one_vote" = "合計1票の投票に基づく最終結果"; +"poll_timeline_total_votes_not_voted" = "合計%lu票、投票すると結果を確認できます"; +"poll_timeline_total_one_vote_not_voted" = "合計1票、投票すると結果を確認できます"; +"poll_timeline_total_votes" = "合計%lu票"; +"poll_timeline_total_one_vote" = "合計1票"; +"biometrics_cant_unlocked_alert_message_retry" = "再試行"; +"biometrics_usage_reason" = "アプリを開くには認証が必要です"; +"settings_sending_media" = "画像と動画の送信"; +"invite_friends_share_text" = "%@ での連絡先: %@"; +"side_menu_action_invite_friends" = "招待する"; diff --git a/Riot/Assets/kab.lproj/Vector.strings b/Riot/Assets/kab.lproj/Vector.strings index 10551cf94..57bba7107 100644 --- a/Riot/Assets/kab.lproj/Vector.strings +++ b/Riot/Assets/kab.lproj/Vector.strings @@ -1422,3 +1422,523 @@ "directory_search_fail" = "Alqaḍ n yisefka yecceḍ"; "room_creation_invite_another_user" = "Nadi / snubget s usulay n useqdac, Isem neɣ imayl"; "auth_softlogout_clear_data_message_1" = "Ɣur-k·m: Isefka-inek·inem udmawanen (rnu ɣer-sen tisura n uwgelhen) mazal ttukelsent ɣef yibenk-a."; + + +// MARK: - MatrixKit + + + + + +"ssl_expected_existing_expl" = "Aselkin yettwabeddel seg win yettwamanen ɣer win ur nettwaman ara. Ahat aqeddac iɛawed-d aselkin-ines. Nermes anedbal n uqeddac ɣef udsil umḍin yetturaǧun."; +"ssl_unexpected_existing_expl" = "Aselken yettubeddel deg ubdil n win yettwamanen deg tiliɣri-inek·inem. Aya MAČČI D AYEN IGERRZEN. Issefk UR TETTAQBALEḌ ARA aselkin-a amaynut."; +"ssl_cert_new_account_expl" = "Ma yella anedbal n uqeddac yenna-d belli aya yettuau, ẓer ma yella adsil umḍin ddaw yemṣada d udsil umḍin i d-mudden nutni."; +"ssl_cert_not_trust" = "Aya yebɣa ad d-yini yellawin d ugur i tikli-inek·inem s yir udem, neɣ tiliɣri-inek·inem ur yettkil ara ɣef uselkin i as-imudd uqeddac anmeggag."; +"ssl_could_not_verify" = "D awezɣi ad nsenqed timagit n uqeddac agemmaḍ."; +"ssl_remain_offline" = "Ttu"; +"ssl_logout_account" = "Tuffɣa"; + +// unrecognized SSL certificate +"ssl_trust" = "Ittkel"; +"incoming_voice_call" = "Asiwel s taɣect i d-ikecmen"; +"incoming_video_call" = "Asiwel s tvidyut i d-ikecmen"; +"call_ring" = "Yessawal..."; +"call_ended" = "Asiwel yekfa"; +"notification_settings_notify_all_other" = "Ṭṭef-d ilɣa i meṛṛa iznan/tixxamin"; +"settings_title_notifications" = "Ilɣa"; + +// Settings screen +"settings_title_config" = "Tawila"; + +// members list Screen + +// accounts list Screen + +// image size selection + +// invitation members list Screen + +// room creation dialog Screen + +// room info dialog Screen + +// room details dialog screen +"login_error_must_start_http" = "Ilaq ad yebdu URL s http[s]://"; +"ban" = "Agi"; +"kick" = "Suffeɣ"; +"membership_leave" = "Azelmaḍ"; +"membership_invite" = "Yettwancad"; +"create_account" = "Rnu amiḍan"; +"login" = "Isem n useqdac"; +"create_room" = "Rnu taxxamt"; + +// actions +"action_logout" = "Tuffɣa"; +"delete" = "Kkes"; +"share" = "Bḍu"; +"redact" = "Sfeḍ"; +"resend" = "Ɛawed azen"; +"copy_button_name" = "Nɣel"; +"send" = "Azen"; + +// Room Screen + +// general errors + +// Home Screen + +// Last seen time + +// call events + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /console/src/main/res/values/strings.xml. +*/ + + +// titles + +// button names +"ok" = "IH"; +"notice_room_created_by_you_for_dm" = "Terniḍ."; +"notice_room_created_by_you" = "Aql-ak·akem terniḍ, tsewleḍ taxxamt."; +"notice_conference_call_request_by_you" = "Tsutreḍ-d asarag VoIP"; +"notice_avatar_url_changed_by_you" = "Tbeddleḍ avatar-inek·inem"; +"notice_room_reject_by_you" = "Tufiḍ tinubga"; +"notice_room_leave_by_you" = "Truḥeḍ"; +"notice_room_join_by_you" = "Terniḍ"; +"notice_conference_call_finished" = "Asarag VoIP yekfa"; +"notice_conference_call_started" = "Asarag VoIP yebda"; + +// Country picker +"country_picker_title" = "Fren tamurt"; +"public" = "Azayez"; +"private" = "Amaẓlay"; +"default" = "amezwer"; +"error" = "Tuccḍa"; +"e2e_passphrase_create" = "Rnu tafyirt tuffirt"; +"e2e_passphrase_not_match" = "Tifyar tuffirin ilaq ad mṣadant"; +"e2e_passphrase_empty" = "Tafyirt tuffirt ur ilaq ara ad ilint d tilmawin"; +"e2e_passphrase_confirm" = "Sentem tafyirt tuffirt"; +"e2e_export" = "Sifeḍ"; + +// E2E export +"e2e_export_room_keys" = "Sifeḍ tisura n texxamt"; +"e2e_passphrase_enter" = "Sekcem tafyirt tuffirt"; +"e2e_import" = "Kter"; + +// E2E import +"e2e_import_room_keys" = "Kter tisura n texxamt"; +"format_time_d" = "d"; +"format_time_h" = "sr"; + +// Time +"format_time_s" = "s"; + +// Groups +"attachment_cancel_upload" = "Sefsex asali?"; +"attachment_cancel_download" = "Sefsex asider?"; +"room_member_power_level_prompt" = "Ur tettizmireḍ ara ad tesfesxeḍ asnifel-a acku tessebɣaseḍ aseqdac ad yesɛu aswir n tezmert am kečč·kemm.\nTebɣiḍ s tidet?"; +"room_no_conference_call_in_encrypted_rooms" = "Isiwlen isaragen ur ttwasefraken ara deg texxamin yettwawgelhen"; +"room_no_power_to_create_conference_call" = "Tesriḍ tisirag akken ad tebduḍ asarag deg texxamt-a"; +"room_left_for_dm" = "Truḥeḍ"; +"room_left" = "Teǧǧiḍ taxxamt"; +"room_error_timeline_event_not_found_title" = "Asali n yideg n tesnakudt ur yeddi ara"; +"room_error_join_failed_title" = "Anekcum ɣer texxamt ur yeddi ara"; +"account_error_email_wrong_description" = "Tagi ur tettban ara d tansa n yimayl tameɣtut"; +"account_error_email_wrong_title" = "Tansa n yimayl d tarameɣtut"; +"account_msisdn_validation_error" = "Asenqed n wuṭṭun n tilifun ur yeddi ara."; +"account_msisdn_validation_title" = "Asenqed yettṛaǧu"; +"account_email_validation_message" = "Ma ulac aɣilif, senqed imayl-ik/im syen sit ɣef useɣwen i yellan. Akken ara yemmed waya, sit ad tkemmleḍ."; +"account_email_validation_title" = "Asenqed yettṛaǧu"; + +// Account +"account_save_changes" = "Sekles ibeddilen"; +"room_event_encryption_verify_ok" = "Senqed"; +"room_event_encryption_info_unblock" = "Kkes seg tebdart taberkant"; +"room_event_encryption_info_block" = "Tabdart taberkant"; +"room_event_encryption_info_unverify" = "Ur yettusenqed ara"; +"room_event_encryption_info_device_blocked" = "Deg tebdart taberkant"; +"room_event_encryption_info_device_verified" = "Yettwasenqed"; +"room_event_encryption_info_event_none" = "ulac"; +"device_details_delete_prompt_message" = "Tamahelt-a tesra asentem-nniḍen.\nI ukemmel, ma ulac aɣilif sekcem awal-ik·im uffir."; +"device_details_delete_prompt_title" = "Asesteb"; +"device_details_rename_prompt_message" = "Isem n tiɣimit tazayezt yettban i yimdanen wukud tettmeslayeḍ"; + +// Settings +"settings" = "Iɣewwaren"; +"notice_encrypted_message" = "Izen yettwawgelhen"; +"notice_room_join_rule_invite_by_you_for_dm" = "Tgiḍ aya i tinubga kan."; +"notice_room_join_rule_invite_by_you" = "Terriḍ taxxamt s tinubga kan."; +"unignore" = "Ur yettwazgel ara"; +"ignore" = "Ttu"; +"show_details" = "Sken talqayt"; +"cancel_download" = "Sefsex Asider"; +"cancel_upload" = "Sefsex Asali"; +"select_all" = "Fren kulec"; +"reset_to_default" = "Wennez ɣer umezwer"; +"mention" = "Abder"; +"start_video_call" = "Yebda usiwel s tvidyut"; +"start_voice_call" = "Yebda usiwel s taɣect"; +"submit" = "Azen"; +"sign_up" = "Jerred"; +"dismiss" = "Agi"; +"discard" = "Ignorer"; +"abort" = "Sefsex"; +"yes" = "Ih"; + +// Action +"no" = "Uhu"; +"login_error_resource_limit_exceeded_contact_button" = "Nermes anedbal"; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Aqeddac-a agejdan yewweḍ ɣer talast n useqdac urmid n wayyur."; +"login_error_resource_limit_exceeded_message_default" = "Aqeddac-a agejdan iɛedda yiwet seg tlisa-ines tiɣbula."; +"login_error_resource_limit_exceeded_title" = "Talast n yiɣbula tettuɛedda"; +"login_desktop_device" = "Aniraw"; +"login_tablet_device" = "Taṭablit"; +"login_mobile_device" = "Aziraz"; +"login_leave_fallback" = "Sefex"; +"login_error_login_email_not_yet" = "Aseɣwen n yimayl iɣef mazal ur yettusit ara fell-as"; +"login_error_user_in_use" = "Isem n useqdac-a yettwaseqdac yakan"; +"login_error_limit_exceeded" = "Aṭas n yisuturen i yettwaznen"; +"login_error_not_json" = "Ulac deg-s JSON ameɣtu"; +"login_error_bad_json" = "JSON ur yemsil ara akken iwata"; +"login_error_unknown_token" = "Ajuṭu n unekcum i yettwafernen ur yettwassen ara"; +"login_error_forbidden" = "Isem n uqeddac/awal uffir d arameɣtu"; +"login_email_placeholder" = "Tansa n l'email"; +"login_password_placeholder" = "Mot de passe"; +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "Matrix"; +"account_msisdn_validation_message" = "Ad naze-n SMS deg-s tangalt n usenqed. Ttxil-k·m sekcem tangalt-a ddaw."; +"login_server_url_placeholder" = "URL (e.g. https://matrix.org)"; +"notification_settings_per_room_notifications" = "Ilɣa s texxamt"; +"notification_settings_per_word_notifications" = "Ilɣa s awal"; +"notice_redaction_by_you" = "Tsemsawiḍ aneḍru (asulay: %@)"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Tesfesxeḍ tinubga n %@"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ isefsex tinubga n %@"; +"device_details_last_seen" = "Timeẓri taneggarut\n"; +"notice_feedback" = "Aneḍru n timawin (asulay: %@): %@"; +"login_error_registration_is_not_supported" = "Iklasen ur ttusefraken ara akka tura"; +"ssl_only_accept" = "Ur qebbel ara aselkin alamma isuffeɣ-d unedbal n uqeddac adsil umḍin yemṣadan d win yellan ddaw-a."; +"ssl_fingerprint_hash" = "Adsil umḍin (%@):"; +"call_invite_expired" = "Ancad ɣer usiwel yezri"; + +// Settings keys + +// call string +"call_waiting" = "Yettraǧu..."; +"notification_settings_other_alerts" = "Ilɣuten-nniḍen"; +"notification_settings_select_room" = "Fren taxxamt"; +"notification_settings_sender_hint" = "@user:domain.com"; +"notification_settings_highlight" = "Asebrureq"; +"notification_settings_never_notify" = "Ur ttelɣu ara akk"; +"notification_settings_always_notify" = "Selɣu yal tikkelt"; +"notification_settings_enable_notifications" = "Rmed ilɣa"; +"num_members_other" = "%@ iseqdacen"; +"num_members_one" = "%@ n useqdac"; +"membership_ban" = "Yettwagdel"; +"notice_profile_change_redacted_by_you" = "Tleqqmeḍ amaɣnu-inek·inem %@"; +"notice_event_redacted_by_you" = " sɣur-k·m"; +"notice_display_name_set_by_you" = "Tesbadud isem n uskan ɣer %@"; +"notice_room_unban_by_you" = "Tgedleḍ %@"; +"notice_room_third_party_registered_invite_by_you" = "Tqebleḍ tinubga n %@"; +"notice_room_third_party_invite_by_you_for_dm" = "Tnecdeḍ-d %@"; +"notice_room_invite_you" = "%@ inced-ik·kem-id"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "Tnecdeḍ-d %@"; +"notice_conference_call_request" = "%@ isuter asarag VoIP"; +"notice_ended_video_call" = "%@ iḥbes asiwel"; +"notice_answered_video_call" = "%@ yerra ɣef usiwel"; +"notice_placed_video_call" = "%@ isɛedda siwel s tvidyut"; +"notice_placed_voice_call" = "%@ isɛedda asiwel s taɣect"; +"notice_avatar_url_changed" = "%@ t·ibeddel·t avatar-ines"; +"notice_room_ban" = "%@ igdel %@"; +"notice_room_unban" = "%@ ur yegdil ara %@"; +"notice_room_kick" = "%@ isuffeɣ %@"; +"notice_room_reject" = "%@ yugi tinubga"; +"notice_room_leave" = "%@ azelmaḍ"; +"notice_room_join" = "%@ yerna"; +"notice_room_third_party_registered_invite" = "%@ yeqbel tinnubga n %@"; +"notice_room_third_party_invite_for_dm" = "%@ inced-d %@"; + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /matrix-sdk/src/main/res/values/strings.xml. +*/ + +"notice_room_invite" = "%@ inced-d %@"; +"ssl_homeserver_url" = "URL n uqeddac agejdan: %@"; +"user_id_placeholder" = "am.: @bob:amedya.com"; +"network_error_not_reachable" = "Ma ulac aɣilif senqed tuqqna-inek·inem"; +"offline" = "aruqqin"; + +// Others +"user_id_title" = "Asulay n useqdac:"; +"format_time_m" = "m"; +"search_searching" = "Anadi la iteddu..."; + +// Search +"search_no_results" = "Ulac igmaḍ"; +"contact_local_contacts" = "Inermisen idiganen"; + +// Contacts +"contact_mx_users" = "Iseqdacen n Matrix"; +"attachment_e2e_keys_import" = "Kter..."; +"attachment_large" = "Meqqer: %@"; +"attachment_medium" = "Alemmas: %@"; +"attachment_small" = "Mecṭuḥ: %@"; +"message_reply_to_sender_sent_a_file" = "yuzen afaylu."; +"message_reply_to_sender_sent_a_video" = "yuzen-d tavidyut."; + +// Reply to message +"message_reply_to_sender_sent_an_image" = "Azen tugna."; + +// Room +"room_please_select" = "Ttxil-k·m fren taxxamt"; +"room_creation_participants_title" = "Imttekkiyen:"; +"room_creation_alias_placeholder_with_homeserver" = "(am. +foo%@)"; +"room_creation_name_placeholder" = "(am. lunchGroup)"; + +// Room creation +"room_creation_name_title" = "Isem n texxamt:"; +"account_error_msisdn_wrong_description" = "Ur yettban ara wagi d uṭṭun n tiliɣri ameɣtu"; +"account_error_msisdn_wrong_title" = "Yir uṭṭun n tiliɣri"; +"account_error_matrix_session_is_not_opened" = "Tiɣimit n Matrix ur teldi ara"; +"account_email_validation_error" = "Ulamek akk tettwasenqed tansa n yimayl. Ma ulac aɣilif senqed imayl-inek·inem syen sit ɣef useɣwen yellan deg-s. Akken ara tgeḍ aya, sit ɣef kemmel"; +"room_event_encryption_info_verify" = "Senqed..."; +"room_event_encryption_info_device_not_verified" = "UR yettwasenqed ARA"; +"room_event_encryption_info_device_fingerprint" = "Adsil umḍin Ed25519\n"; +"room_event_encryption_info_device_name" = "Isem azayez\n"; +"room_event_encryption_info_event_unencrypted" = "ur yettwawgelhen ara"; +"room_event_encryption_info_event_decryption_error" = "Tuccḍa deg tukksa n uwgelhen\n"; +"room_event_encryption_info_event_algorithm" = "Alguritm\n"; +"room_event_encryption_info_event_fingerprint_key" = "Tasarut n udsil umḍin Ed25519 tettusra\n"; +"room_event_encryption_info_event_identity_key" = "Tasarut n timagit Curve25519\n"; +"room_event_encryption_info_event_user_id" = "Asulay n useqdac\n"; +"room_event_encryption_info_event" = "Talɣut n uneḍru\n"; + +// Encryption information +"room_event_encryption_info_title" = "Talɣut n uwgelhen seg yixef ɣer yixef\n\n"; +"device_details_rename_prompt_title" = "Isem n tɣimit"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_name" = "Isem azayez\n"; + +// Devices +"device_details_title" = "Talɣut ɣef tɣimit\n"; +"notification_settings_room_rule_title" = "Taxxamt: '%@'"; +"settings_enter_validation_token_for" = "Sekcem ajiṭun n usentem i %@:"; +"settings_enable_push_notifications" = "Rmed ilɣa n push"; +"room_displayname_more_than_two_members" = "%@ d %@ d wiyaḍ"; +"room_displayname_two_members" = "%@ akked %@"; + +// room display name +"room_displayname_empty_room" = "Texxamt tilemt"; +"notice_crypto_unable_to_decrypt" = "**Ukamek yettwakkes uwgelhen: %@**"; +"notice_invalid_attachment" = "taceqquft yeddan d tarameɣtut"; +"notice_file_attachment" = "afaylu yeddan"; +"notice_room_related_groups" = "Igrawen icudden ɣer texxamt-a d: %@"; +"notice_room_join_rule_public" = "%@ yerra taxxamt d tazayazt."; +"notice_room_created_for_dm" = "%@ yerna."; +"notice_room_created" = "%@ yerna taxxamt syen iswel-itt."; +"notice_profile_change_redacted" = "%@ leqqmen amaɣnu-nsen %@"; +"notice_event_redacted_by" = " s %@"; +"notice_event_redacted" = ""; + +// Events formatter +"notice_avatar_changed_too" = "(ula d avaṭar yettubeddel)"; +"reject_call" = "Agi asiwel"; +"answer_call" = "Err ɣef usiwel"; +"resend_message" = "Ales tuzna n yizen"; +"capture_media" = "Ṭṭef tawlaft/tavidyut"; +"select_account" = "Fren amiḍan"; +"start_chat" = "Bdu adiwenni"; +"set_admin" = "Sbadu anedbal"; +"submit_code" = "Azen tangalt"; +"login_error_resource_limit_exceeded_message_contact" = "\n\nTtxil-k·m nermes anedbal-ik·im n uqeddac i wakken ad tkemmleḍ aseqdec n uqeddac-a."; +"register_error_title" = "Ajerred yecceḍ"; +"login_invalid_param" = "Aɣewwar d arameɣtu"; +"login_use_fallback" = "Seqdec asebtar n ufrananeggaru"; +"login_prompt_email_token" = "Ttxil-k sekcem ajuṭu-inek·inem n usentem n yimayl:"; +"login_optional_field" = "d afrayan"; +"login_identity_server_title" = "URL n uqeddac n timagit:"; +"login_home_server_title" = "URL n uqeddac agejdan:"; + +// Login Screen +"login_create_account" = "Rnu amiḍan:"; +"notification_settings_per_word_info" = "Awalen i d-yettwafen s war ma nefka azal i umṣada n yisekkilen, i izemren ad yesεu ajukeṛ *. Ihi:\nfoo yufa-d azrir foo zzin-as-d s yijemmaqen n wawalen (am. aisgez, tallunt d tazwara neɣ taggara n yizirig).\nfoo* yufa-d meṛṛa awalen i ibeddun s foo.\n*foo* yufa-d akk awalen ideg llan kraḍ n yisekkilen-a foo."; +"notification_settings_global_info" = "Iɣewwaren n yilɣa ttuskelsen deg umiḍan-inek·inem n useqdac, ad ttwabḍun gar meṛṛa imsaɣen ara ten-isferken (ula d iɣewwaren n tnarit).\n\nIlugan ttusnasen akken myezwaren; alugan amezwaru i yemṣadan tesbaduy agmuḍ n yizen.\nIhi: Ilɣa s wawal sεan azal ugar n yilɣa s texxamt i yesεan azal ula d nutni ɣef yilɣa s umazan.\nI wugar n yilugan n yiwen wanaw, amezwaru deg tebdart yemṣadan d netta i d tazwart."; +"local_contacts_access_discovery_warning" = "I usnirem n yinermisen s useqdec yakan n Matrix, %@ yezmer ad yazen tansiwin n yimayl d wuṭṭunen n tiliɣri n udlis-inek·inem n tansiwin ɣer uqeddac-inek·inem n timagit n Matrix i tferneḍ. Ma yella yettusefrak, isefka-inek·inem udmawanen ad ttwagzamen send ad ttwaznen - ttxil-k·m senqed tasertit n tudert tabaḍnit n uqeddac-ik·im n timagit i wugar n telqayt."; +"local_contacts_access_not_granted" = "I usnirem n yiseqdacen seg yinermisen idiganen, anekcum ɣer yinermisen yettusra maca %@ ur yesεi ara tisirag ad t-iseqdec"; +"e2e_export_prompt" = "Akala-a ad ak·am-imudd tisirag i usifeḍ n tsura n yiznan i d-tremseḍ deg texxamin yettwawgelhen, ɣer ufaylu adigan. Syen tzemreḍ ad tketreḍ afaylu deg umsaɣ-nniḍen n Matrix, i wakken amsaɣ-a ad yizmir ad yekkes awgelhen i yiznan-a.\nAfaylu i d-yettusifḍen ad imudd tisirag i yal win i izemren ad t-iɣer, ad yekkes awgelhen i yiznan yettwawgelhen i tzemreḍ ad twaliḍ. Γef waya ilaq ad t-tḥerzeḍ deg wadeg aɣellsan."; +"e2e_import_prompt" = "Akala-a ad ak·am-imudd tisirag i wakken ad tketreḍ tisura i d-tsifḍeḍ yakan seg umsaɣ-nniḍen n Matrix. Tzemreḍ mbeεd ad tekkseḍ awgelhen n yal izen iwumi yezmer umsaɣ-nniḍen ad asen-yekkes awgelhen.\nAfaylu i d-yettisifḍen yettwammesten s tefyirt tuffirt. Ilaq ad teskecmeḍ tafyirt tuffirt dagi, i wakken ad tekkseḍ awgelhen i ufaylu."; +"attachment_e2e_keys_file_prompt" = "Afaylu-a deg-s tisura n uwgelhen ttusifḍent-d seg umsaɣ Matrix.\nTebɣiḍ ad twaliḍ agbur n ufaylu neɣ ad d-tketreḍ tisura i yellan deg-s?"; +"room_error_timeline_event_not_found" = "Asnas yettaεraḍ ad d-isali kra n wagazen ufrinen deg tesnakudt n texxamt, maca ur tt-yifi ara"; +"room_event_encryption_verify_message" = "I usenqed n tɣimit-a ma tzemreḍ ad tettekleḍ fell-as, ttxil-k·m nermes bab-is s useqdec s ubrid-nniḍen (am. s timmad-is neɣ s usiwel) syen steqsi-t ma yella tasarut i yettwali deg yiɣewwaren-is n useqdac n tɣimit-a temṣada d tsarut yellan ddaw:\n\n Isem n tɣimit: %@\n Asulay n texxamt: %@\n Tasarut n texxamt: %@\n\nMa yella mṣadant, sit ɣef tqeffalt n usenqed ddaw. Ma yella ur mṣadant ara, ihi yella win i yettεekkiṛen tiɣimit-a, neɣ ahat tebɣiḍ ad tsiteḍ ɣef tqeffalt n tebdart taberkant deg ubdel.\n\nΓer sdat, akala-a n usenqed-a ad yuɣal yemmed ugar."; +"call_connecting" = "Asiwel iteddu..."; + +// gcm section +"notification_settings_by_default" = "S umezwer..."; +"notification_settings_suppress_from_bots" = "Kkes ilɣa n yiṛubuten"; +"notification_settings_receive_a_call" = "Lɣu-yi-d mi ara yi-d-yaweḍ usiwel"; +"notification_settings_people_join_leave_rooms" = "Lɣu-yi-d mi ara ad d-rnun neɣ ad ǧǧen yimdanen tixxamin"; +"notification_settings_invite_to_a_new_room" = "Lɣu-yi-d mi ara ttunecdeɣ ɣer texxamt tamaynut"; +"notification_settings_just_sent_to_me" = "Lɣu-yi-d s yimesli ɣef yiznan i d-yettwaznen i nekk kan"; +"notification_settings_contain_my_display_name" = "Lɣu-yi-d s yimesli ɣef yiznan ideg yella yisem-iw ameskan"; +"notification_settings_contain_my_user_name" = "Lɣu-yi-d s yimesli ɣef yiznan ideg yella yisem-inu n useqdac"; +"notification_settings_per_sender_notifications" = "Ilɣa s umazan"; +"notification_settings_custom_sound" = "imesli udmawan"; +"notification_settings_word_to_match" = "awala ara d-yettwafen"; +"notification_settings_enable_notifications_warning" = "Meṛṛa ilɣa nsan akka tura ɣef meṛṛa ibenkan."; + +// Notification settings screen +"notification_settings_disable_all" = "Sens meṛṛa ilɣa"; + +// contacts list screen +"invitation_message" = "Bɣiɣ ad mmeslayeɣ yid-k·m s Matrix. Ttxil-k·m, rzu ɣer usmel web http://matrix.org i wugar n talɣut."; + +// Login Screen +"login_error_already_logged_in" = "Yeqqen yakan"; +"message_unsaved_changes" = "Llan isenfal ur nettusekles ara. Tuffɣa ad ten-tsefsex."; +"unban" = "Kkes agdel"; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Terriḍ iznan si sya d asawen ad ttbanen i yal yiwen, segmi ara d-rnun."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Terriḍ azray n texxamt si sya d asawen ad d-yettban i meṛṛa imttekkiyen n texxamt, sgmi ara d-rnun."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Terriḍ iznan si sya d asawen ad d-ttbanen i yal yiwen, segmi ara d-ttusnubegten."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Terriḍ azray n texxamt si sya d asawen ad d-yettban i meṛṛa imttekkiyen n texxamt, segmi ara d-ttusnubegten."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Terriḍ iznan si sya ɣer sdat ad d-ttbanen i meṛṛa imttekkiyen n texxamt."; +"notice_room_history_visible_to_members_by_you" = "Terriḍ azray n texxamt si sya ɣer sdat ad d-yettban i meṛṛa imttekkiyen n texxamt."; +"notice_room_history_visible_to_anyone_by_you" = "Terriḍ azray n texxamt si sya ɣer sdat ad yettban i yal yiwen."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Tremdeḍ awgelhen seg yixef ɣer yixef (alguritm d arussin %@)."; +"notice_encryption_enabled_ok_by_you" = "Tremdeḍ awgelhen seg yixef ɣer yixef."; +"notice_room_topic_removed_by_you" = "Tekkseḍ asentel"; +"notice_room_name_removed_by_you_for_dm" = "Tekkseḍ isem"; +"notice_room_name_removed_by_you" = "Tekkseḍ isem n texxamt"; +"notice_ended_video_call_by_you" = "Tekfiḍ asiwel"; +"notice_answered_video_call_by_you" = "Terriḍ ɣef usiwel"; +"notice_placed_video_call_by_you" = "Tseεeddaḍ asiwel s tvidyut"; +"notice_placed_voice_call_by_you" = "Tesεeddaḍ asiwel s umeslaw"; +"notice_room_name_changed_by_you_for_dm" = "Tbeddleḍ isem s %@."; +"notice_room_name_changed_by_you" = "Tbeddleḍ isem n texxamt s %@."; +"notice_topic_changed_by_you" = "Tbeddleḍ asentel s \"%@\"."; +"notice_display_name_removed_by_you" = "Tekkzeḍ isem-inek·inem ameskan"; +"notice_display_name_changed_from_by_you" = "Tbeddleḍ isem-inek ameskan seg %@ ɣer %@"; +"notice_room_withdraw_by_you" = "Tesfesxeḍ tinubga n %@"; +"notice_room_kick_by_you" = "Tsuffɣeḍ %@"; +"notice_room_ban_by_you" = "Tgedleḍ %@"; +"notice_room_third_party_revoked_invite_by_you" = "Tekkseḍ tinubga n %@ i wakken ad d-yernu ɣer texxamt"; +"notice_room_third_party_invite_by_you" = "Tuzneḍ tinubga i %@ i wakken ad d-yernu ɣer texxamt"; +"notice_room_name_changed_for_dm" = "%@ ibeddel isem s %@."; +"notice_room_name_changed" = "%@ ibeddel isem n texxamt s %@."; +"notice_topic_changed" = "%@ ibeddel asentel s \"%@\"."; +"notice_display_name_removed" = "%@ yekkes isem-is ameskan"; +"notice_display_name_changed_from" = "%@ ibeddel isem-is ameskan seg %@ ɣer %@"; +"notice_display_name_set" = "%@ yesbadu isem-ines ameskan s %@"; +"notice_room_reason" = "Ssebba: %@"; +"notice_room_withdraw" = "%@ isefsex tinubga n %@"; +"notice_room_third_party_revoked_invite" = "%@ yekkes tinubga n %@ i wakken ad d-yernu ɣer texxamt"; +"notice_room_third_party_invite" = "%@ yuzen tinubga i %@ i wakken ad d-yernu  ɣer texxamt"; +"language_picker_default_language" = "Amezwer (%@)"; + +// Language picker +"language_picker_title" = "Fren tutlayt"; +"local_contacts_access_discovery_warning_title" = "Asnirem n yiseqdacen"; +"microphone_access_not_granted_for_call" = "Isawalen sran ad kecmen ɣer usawaḍ maca %@ ur yesεi ara tisirag ad t-iseqdec"; + +// Permissions +"camera_access_not_granted_for_call" = "Isawalen s tvidyut sran anekcum ɣer tkamiṛat maca %@ ur yesεi ara tisirag ad tt-iseqdec"; +"power_level" = "Aswir n tezmert"; +"not_supported_yet" = "Ur yettusefrak ara akka tura"; +"error_common_message" = "Tella-d tuccḍa. Ttxil-kṃ εreḍ tikkelt-nniḍen ticki."; +"unsent" = "Ur yettwazen ara"; +"attachment_multiselection_original" = "Teɣzi tamirant"; +"attachment_multiselection_size_prompt" = "Tebɣiḍ ad tazneḍ iznan d:"; +"attachment_original" = "Teɣzi tamirant: %@"; + +// Attachment +"attachment_size_prompt" = "Tebɣiḍ ad t-tazneḍ d:"; + +// Room members +"room_member_ignore_prompt" = "D tidet tebɣiḍ ad teffreḍ meṛṛa iznan i d-yusan sɣur aseqdac-a?"; +"message_reply_to_message_to_reply_to_prefix" = "D tiririt i"; +"message_reply_to_sender_sent_an_audio_file" = "yuzen afaylu ameslaw."; +"room_error_cannot_load_timeline" = "Asali n tesnakudt ur yeddi ara"; +"room_error_topic_edition_not_authorized" = "Ur tesεiḍ tisirag ad tesnefleḍ asentel n texxamt-a"; +"room_error_name_edition_not_authorized" = "Ur tesεiḍ ara tisirag ad tesnefleḍ isem n texxamt-a"; +"room_error_join_failed_empty_room" = "D awezɣi akka tura ad talseḍ tuɣalin ɣer texxamt tilemt."; +"room_creation_participants_placeholder" = "(am. @bob:homeserver1; @john:homeserver2...)"; +"room_creation_alias_placeholder" = "(am. #foo:example.org)"; +"room_creation_alias_title" = "Isem yettunefken i texxamt:"; +"account_error_push_not_allowed" = "Ilɣa ur ttusirgen ara"; +"account_error_picture_change_failed" = "Asenfel n tugna yecceḍ"; +"account_error_display_name_change_failed" = "Asenfel n yisem ameskan yecceḍ"; +"account_linked_emails" = "Imaylen yettwacudden"; +"account_link_email" = "Rnu imayl"; +"room_event_encryption_verify_title" = "Senqed tiɣimit\n\n"; +"room_event_encryption_info_device_verification" = "Asenqed\n"; +"room_event_encryption_info_device_id" = "Asulay\n"; +"room_event_encryption_info_device_unknown" = "tiɣimit tarussint\n"; +"room_event_encryption_info_device" = "\nTalɣut n tɣimit n umazan\n"; +"room_event_encryption_info_event_session_id" = "Asulay n tɣimit\n"; +"device_details_identifier" = "Asulay\n"; +"settings_enable_inapp_notifications" = "Rmed ilɣa deg usnas"; +"notice_in_reply_to" = "D tiririt i"; +"notice_sticker" = "astiker"; +"notice_crypto_error_unknown_inbound_session_id" = "Tiɣimit n umazan ur aɣ-d-tuzin ara tisura i yizen-a."; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ yerra iznan si sya ɣer sdat ttbanen i yal yiwen, seg wasmi ara d-rnun."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ yerra azray n texxamt si sya ɣer sdat yettban i meṛṛa imttekkiyen, seg wasmi ara d-rnun."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ yerra azray n texxamt si sya ɣer sdat yettban i yal yiwen, segmi ara d-yettusnubget."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ yerra azray n texxamt si sya ɣer sdat yettban i meṛṛa imttekkiyen n texxamt, seg wasmi ara d-ttusnubegten."; +"notice_room_history_visible_to_anyone" = "%@ yerra azray n texxamt si sya ɣer sdat yettban i yal yiwen."; +"notice_room_history_visible_to_members" = "%@ yerra azray n texxamt si sya ɣer sdat yettban i meṛṛa imttekkiyen n texxmat."; +"notice_room_history_visible_to_members_for_dm" = "%@ yerra iznan si sya ɣer sdat ttbanen i meṛṛa imttekkiyen n texxamt."; +"notice_error_unknown_event_type" = "Anaw n uneḍru d arussin"; +"notice_error_unexpected_event" = "Aneḍru ur nettwaṛǧæ ara"; +"notice_error_unsupported_event" = "Aneḍru ur yettusefrak ara"; +"notice_redaction" = "%@ yekkes aneḍru (asulay: %@)"; +"notice_unsupported_attachment" = "taceqquft yeddan ur tettusefrak ara: %@"; +"notice_location_attachment" = "adig yeddan"; +"notice_video_attachment" = "tavidyut yeddan"; +"notice_audio_attachment" = "ameslaw yeddan"; +"notice_image_attachment" = "tugna yeddan"; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ yermed awgelhen seg yixef ɣer yixef (alguritm %2$@ d arussin)."; +"notice_encryption_enabled_ok" = "%@ yermed awgelhen seg yixef ɣer yixef."; +"notice_room_aliases_for_dm" = "Ismawen yettunefken d: %@"; +"notice_room_aliases" = "Ismawen yettunefken i texxamt d: %@"; +"notice_room_power_level_event_requirement" = "Iswiren n tezmert addayen icudden ɣer yineḍruyen d:"; +"notice_room_power_level_acting_requirement" = "Iswiren n tezmert addayen i yezmer ad yesεu useqdac send asedmer d:"; +"notice_room_power_level_intro" = "Aswir n tezmert n yimttekkiyen n texxamt d:"; +"notice_room_power_level_intro_for_dm" = "Aswir n tezmert n yimttekkiyen d:"; +"notice_room_join_rule_public_by_you_for_dm" = "Terriḍ aya d azayaz."; +"notice_room_join_rule_public_by_you" = "Terriḍ taxxamt d tazayazt."; +"notice_event_redacted_reason" = " [ssebba: %@]"; +"notice_room_join_rule_public_for_dm" = "%@ yerra aya d azayaz."; +"notice_room_join_rule_invite_for_dm" = "%@ yerra aya s tinubga kan."; +// New +"notice_room_join_rule_invite" = "%@ yerra taxxamt s tinubga kan."; +// Old +"notice_room_join_rule" = "Alugan n tmerna d: %@"; +"notice_room_topic_removed" = "%@ yekkes asentel"; +"notice_room_name_removed" = "%@ yekkes isem n texxamt"; +"notice_room_name_removed_for_dm" = "%@ yekkes isem"; +"end_call" = "Kfu asiwel"; +"invite_user" = "Snubget-d aseqdac n Matrix"; +"attach_media" = "Seddu amidyat seg temkarḍit"; +"set_moderator" = "Sbadu imḍebber"; +"set_power_level" = "Sbadu aswir n tezmert"; +"set_default_power_level" = "Wennez aswir n tezmert"; +"login_error_forgot_password_is_not_supported" = "Tatut n wawal uffir ur yettusefrak ara akka tura"; +"login_error_do_not_support_login_flows" = "Akka tura ur nsefrak ara ula yiwen neɣ meṛṛa aragen yettusbadun s uqeddac-a agejdan"; +"login_error_no_login_flow" = "Tiririt n telɣut n usesteb seg uqeddac-a agejdan ur teddi ara"; +"login_error_title" = "Anekcum yecceḍ"; +"login_email_info" = "Afran n tansa n yiamyl tettaǧǧa iseqdacen-nniḍen ad ak·akem-afen deg Matrix s sshala, rnu ad ak-tmudd abrid ad twennzeḍ awala-ik·im uffir ar sdat."; +"login_display_name_placeholder" = "Isem yettwaskanen (am. Bob Obson)"; +"login_user_id_placeholder" = "Asulay n Matrix (am. @bob:matrix.org neɣ bob)"; +"login_identity_server_info" = "Matrix yettmuddu-d iqeddacen n timagit i ucuddu n yimaylen, atg. Wuɣur ttuɣalen yisulayen n Matrix. Ala https://matrix.org i yellan akka tura."; +"login_home_server_info" = "Aqeddac-ik·im agejdan isseklas meṛṛa idiwenniyen-inek·inem d yisefka n umiḍan-inekịnem"; diff --git a/Riot/Assets/ko.lproj/InfoPlist.strings b/Riot/Assets/ko.lproj/InfoPlist.strings index 6d552730f..45ef46ab9 100644 --- a/Riot/Assets/ko.lproj/InfoPlist.strings +++ b/Riot/Assets/ko.lproj/InfoPlist.strings @@ -1,6 +1,8 @@ // Permissions usage explanations "NSCameraUsageDescription" = "카메라는 사진과 영상 촬영, 영상 통화를 하는 데 쓰입니다."; "NSPhotoLibraryUsageDescription" = "포토 라이브러리는 사진과 영상을 보내는데 쓰입니다."; -"NSMicrophoneUsageDescription" = "마이크는 영상 촬영, 통화에 쓰입니다."; -"NSContactsUsageDescription" = "이미 Matrix를 사용하는 연락처 사람들을 검색하기 위해, Riot은 당신이 선택한 Matrix ID 서버로 이메일 주소와 전화번호를 보낼 수 있습니다. 서버가 지원된다면, 개인 정보는 보내기 전에 해시됩니다 - 더 자세한 정보는 ID 서버의 개인 정보 정책을 확인해주세요."; +"NSMicrophoneUsageDescription" = "Element는 통화와 동영상 촬영 및 음성 메시지 녹음을 하기 위해 마이크에 액세스해야 합니다."; +"NSContactsUsageDescription" = "Element는 채팅에 초대할 수 있도록 연락처를 표시합니다."; "NSCalendarsUsageDescription" = "앱에서 예정된 회의를 봅니다."; +"NSLocationWhenInUseUsageDescription" = "사람들에게 위치 정보를 공유할때, Element에서 지도를 표시 하기 위한 권한이 필요합니다."; +"NSFaceIDUsageDescription" = "Face ID 권한은 앱에 액세스하는 데 사용됩니다."; diff --git a/Riot/Assets/ko.lproj/Localizable.strings b/Riot/Assets/ko.lproj/Localizable.strings index 32f536333..835cd8211 100644 --- a/Riot/Assets/ko.lproj/Localizable.strings +++ b/Riot/Assets/ko.lproj/Localizable.strings @@ -1,11 +1,11 @@ /* New message from a specific person, not referencing a room */ -"MSG_FROM_USER" = "%@님이 메시지를 보냈습니다"; +"MSG_FROM_USER" = "%@ 님이 메시지를 보냈습니다"; /* New message from a specific person in a named room */ -"MSG_FROM_USER_IN_ROOM" = "%@님, %@ 방에 게시함"; +"MSG_FROM_USER_IN_ROOM" = "%@ 님이 %@ 에 게시함"; /* New message from a specific person, not referencing a room. Content included. */ "MSG_FROM_USER_WITH_CONTENT" = "%@: %@"; /* New message from a specific person in a named room. Content included. */ -"MSG_FROM_USER_IN_ROOM_WITH_CONTENT" = "%@님, %@ 방에서: %@"; +"MSG_FROM_USER_IN_ROOM_WITH_CONTENT" = "%@ 님이 %@ 에서: %@"; /* New action message from a specific person, not referencing a room. */ "ACTION_FROM_USER" = "* %@ %@"; /* New action message from a specific person in a named room. */ @@ -13,44 +13,119 @@ /* New action message from a specific person, not referencing a room. */ "IMAGE_FROM_USER" = "%@님이 사진을 보냈습니다 %@"; /* A single unread message in a room */ -"SINGLE_UNREAD_IN_ROOM" = "%@ 방에서 메시지를 받았습니다"; +"SINGLE_UNREAD_IN_ROOM" = "%@ 에서 메시지를 받았습니다"; /* A single unread message */ "SINGLE_UNREAD" = "메시지를 받았습니다"; /* 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 */ -"USER_INVITE_TO_CHAT_GROUP_CHAT" = "%@님이 그룹 대화에 당신을 초대했습니다"; +"USER_INVITE_TO_CHAT_GROUP_CHAT" = "%@ 님이 그룹 대화에 초대했습니다"; /* Incoming one-to-one voice call */ -"VOICE_CALL_FROM_USER" = "%@님이 건 전화"; +"VOICE_CALL_FROM_USER" = "%@ 님이 건 전화"; /* Incoming one-to-one video call */ -"VIDEO_CALL_FROM_USER" = "%@님이 건 영상 통화"; +"VIDEO_CALL_FROM_USER" = "%@ 님이 건 영상 통화"; /* Incoming unnamed voice conference invite from a specific person */ -"VOICE_CONF_FROM_USER" = "%@님이 건 그룹 통화"; +"VOICE_CONF_FROM_USER" = "%@ 님이 건 그룹 통화"; /* Incoming unnamed video conference invite from a specific person */ -"VIDEO_CONF_FROM_USER" = "%@님이 건 영상 그룹 통화"; +"VIDEO_CONF_FROM_USER" = "%@ 님이 건 그룹 영상 통화"; /* Sticker from a specific person, not referencing a room. */ -"STICKER_FROM_USER" = "%@님이 스티커를 보냈습니다"; +"STICKER_FROM_USER" = "%@ 님이 스티커를 보냈습니다"; /* A user has invited you to a named room */ -"USER_INVITE_TO_NAMED_ROOM" = "%@님이 %@ 방으로 당신을 초대했습니다"; +"USER_INVITE_TO_NAMED_ROOM" = "%@ 님이 %@ 으로 초대했습니다"; /* Message title for a specific person in a named room */ -"MSG_FROM_USER_IN_ROOM_TITLE" = "%@님, %@ 방에 있음"; +"MSG_FROM_USER_IN_ROOM_TITLE" = "%@ 님 (%@ 에서)"; /* New action message from a specific person in a named room. */ -"IMAGE_FROM_USER_IN_ROOM" = "%@님이 사진을 보냈습니다 %@, %@ 방에서"; +"IMAGE_FROM_USER_IN_ROOM" = "%@ 님이 사진을 보냈습니다: %@ (%@ 방에서)"; /* Multiple unread messages in a room */ -"UNREAD_IN_ROOM" = "%@개의 새 메시지, %@ 방에서"; +"UNREAD_IN_ROOM" = "%@ 개의 새 메시지 (%@ 에서)"; /* Multiple unread messages from a specific person, not referencing a room */ -"MSGS_FROM_USER" = "%@개의 새 메시지, %@님으로부터"; +"MSGS_FROM_USER" = "%@ 개의 새 메시지 (%@ 님으로부터)"; /* Multiple unread messages from two people */ -"MSGS_FROM_TWO_USERS" = "%@개의 새 메시지, %@님과 %@님으로부터"; +"MSGS_FROM_TWO_USERS" = "%@ 개의 새 메시지 (%@ 님과 %@ 님으로부터)"; /* Multiple unread messages from three people */ -"MSGS_FROM_THREE_USERS" = "%@개의 새 메시지, %@님과 %@님, %@님으로부터"; +"MSGS_FROM_THREE_USERS" = "%@ 개의 새 메시지 (%@ 님과 %@ 님, %@ 님으로부터)"; /* Multiple unread messages from two plus people (ie. for 4+ people: 'others' replaces the third person) */ -"MSGS_FROM_TWO_PLUS_USERS" = "%@개의 새 메시지, %@님과 %@님 외 여러 명으로부터"; +"MSGS_FROM_TWO_PLUS_USERS" = "%@ 개의 새 메시지 (%@ 님과 %@ 님 외 여러 명으로부터)"; /* Multiple messages in two rooms */ -"MSGS_IN_TWO_ROOMS" = "%@개의 새 메시지, %@ 방과 %@ 방에서"; +"MSGS_IN_TWO_ROOMS" = "%@ 개의 새 메시지 (%@ 방과 %@ 방에서)"; /* Look, stuff's happened, alright? Just open the app. */ -"MSGS_IN_TWO_PLUS_ROOMS" = "%@개의 새 메시지, %@ 방과 %@ 방 외 여러 방에서"; +"MSGS_IN_TWO_PLUS_ROOMS" = "%@ 개의 새 메시지 (%@ 방과 %@ 방 외 여러 방에서)"; /* Incoming named voice conference invite from a specific person */ -"VOICE_CONF_NAMED_FROM_USER" = "%@님이 건 그룹 통화: '%@'"; +"VOICE_CONF_NAMED_FROM_USER" = "%@ 님이 건 그룹 통화: '%@'"; /* Incoming named video conference invite from a specific person */ -"VIDEO_CONF_NAMED_FROM_USER" = "%@님이 건 영상 그룹 통화: '%@'"; +"VIDEO_CONF_NAMED_FROM_USER" = "%@ 님이 건 그룹 영상 통화: '%@'"; + +/* A user's membership has updated in an unknown way */ +"USER_MEMBERSHIP_UPDATED" = "%@ 님이 프로필을 업데이트 했습니다"; + +/* A user has change their avatar */ +"USER_UPDATED_AVATAR" = "%@ 님이 아바타를 변경했습니다"; + +/* A user has change their name to a new name which we don't know */ +"GENERIC_USER_UPDATED_DISPLAYNAME" = "%@ 님이 이름을 변경했습니다"; + +/** Membership Updates **/ + +/* A user has change their name to a new name */ +"USER_UPDATED_DISPLAYNAME" = "%@ 님이 %@ 으로 이름 변경했습니다"; + +/* A user has reacted to a message, but the reaction content is unknown */ +"GENERIC_REACTION_FROM_USER" = "%@ 님이 반응을 보냄"; + +/* New message indicator on a room */ +"MESSAGE_IN_X" = "%@ 에서의 메세지"; + +/* New file message from a specific person, not referencing a room. */ +"LOCATION_FROM_USER" = "%@ 님이 위치 정보 공유했습니다"; + +/* New file message from a specific person, not referencing a room. */ +"FILE_FROM_USER" = "%@ 님이 %@ 에 파일을 보냈습니다"; + +/* New voice message from a specific person, not referencing a room. */ +"VOICE_MESSAGE_FROM_USER" = "%@ 님이 음성 메세지를 보냈습니다"; + +/* New audio message from a specific person, not referencing a room. */ +"AUDIO_FROM_USER" = "%@ 님이 %@ 에 음성 파일 보냈습니다"; + +/* New video message from a specific person, not referencing a room. */ +"VIDEO_FROM_USER" = "%@ 님이 동영상을 보냈습니다"; + +/** Media Messages **/ + +/* New image message from a specific person, not referencing a room. */ +"PICTURE_FROM_USER" = "%@ 님이 사진을 보냈습니다"; + +/* New message reply from a specific person in a named room. */ +"REPLY_FROM_USER_IN_ROOM_TITLE" = "%@ 님이 %@ 에서 답장"; + +/* New message reply from a specific person, not referencing a room. */ +"REPLY_FROM_USER_TITLE" = "%@ 님이 답장"; + +/** Key verification **/ + +"KEY_VERIFICATION_REQUEST_FROM_USER" = "%@ 님이 인증을 원합니다"; + +/* Group call from user, CallKit caller name */ +"GROUP_CALL_FROM_USER" = "%@ (그룹 통화)"; + +/* A user added a Jitsi call to a room */ +"GROUP_CALL_STARTED" = "그룹 통화 시작됨"; + +/** Reactions **/ + +/* A user has reacted to a message, including the reaction e.g. "Alice reacted 👍". */ +"REACTION_FROM_USER" = "%@ 님이 %@ 님에게 반응"; + +/* New message with hidden content due to PIN enabled */ +"MESSAGE_PROTECTED" = "새 메세지"; + +/* New message indicator from a DM */ +"MESSAGE_FROM_X" = "%@ 님의 메세지"; + +/** Notification messages **/ + +/* New message indicator on unknown room */ +"MESSAGE" = "메세지"; +/** General **/ + +"NOTIFICATION" = "알림"; diff --git a/Riot/Assets/ko.lproj/Vector.strings b/Riot/Assets/ko.lproj/Vector.strings index a88ae30cd..0c3bfd362 100644 --- a/Riot/Assets/ko.lproj/Vector.strings +++ b/Riot/Assets/ko.lproj/Vector.strings @@ -55,7 +55,7 @@ "auth_optional_phone_placeholder" = "전화번호 (선택)"; "auth_phone_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_identity_server_placeholder" = "URL (예: https://vector.im)"; "auth_invalid_login_param" = "맞지 않은 사용자 이름 혹은 비밀번호"; @@ -76,8 +76,8 @@ "auth_untrusted_id_server" = "ID 서버를 신뢰할 수 없습니다"; "auth_password_dont_match" = "비밀번호가 맞지 않음"; "auth_username_in_use" = "사용 중인 사용자 이름"; -"auth_forgot_password" = "비밀번호를 잊었습니까?"; -"auth_forgot_password_error_no_configured_identity_server" = "ID 서버를 설정할 수 없음: 비밀번호를 다시 설정하기 위해 하나를 추가하세요."; +"auth_forgot_password" = "Matrix 계정 비밀번호를 잊었습니까?"; +"auth_forgot_password_error_no_configured_identity_server" = "설정된 ID 서버가 없습니다: Matrix 계정 비밀번호를 초기화를 위해 ID 서버를 추가합니다."; "auth_email_not_found" = "이메일 전송에 실패함: 이 이메일 주소를 찾을 수 없음"; "auth_use_server_options" = "맞춤 서버 옵션 사용 (고급)"; "auth_email_validation_message" = "가입을 계속하려면 이메일을 확인해주세요"; @@ -85,7 +85,7 @@ "auth_msisdn_validation_message" = "활성 코드가 있는 SMS를 보냈습니다. 아래에 이 코드를 입력해주세요."; "auth_msisdn_validation_error" = "전화번호를 확인할 수 없습니다."; "auth_recaptcha_message" = "이 홈서버는 당신이 로봇이 아닌지 알고 싶습니다"; -"auth_reset_password_message" = "비밀번호를 다시 설정하려면, 계정에 연결된 이메일 주소를 입력하세요:"; +"auth_reset_password_message" = "Matrix 계정 비밀번호를 초기화하려면 계정에 연결된 이메일 주소를 입력하세요:"; "auth_reset_password_missing_email" = "계정에 연결된 이메일 주소를 입력해야 합니다."; "auth_reset_password_missing_password" = "새 비밀번호를 입력해야 합니다."; "auth_reset_password_email_validation_message" = "이메일을 %@(으)로 보냈습니다. 링크를 따라간 뒤, 아래를 클릭하세요."; @@ -246,12 +246,12 @@ "room_event_action_redact" = "감추기"; "room_event_action_more" = "더 보기"; "room_event_action_share" = "공유"; -"room_event_action_permalink" = "고유 링크"; +"room_event_action_permalink" = "메시지 링크 복사"; "room_event_action_view_source" = "소스 보기"; "room_event_action_view_decrypted_source" = "암호화된 소스 보기"; "room_event_action_report" = "내용 보고하기"; "room_event_action_report_prompt_reason" = "이 내용을 보고하는 이유"; -"room_event_action_kick_prompt_reason" = "이 사용자를 추방하는 이유"; +"room_event_action_kick_prompt_reason" = "이 사용자를 제거하는 이유"; "room_event_action_ban_prompt_reason" = "이 사용자를 출입 금지하는 이유"; "room_event_action_report_prompt_ignore_user" = "이 사용자의 모든 메시지를 숨기겠습니까?"; "room_event_action_save" = "저장"; @@ -320,7 +320,7 @@ "settings_calls_settings" = "전화"; "settings_user_interface" = "사용자 인터페이스"; "settings_ignored_users" = "무시한 사용자"; -"settings_contacts" = "로컬 연락처"; +"settings_contacts" = "장치 연락처"; "settings_advanced" = "고급"; "settings_other" = "기타"; "settings_labs" = "연구실"; @@ -344,7 +344,7 @@ "settings_add_email_address" = "이메일 주소 추가"; "settings_phone_number" = "휴대 전화"; "settings_add_phone_number" = "전화번호 추가"; -"settings_change_password" = "비밀번호 변경"; +"settings_change_password" = "Matrix 계정 비밀번호 변경"; "settings_night_mode" = "야간 모드"; "settings_fail_to_update_profile" = "프로필 업데이트에 실패함"; "settings_enable_push_notif" = "이 기기에서 알림"; @@ -823,8 +823,8 @@ "auth_add_email_message_2" = "계정 복구 용 이메일을 설정하세요, 이후 당신을 아는 사람들이 선택적으로 당신을 찾을 수 있도록 할 수 있습니다."; "auth_add_phone_message_2" = "전화를 설정하세요, 이후 당신을 아는 사람들이 선택적으로 당신을 찾을 수 있도록 할 수 있습니다."; "auth_add_email_phone_message_2" = "계정 복구 용 이메일을 설정하세요. 이후 당신을 아는 사람들이 선택적으로 당신을 찾을 수 있도록 이메일이나 전화를 사용할 수 있습니다."; -"auth_email_is_required" = "설정된 ID 서버가 없어서 이후 비밀번호를 초기화할 이메일 주소를 추가할 수 없습니다."; -"auth_phone_is_required" = "설정된 ID 서버가 없어서 이후 비밀번호를 초기화할 전화번호를 추가할 수 없습니다."; +"auth_email_is_required" = "설정된 ID 서버가 없으므로 이후에 Matrix 계정 비밀번호를 초기화할 이메일 주소를 추가할 수 없습니다."; +"auth_phone_is_required" = "설정된 ID 서버가 없으므로 이후에 Matrix 계정 비밀번호를 초기화할 전화번호를 추가할 수 없습니다."; "auth_reset_password_error_is_required" = "설정된 ID 서버가 없음: 비밀번호를 초기화하려면 서버 설정에서 하나를 추가하세요."; "contacts_address_book_no_identity_server" = "설정된 ID 서버 없음"; "settings_discovery_settings" = "탐색"; @@ -1129,3 +1129,404 @@ "room_event_action_remove_poll" = "투표 제거"; "accessibility_button_label" = "버튼"; "enable" = "활성화"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "계정 만들기:"; +"login_server_url_placeholder" = "URL (예: https://matrix.org)"; +"login_home_server_title" = "홈서버 URL:"; +"login_identity_server_title" = "ID 서버 URL:"; +"login_user_id_placeholder" = "Matrix ID (예: @bob:matrix.org 혹은 bob)"; +"login_password_placeholder" = "비밀번호"; +"login_optional_field" = "선택"; +"login_email_placeholder" = "이메일 주소"; +"login_error_title" = "로그인 실패"; +"login_error_forbidden" = "잘못된 이름/비밀번호"; +"login_error_user_in_use" = "이 이름은 이미 사용중입니다"; +"login_leave_fallback" = "취소"; +"register_error_title" = "가입 실패"; +"login_error_forgot_password_is_not_supported" = "비밀번호 찾기는 현재 지원하지 않습니다"; +"login_mobile_device" = "모바일"; +"login_tablet_device" = "태블릿"; +"login_desktop_device" = "데스크톱"; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "이 홈서버가 월 간 활성 사용자 한도를 초과했습니다."; +"login_error_resource_limit_exceeded_message_contact" = "\n\n서비스를 계속 이용하려면 서비스 관리자에게 연락하세요."; +"login_error_resource_limit_exceeded_contact_button" = "관리자에게 연락하기"; +// Action +"no" = "아니요"; +"yes" = "네"; +"sign_up" = "등록하기"; +"submit" = "제출"; +"submit_code" = "코드 제출"; +"set_moderator" = "중재자로 설정"; +"set_admin" = "관리자로 설정"; +"start_chat" = "대화 시작"; +"abort" = "중단"; +"discard" = "삭제"; +"start_voice_call" = "음성 통화 시작"; +"start_video_call" = "영상 통화 시작"; +"select_account" = "계정 선택"; +"capture_media" = "사진/영상 찍기"; +"invite_user" = "Matrix 사용자 초대"; +"reset_to_default" = "기본으로 되돌리기"; +"resend_message" = "메시지 다시 보내기"; +"select_all" = "모두 선택"; +"cancel_upload" = "업로드 취소"; +"cancel_download" = "다운로드 취소"; +"show_details" = "세부 정보 표시"; +"answer_call" = "전화 받기"; +"reject_call" = "전화 거부"; +"end_call" = "전화 끝내기"; +"ignore" = "무시"; +"unignore" = "무시하지 않기"; +"notice_sticker" = "스티커"; +// room display name +"room_displayname_empty_room" = "빈 방"; +"room_displayname_two_members" = "%@님과 %@님"; +// Settings +"settings" = "설정"; +"settings_enable_push_notifications" = "푸시 알림 켜기"; +// Devices +"device_details_title" = "기기 정보\n"; +"device_details_name" = "공개 이름\n"; +"device_details_identifier" = "ID\n"; +"device_details_rename_prompt_message" = "기기의 공개 이름은 대화하는 사람들에게 보여집니다"; +"device_details_delete_prompt_title" = "확인"; +"device_details_delete_prompt_message" = "이 작업은 추가 확인이 필요합니다.\n계속하려면, 비밀번호를 입력해주세요."; +// Encryption information +"room_event_encryption_info_title" = "종단간 암호화 정보\n\n"; +"room_event_encryption_info_event_user_id" = "사용자 ID\n"; +"room_event_encryption_info_event_algorithm" = "알고리즘\n"; +"room_event_encryption_info_event_unencrypted" = "암호화되지 않음"; +"room_event_encryption_info_device" = "\n발신자 기기 정보\n"; +"room_event_encryption_info_device_unknown" = "알 수 없는 기기\n"; +"room_event_encryption_info_device_name" = "공개 이름\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "확인\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519 지문\n"; +"room_event_encryption_info_device_verified" = "확인됨"; +"room_event_encryption_info_device_not_verified" = "확인되지 않음"; +"account_link_email" = "이메일 연결"; +"account_linked_emails" = "이메일 연결함"; +// Others +"user_id_title" = "사용자 ID:"; +"offline" = "오프라인"; +"error" = "오류"; +"not_supported_yet" = "아직 지원하지 않음"; +"default" = "기본"; +"ssl_homeserver_url" = "홈서버 URL: %@"; +// Country picker +"country_picker_title" = "나라를 고르세요"; +// Language picker +"language_picker_title" = "언어를 고르세요"; +"language_picker_default_language" = "기본 (%@)"; +"login_home_server_info" = "당신의 홈서버는 대화와 계정 정보를 저장합니다"; +"login_identity_server_info" = "Matrix는 어떤 이메일이 어떤 Matrix ID에 속하느 지 추적하도록 ID 서버를 제공합니다. 현재는 https://matrix.org만 존재합니다."; +"login_display_name_placeholder" = "표시 이름 (예: Bob Obson)"; +"login_email_info" = "다른 사용자가 Matrix에서 당신을 더 쉽게 찾고, 이후 비밀번호를 다시 설정할 수 있도록 이메일 주소를 지정하세요."; +"login_prompt_email_token" = "이메일 확인 토큰을 입럭해주세요:"; +"login_error_no_login_flow" = "이 홈서버에서 확인 정보를 검색하는데 실패함"; +"login_error_do_not_support_login_flows" = "현재 이 홈서버가 정의한 일부 혹은 모든 로그인 흐름을 지원하지 않음"; +"login_error_registration_is_not_supported" = "등록을 현재 지원하지 않음"; +"login_error_unknown_token" = "지정된 접근 토큰이 인식되지 않음"; +"login_error_bad_json" = "잘못된 JSON"; +"login_error_not_json" = "올바른 JSON을 포함하지 않음"; +"login_error_limit_exceeded" = "너무 많은 요청을 보냈습니다"; +"login_error_login_email_not_yet" = "아직 클릭하지 않은 이메일 링크"; +"login_use_fallback" = "대체 페이지 사용"; +"login_invalid_param" = "잘못된 매개변수"; +"login_error_resource_limit_exceeded_title" = "리소스 한도 초과됨"; +"login_error_resource_limit_exceeded_message_default" = "이 홈서버가 리소스 한도를 초과했습니다."; +"dismiss" = "버리기"; +"set_power_level" = "권한 등급 설정"; +"set_default_power_level" = "권한 등급 다시 설정"; +"mention" = "언급"; +"attach_media" = "라이브러리에서 미디어 첨부"; +// Events formatter +"notice_avatar_changed_too" = "(아바타도 변경됬습니다)"; +"notice_room_name_removed" = "%@님이 방 이름을 제거했습니다"; +"notice_room_topic_removed" = "%@님이 주제를 제거했습니다"; +"notice_event_redacted" = "<%@ 검열됨>"; +"notice_event_redacted_by" = " 사용자 %@님"; +"notice_event_redacted_reason" = " [이유: %@]"; +"notice_profile_change_redacted" = "%@님이 프로필 %@을(를) 업데이트했습니다"; +"notice_room_created" = "%@님이 방을 만들었습니다"; +"notice_room_join_rule" = "참가 규칙: %@"; +"notice_room_power_level_intro" = "방 구성원의 권한 등급:"; +"notice_room_power_level_acting_requirement" = "사용자가 활동할 수 있는 최소 권한 등급:"; +"notice_room_power_level_event_requirement" = "이벤트와 관련된 최소 권한 등급:"; +"notice_room_aliases" = "방의 별칭: %@"; +"notice_room_related_groups" = "이 방과 관련된 그룹: %@"; +"notice_encrypted_message" = "암호화된 메시지"; +"notice_encryption_enabled" = "%@님이 종단간 암호화를 켰습니다 (알고리즘 %@)"; +"notice_image_attachment" = "사진 첨부"; +"notice_audio_attachment" = "소리 첨부"; +"notice_video_attachment" = "영상 첨부"; +"notice_location_attachment" = "위치 첨부"; +"notice_file_attachment" = "파일 첨부"; +"notice_invalid_attachment" = "잘못된 첨부"; +"notice_unsupported_attachment" = "지원하지 않는 첨부: %@"; +"notice_feedback" = "피드백 이벤트 (ID: %@): %@"; +"notice_redaction" = "%@님이 이벤트를 검열했습니다 (ID: %@)"; +"notice_error_unsupported_event" = "지원하지 않는 이벤트"; +"notice_error_unexpected_event" = "예기치 못한 이벤트"; +"notice_error_unknown_event_type" = "알 수 없는 이벤트 유형"; +"notice_room_history_visible_to_anyone" = "%@님이 이후 방 기록을 누구나 볼 수 있게 했습니다."; +"notice_room_history_visible_to_members" = "%@님이 이후 방 기록을 모든 방 구성원이 볼 수 있게 했습니다."; +"notice_room_history_visible_to_members_from_invited_point" = "%@님이 이후 방 기록을 초대된 시점부터 모든 방 구성원이 볼 수 있게 했습니다."; +"notice_room_history_visible_to_members_from_joined_point" = "%@님이 이후 방 기록을 참가한 시점부터 모든 방 구성원이 볼 수 있게 했습니다."; +"notice_crypto_unable_to_decrypt" = "** 암호를 복호화할 수 없음: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "발신자의 기기에서 이 메시지의 키를 보내지 않았습니다."; +"notice_in_reply_to" = "관련 대화"; +"room_displayname_more_than_two_members" = "%@님 외 %@명"; +"settings_enable_inapp_notifications" = "인앱 알림 켜기"; +"settings_enter_validation_token_for" = "%@의 확인 토큰을 입력하세요:"; +"notification_settings_room_rule_title" = "방: '%@'"; +"device_details_last_seen" = "마지막으로 본 순간\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"room_event_encryption_info_event" = "이벤트 정보\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519 ID 키\n"; +"room_event_encryption_info_event_fingerprint_key" = "Ed25519 핑거프린트 키가 필요함\n"; +"room_event_encryption_info_event_session_id" = "세션 ID\n"; +"room_event_encryption_info_event_decryption_error" = "암호 복호화 오류\n"; +"room_event_encryption_info_event_none" = "없음"; +"room_event_encryption_info_device_blocked" = "블랙리스트 대상"; +"room_event_encryption_info_verify" = "확인 중..."; +"room_event_encryption_info_unverify" = "확인하지 않음"; +"room_event_encryption_info_block" = "블랙리스트"; +"room_event_encryption_info_unblock" = "블랙리스트 제외"; +"room_event_encryption_verify_title" = "기기 확인\n\n"; +"room_event_encryption_verify_message" = "이 기기를 신뢰할 수 있는지 확인하려면, 다른 방법을 사용하여 소유자와 연락해주세요 (예: 현실에서 혹은 전화로) 그리고 이 기기의 사용자 설정에서 볼 수 있는 키가 아래의 키와 일치하는지 물어보세요:\n\n\t기기 이름: %@\n\t기기 ID: %@\n\t기기 키: %@\n\n그것이 맞다면, 아래 확인 버튼을 누르세요. 맞지 않다면, 다른 사람이 이 기기를 가로채고 있는 것이고 블랙리스트에 올려야 합니다.\n\n앞으로 이 확인 절차는 더 정교해질 것입니다."; +"room_event_encryption_verify_ok" = "확인"; +// Account +"account_save_changes" = "변경 사항 저장"; +"account_email_validation_title" = "확인 보류 중"; +"account_email_validation_message" = "이메일을 확인하고 거기에 있는 링크를 클릭해주세요. 모두 끝나면, 계속을 클릭하세요."; +"account_email_validation_error" = "이메일 주소를 확인할 수 없습니다. 이메일을 확인하고 거기에 있는 링크를 클릭해주세요. 모두 끝나면, 계속을 클릭하세요"; +"account_msisdn_validation_title" = "확인 보류 중"; +"account_msisdn_validation_message" = "활성 코드가 있는 SMS를 보냈습니다. 아래에 이 코드를 입력해주세요."; +"account_msisdn_validation_error" = "전화번호를 확인할 수 없습니다."; +"account_error_display_name_change_failed" = "표시 이름 변경에 실패함"; +"account_error_picture_change_failed" = "사진 변경에 실패함"; +"account_error_matrix_session_is_not_opened" = "Matrix 세션이 열리지 않았습니다"; +"account_error_email_wrong_title" = "올바르지 않은 이메일 주소"; +"account_error_email_wrong_description" = "올바른 이메일 주소로 보이지 않습니다"; +"account_error_msisdn_wrong_title" = "올바르지 않은 전화번호"; +"account_error_msisdn_wrong_description" = "올바른 전화번호로 보이지 않습니다"; +"account_error_push_not_allowed" = "알림이 허용되지 않음"; +// Room creation +"room_creation_name_title" = "방 이름:"; +"room_creation_name_placeholder" = "(예: lunchGroup)"; +"room_creation_alias_title" = "방 별칭:"; +"room_creation_alias_placeholder" = "(예: #foo:example.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(예: #foo%@)"; +"room_creation_participants_title" = "참가자:"; +"room_creation_participants_placeholder" = "(예: @bob:homeserver1; @john:homeserver2...)"; +// Room +"room_please_select" = "방을 선택해주세요"; +"room_error_join_failed_title" = "방 참가에 실패함"; +"room_error_join_failed_empty_room" = "현재 빈 방에 다시 참가할 수 없습니다."; +"room_error_name_edition_not_authorized" = "이 방 이름을 편집할 권한이 없습니다"; +"room_error_topic_edition_not_authorized" = "이 방 주제를 편집할 권한이 없습니다"; +"room_error_cannot_load_timeline" = "타임라인 불러오기에 실패함"; +"room_error_timeline_event_not_found_title" = "타임라인 위치 불러오기에 실패함"; +"room_error_timeline_event_not_found" = "애플리케이션이 이 방의 타임라인에서 특정 시점을 불러오려 했으나 찾을 수 없었습니다"; +"room_left" = "당신은 방을 떠났습니다"; +"room_no_power_to_create_conference_call" = "이 방에 회의를 시작하려면 초대할 권한이 필요합니다"; +"room_no_conference_call_in_encrypted_rooms" = "암호화된 방에서 회의 전화는 지원되지 않습니다"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "사진 보내기."; +"message_reply_to_sender_sent_a_video" = "영상 보내기."; +"message_reply_to_sender_sent_an_audio_file" = "음성 파일 보내기."; +"message_reply_to_sender_sent_a_file" = "파일 보내기."; +"message_reply_to_message_to_reply_to_prefix" = "관련 대화"; +// Room members +"room_member_ignore_prompt" = "이 사용자의 모든 메시지를 숨기겠습니까?"; +"room_member_power_level_prompt" = "사용자를 자신과 같은 권한 등급으로 승급시키는 변경 사항은 취소할 수 없습니다.\n확신합니까?"; +// Attachment +"attachment_size_prompt" = "다음으로 보내겠습니까:"; +"attachment_original" = "실제 크기: %@"; +"attachment_small" = "작게: %@"; +"attachment_medium" = "중간: %@"; +"attachment_large" = "크게: %@"; +"attachment_cancel_download" = "다운로드를 취소합니까?"; +"attachment_cancel_upload" = "업로드를 취소합니까?"; +"attachment_multiselection_size_prompt" = "다음으로 사진을 보내겠습니까:"; +"attachment_multiselection_original" = "실제 크기"; +"attachment_e2e_keys_file_prompt" = "이 파일은 Matrix 클라이언트에서 내보낸 암호화 키를 갖고 있습니다.\n파일 내용물을 보거나 갖고 있는 키를 가져오고 싶나요?"; +"attachment_e2e_keys_import" = "가져오기..."; +// Contacts +"contact_mx_users" = "Matrix 사용자"; +"contact_local_contacts" = "로컬 연락처"; +// Groups +// Search +"search_no_results" = "결과 없음"; +"search_searching" = "검색 중..."; +// Time +"format_time_s" = "초"; +"format_time_m" = "분"; +"format_time_h" = "시"; +"format_time_d" = "일"; +// E2E import +"e2e_import_room_keys" = "방 키 가져오기"; +"e2e_import_prompt" = "이 과정으로 다른 Matrix 클라이언트에서 이전에 내보낸 암호화 키를 가져올 수 있습니다. 이 키로 다른 클라이언트에서 복호화할 수 있는 모든 메시지를 복호화할 수 있게 됩니다.\n내보낸 파일은 암호로 보호됩니다. 파일을 복호화하려면 여기에 암호를 입력해야 합니다."; +"e2e_import" = "가져오기"; +"e2e_passphrase_enter" = "암호 입력"; +// E2E export +"e2e_export_room_keys" = "방 키 내보내기"; +"e2e_export_prompt" = "이 과정으로 암호화된 방에서 받은 메시지의 키를 로컬 파일로 내보낼 수 있습니다. 그런 다음 이후 다른 Matrix 클라이언트에 파일을 가져올 수 있습니다, 이 키로 메시지를 복호화할 수 있게 됩니다.\n파일을 읽을 수 있는 모든 사용자는 내보낸 파일로 볼 수 있는 암호화된 메시지를 복호화할 수 있으므로, 안전하게 보관해야 합니다."; +"e2e_export" = "내보내기"; +"e2e_passphrase_confirm" = "암호 확인"; +"e2e_passphrase_empty" = "암호를 입력해주세요"; +"e2e_passphrase_not_match" = "암호가 일치하지 않음"; +"e2e_passphrase_create" = "암호 만들기"; +"unsent" = "보내지지 않음"; +"error_common_message" = "오류가 발생했습니다. 나중에 다시 시도해주세요."; +"private" = "보안"; +"public" = "공개"; +"power_level" = "권한 등급"; +"network_error_not_reachable" = "네트워크 연결 상태를 확인해주세요"; +"user_id_placeholder" = "예: @bob:homeserver"; +// Permissions +"camera_access_not_granted_for_call" = "영상 통화를 하려면 카메라에 접근해야 하지만 %@은(는) 사용할 권한이 없습니다"; +"microphone_access_not_granted_for_call" = "전화를 하려면 마이크에 접근해야 하지만 %@은(는) 사용할 권한이 없습니다"; +"local_contacts_access_not_granted" = "로컬 연락처에서 사용자를 검색하려면 연락처에 접근해야 하지만 %@은(는) 사용할 권한이 없습니다"; +"local_contacts_access_discovery_warning_title" = "사용자 검색"; +"local_contacts_access_discovery_warning" = "Matrix를 사용 중인 연락처 사람들을 찾기 위해 %@은(는) 주소록에 있는 이메일 주소와 전화번호를 선택한 Matrix ID 서버로 보낼 수 있습니다. 서버가 지원한다면, 개인 정보는 보내기 전에 해시됩니다 - 더 자세한 정보는 ID 서버의 개인 정보 정책을 확인해주세요."; +"notice_room_invite" = "%@님이 %@님을 초대했습니다"; +"notice_room_third_party_invite" = "%@님이 %@님에게 방에 참가하라는 초대를 보냈습니다"; +"notice_room_third_party_registered_invite" = "%@님이 %@님의 초대를 수락했습니다"; +"notice_room_join" = "%@님이 참가했습니다"; +"notice_room_leave" = "%@님이 떠났습니다"; +"notice_room_reject" = "%@님이 초대를 거절했습니다"; +"notice_room_kick" = "%@님이 %@님을 추방했습니다"; +"notice_room_unban" = "%@님이 %@님의 출입 금지를 풀었습니다"; +"notice_room_ban" = "%@님이 %@님을 출입 금지했습니다"; +"notice_room_withdraw" = "%@님이 %@님의 초대를 취소했습니다"; +"notice_room_reason" = ". 이유: %@"; +"notice_avatar_url_changed" = "%@님이 아바타를 바꿨습니다"; +"notice_display_name_set" = "%@님이 표시 이름을 %@(으)로 설정했습니다"; +"notice_display_name_changed_from" = "%@님이 표시 이름을 %@에서 %@(으)로 바꿨습니다"; +"notice_display_name_removed" = "%@님이 표시 이름을 제거했습니다"; +"notice_topic_changed" = "%@님이 주제를 다음으로 바꿨습니다: %@"; +"notice_room_name_changed" = "%@님이 방 이름을 다음으로 바꿨습니다: %@"; +"notice_placed_voice_call" = "%@님이 음성 통화를 걸었습니다"; +"notice_placed_video_call" = "%@님이 영상 통화를 걸었습니다"; +"notice_answered_video_call" = "%@님이 전화를 받았습니다"; +"notice_ended_video_call" = "%@님이 전화를 끊었습니다"; +"notice_conference_call_request" = "%@님이 VoIP 회의를 요청했습니다"; +"notice_conference_call_started" = "VoIP 회의가 시작했습니다"; +"notice_conference_call_finished" = "VoIP 회의가 끝났습니다"; +// button names +"ok" = "예"; +"send" = "보내기"; +"copy_button_name" = "복사"; +"resend" = "다시 보내기"; +"redact" = "감추기"; +"share" = "공유"; +"delete" = "삭제"; +// actions +"action_logout" = "로그아웃"; +"create_room" = "방 만들기"; +"login" = "로그인"; +"create_account" = "계정 만들기"; +"membership_invite" = "초대받음"; +"membership_leave" = "떠남"; +"membership_ban" = "출입 금지당함"; +"num_members_one" = "%@명의 사용자"; +"num_members_other" = "%@명의 사용자"; +"kick" = "추방"; +"ban" = "출입 금지"; +"unban" = "출입 금지 풀기"; +"message_unsaved_changes" = "저장하지 않은 변경 사항이 있습니다. 떠나게 되면 변경 사항은 버려집니다."; +// Login Screen +"login_error_already_logged_in" = "이미 로그인됨"; +"login_error_must_start_http" = "URL은 http[s]://로 시작해야 함"; +// room details dialog screen +// contacts list screen +"invitation_message" = "저는 Matrix로 당신과 대화하고 싶습니다. 자세한 정보는 웹사이트 http://martix.org에 방문해주세요."; +// Settings screen +"settings_title_config" = "설정"; +"settings_title_notifications" = "알림"; +// Notification settings screen +"notification_settings_disable_all" = "모든 알림 끄기"; +"notification_settings_enable_notifications" = "알림 켜기"; +"notification_settings_enable_notifications_warning" = "모든 기기에 모든 알림이 현재부터 꺼집니다."; +"notification_settings_global_info" = "알림 설정은 사용자 계정에 저장되며 계정을 등록한 모든 클라이언트 간에 공유됩니다 (데스크톱 알림 포함)\n\n규칙은 순서대로 적용됩니다; 일치하는 것의 첫 번째 규칙은 메시지의 결과를 정의하는 것입니다.\n따라서: 발신자 별 알림보다 방 별 알림이, 방 별 알림보다 단어 별 알림이 더 중요합니다.\n동일한 종류의 여러 규칙이 있다면, 목록에서 일치하는 첫 번째 규칙이 우선됩니다."; +"notification_settings_per_word_notifications" = "단어 별 알림"; +"notification_settings_per_word_info" = "단어는 대소문자를 구분하지 않고, * 와이드카드 기호를 넣을 수 있습니다. 따라서:\nfoo라는 단어는 양끝에 단어가 이어지지 않은 경우 (예: 문장 부호, 공백 또는 문장의 시작과 끝)에 있는 단어를 맞춥니다.\nfoo*는 foo로 시작하는 모든 단어를 맞춥니다.\n*foo*는 foo라는 세 글자를 포함하는 모든 단어를 맞춥니다."; +"notification_settings_always_notify" = "항상 알림"; +"notification_settings_never_notify" = "절대 알리지 않기"; +"notification_settings_word_to_match" = "맞춰볼 단어"; +"notification_settings_highlight" = "강조"; +"notification_settings_custom_sound" = "맞춤 소리"; +"notification_settings_per_room_notifications" = "방 별 알림"; +"notification_settings_per_sender_notifications" = "발신자 별 알림"; +"notification_settings_sender_hint" = "@user:domain.com"; +"notification_settings_select_room" = "방 선택"; +"notification_settings_other_alerts" = "기타 경고"; +"notification_settings_contain_my_user_name" = "내 사용자 이름이 있는 메시지에 대해 소리로 알림"; +"notification_settings_contain_my_display_name" = "내 표시 이름이 있는 메시지에 대해 소리로 알림"; +"notification_settings_just_sent_to_me" = "나에게만 온 메시지에 대해 소리로 알림"; +"notification_settings_invite_to_a_new_room" = "내가 새 방에 초대받았을 때 알림"; +"notification_settings_people_join_leave_rooms" = "사람들이 참가하고 떠날 때 알림"; +"notification_settings_receive_a_call" = "전화를 받을 때 알림"; +"notification_settings_suppress_from_bots" = "봇의 알림 억제"; +"notification_settings_by_default" = "기본으로 되돌리기..."; +"notification_settings_notify_all_other" = "모든 다른 메시지/방의 알림"; +// gcm section +// call string +"call_waiting" = "대기 중..."; +"call_connecting" = "전화 연결 중..."; +"call_ended" = "전화 종료됨"; +"call_ring" = "전화 중..."; +"incoming_video_call" = "수신 영상 통화"; +"incoming_voice_call" = "수신 음성 통화"; +"call_invite_expired" = "전화 초대가 만료됨"; +// unrecognized SSL certificate +"ssl_trust" = "신뢰"; +"ssl_logout_account" = "로그아웃"; +"ssl_remain_offline" = "무시"; +"ssl_fingerprint_hash" = "핑거프린트 (%@):"; +"ssl_could_not_verify" = "원격 서버의 ID를 확인할 수 없습니다."; +"ssl_cert_not_trust" = "누군가가 악의적으로 트래픽을 가로채고 있거나, 휴대 전화가 원격 서버에서 제공한 인증을 신뢰하지 않습니다."; +"ssl_cert_new_account_expl" = "서버 관리자가 예상된다고 대답했다면, 아래 핑거프린트가 그들이 제공한 핑거프린트와 맞는지 확인하세요."; +"ssl_unexpected_existing_expl" = "휴대 전화를 인증했던 인증서가 다른 것으로 변경되었습니다. 이것은 매우 비정상적입니다. 이 새로운 인증서를 수락하지 않는 것을 권합니다."; +"ssl_expected_existing_expl" = "인증서가 신뢰했던 것에서 신뢰하지 않은 것으로 변경되었습니다. 서버가 인증서를 세로 작성했을 수 있습니자. 예상되는 핑거프린트를 위해 서버 관리자에게 연락하세요."; +"ssl_only_accept" = "위의 것과 일치한 핑거프린트를 서버 관리자가 게시해야 인증서를 수락할 수 있습니다."; +"notice_room_third_party_revoked_invite" = "%@님이 %@님에게 보낸 초대를 취소했습니다"; +"device_details_rename_prompt_title" = "기기 이름"; +"threads_empty_show_all_threads" = "모든 스레드 표시"; +"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" = "방에 표시"; +"room_participants_leave_success" = "방을 나갔습니다"; +"room_participants_leave_processing" = "나가는 중"; +"search_filter_placeholder" = "필터"; +"onboarding_use_case_existing_server_button" = "서버에 연결"; +"onboarding_use_case_community_messaging" = "커뮤니티"; +"onboarding_splash_page_4_message" = "Element는 직장에서도 좋습니다. 세계에서 가장 안전한 조직에서 신뢰합니다."; +"onboarding_splash_page_4_title_no_pun" = "당신의 팀을 위한 메세징."; +"onboarding_splash_page_3_message" = "종단 간 암호화(E2EE) 되며 전화 번호가 필요하지 않습니다. 광고나 수집되는 데이터가 없습니다."; +"onboarding_splash_page_3_title" = "보안 메세징."; +"onboarding_splash_page_2_title" = "당신에게 모든 통제 권한이 있습니다."; +"onboarding_splash_page_1_message" = "독립적이고 안전한 커뮤니케이션으로 집에서 직접 이야기 하는 것과 같은 개인 정보 보호를 제공합니다."; +"onboarding_splash_login_button_title" = "이미 계정이 있습니다"; + +// Onboarding +"onboarding_splash_register_button_title" = "계정 만들기"; diff --git a/Riot/Assets/lv.lproj/Vector.strings b/Riot/Assets/lv.lproj/Vector.strings index b25476dcd..ef38ead5f 100644 --- a/Riot/Assets/lv.lproj/Vector.strings +++ b/Riot/Assets/lv.lproj/Vector.strings @@ -44,3 +44,118 @@ "auth_optional_email_placeholder" = "Epasta adrese (pēc izvēles)"; "auth_email_placeholder" = "Epasta adrese"; "close" = "Aizvērt"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Izveidot kontu:"; +"login_server_url_placeholder" = "URL adrese (piemēram, https://matrix.org)"; +"login_home_server_title" = "Mājas serveria URL:"; +"login_home_server_info" = "Tavs mājas serveris glabā visas sarunas un konta datus"; +"login_identity_server_title" = "Identifikācijas servera URL:"; +"login_password_placeholder" = "Parole"; +"login_display_name_placeholder" = "Displeja vārds (piem. Bob Obson)"; +"login_email_placeholder" = "Epasta adrese"; +"login_prompt_email_token" = "Lūdzu ievadi savu epasta pārbaudes kodu:"; +"login_error_title" = "Piekļuve neizdevās"; +"login_error_registration_is_not_supported" = "Reģistrācija pašlaik netiek atbalstīta"; +"login_error_forbidden" = "Nederīgs lietotājvārds/parole"; +"login_error_limit_exceeded" = "Pārāk daudz pieprasījumi tikuši izsūtīti"; +"login_error_user_in_use" = "Šis lietotājvārds jau tiek izmantots"; +"login_leave_fallback" = "Atcelt"; +"login_invalid_param" = "Nepareizs parametrs"; +"register_error_title" = "Reģistrācija neizdevās"; +"login_error_resource_limit_exceeded_title" = "Resursu Limits Pārsniegts"; +"yes" = "Jā"; +"sign_up" = "Pieteikties"; +"start_chat" = "Sākt čatu"; +"start_voice_call" = "Sākt Balss Zvanu"; +"start_video_call" = "Sākt Video Zvanu"; +"select_account" = "Izvēlies kontu"; +"invite_user" = "Uzaicini matrix Lietotāju"; +"select_all" = "Izvēlēties Visus"; +"cancel_upload" = "Atcelt Augšupielādi"; +"cancel_download" = "Atcelt Lejupielādi"; +"show_details" = "Rādīt Detaļas"; +"answer_call" = "Pacelt Zvanu"; +"reject_call" = "Atteikt Zvanu"; +"end_call" = "Beigt Zvanu"; +"ignore" = "Ignorēt"; +"unignore" = "At-Ignorēt"; +"notice_room_name_removed" = "%@ noņēma istabas nosaukumu"; +"notice_room_created" = "%@ izveidoja istabu"; +"notice_encrypted_message" = "Šifrēts ziņojums"; +"notice_image_attachment" = "attēla pielikums"; +"notice_audio_attachment" = "audio pielikums"; +"notice_video_attachment" = "video pielikums"; +"notice_location_attachment" = "atrašanās vietas pielikums"; +"notice_file_attachment" = "datnes pielikums"; +"notice_invalid_attachment" = "nederīgs pielikums"; +"notice_unsupported_attachment" = "Neatbalstīts pielikums: %@"; +"notice_error_unsupported_event" = "Neatbalstīts notikums"; +"notice_error_unexpected_event" = "Negaidīts notikums"; +"notice_error_unknown_event_type" = "Nezināms notikuma veids"; +"notice_sticker" = "uzlīme"; +"room_displayname_two_members" = "%@ un %@"; +"room_displayname_more_than_two_members" = "%@ un %@ citi"; +"notification_settings_room_rule_title" = "Istaba: '%@'"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Pēdējoreiz redzēts\n"; +"device_details_rename_prompt_title" = "Sesijas Nosaukums"; +"device_details_delete_prompt_title" = "Autentifikācija"; +"room_event_encryption_info_event_user_id" = "Lietotāja ID\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519 identitātes atslēga\n"; +"room_event_encryption_info_event_algorithm" = "Algoritms\n"; +"room_event_encryption_info_event_session_id" = "Sesijas ID\n"; +"room_event_encryption_info_event_decryption_error" = "Atšifrēšanas kļūda\n"; +"room_event_encryption_info_event_none" = "nav"; +"room_event_encryption_info_device_unknown" = "nezināma sesija\n"; +"room_event_encryption_info_device_name" = "Publiskais Nosaukums\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "Verifikācija\n"; +"room_event_encryption_info_device_verified" = "Verificēts"; +"room_event_encryption_info_device_not_verified" = "NAV verificēts"; +"notice_room_name_removed_for_dm" = "%@ noņēma nosaukumu"; + +// Events formatter +"notice_avatar_changed_too" = "(avatars arī tika nomainīts)"; +"resume_call" = "Atjaunot"; +"resend_message" = "Atkārtot ziņojuma sūtīšanu"; +"reset_to_default" = "Atietatīt uz noklusējumu"; +"capture_media" = "Uzņemt foto/video"; +"attach_media" = "Pievienot mediju no bibliotēkas"; +"mention" = "Pieminēt"; +"set_admin" = "Norādīt administratoru"; +"set_moderator" = "Norādīt moderatoru"; +"set_default_power_level" = "Nodzēst jaudas līmeni"; +"set_power_level" = "Iestatīt jaudas līmeni"; +"submit_code" = "Iesniegt kodu"; +"submit" = "Iesniegt"; +"dismiss" = "Noraidīt"; +"discard" = "Izmest"; +"abort" = "Pārtraukt"; + +// Action +"no" = "Nē"; +"login_error_resource_limit_exceeded_contact_button" = "Sazinieties ar administratoru"; +"login_error_resource_limit_exceeded_message_contact" = "\n\nLai turpinātu lietot šo pakalpojumu, lūdzu, sazinieties ar savu pakalpojuma administratoru."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Šis mājas serveris ir sasniedzis ikmēneša aktīvo lietotāju limitu."; +"login_error_resource_limit_exceeded_message_default" = "Šis mājas serveris ir sasniedzis vienu no savu resursu limitiem."; +"login_desktop_device" = "Dators"; +"login_tablet_device" = "Planšete"; +"login_mobile_device" = "Mobilā iekārta"; +"login_error_forgot_password_is_not_supported" = "“Aizmirsu paroli” patlaban nav atbalstīta"; +"login_use_fallback" = "Lietojiet atkāpšanās lappusi"; +"login_error_login_email_not_yet" = "E-pasta saite vel nav noklikšķināta"; +"login_error_not_json" = "Nesatur derīgu JSON"; +"login_error_bad_json" = "Bojāts JSON"; +"login_error_unknown_token" = "Netika atpazīta norādītā pieejas atslēga"; +"login_error_do_not_support_login_flows" = "Mēs patrez neatbalstām jebkādas pieteikšanās plūsmas, kas definētas no šī mājas servera"; +"login_error_no_login_flow" = "Mums neizdevās saņemt autentifikācijas informāciju no šī mājas servera."; +"login_email_info" = "E-pasta adreses norādīšana ļauj citiem lietotājiem viegli atras tevi Matix, kā arī nodrošinās tev iespēju nākotnē atjaunot savu paroli."; +"login_optional_field" = "neobligāts"; +"login_user_id_placeholder" = "Matrix ID (piem. @bob:matrix.org vai bobs)"; +"login_identity_server_info" = "Matrix nodrošina identifikācijas serverus, lai atšķirtu, kuri e-pasti, u.c., pieder kuram Matrix ID. Patlaban pastāv vienīgi https://matrix.org"; diff --git a/Riot/Assets/nb-NO.lproj/Vector.strings b/Riot/Assets/nb-NO.lproj/Vector.strings index 6d71500b4..460458427 100644 --- a/Riot/Assets/nb-NO.lproj/Vector.strings +++ b/Riot/Assets/nb-NO.lproj/Vector.strings @@ -1482,3 +1482,537 @@ "settings_notifications_disabled_alert_message" = "For å aktivere varsler, gå til enhetsinnstillingene."; "settings_notifications_disabled_alert_title" = "Varsler deaktivert"; "settings_device_notifications" = "Enhetsvarsler"; + + +// MARK: - MatrixKit + + + + +"room_event_encryption_info_device_verification" = "Verifisering\n"; +"notice_display_name_set" = "%@ satte visningsnavnet sitt til %@"; +"room_no_power_to_create_conference_call" = "Du trenger tillatelse til å invitere for å starte en konferanse i dette rommet"; +"room_error_join_failed_empty_room" = "Det er for øyeblikket ikke mulig å bli med i et tomt rom igjen."; +"room_event_encryption_verify_message" = "For å verifisere at denne økten er til å stole på, vennligst kontakt eieren på andre måter (f.eks. personlig eller en telefonsamtale) og spør dem om nøkkelen de ser i brukerinnstillingene for denne økten samsvarer med nøkkelen nedenfor:\n\n\tØkt-navn: %@\n\tØkt-ID: %@\n\tØkt-nøkkel: %@\n\nHvis den stemmer overens, trykk på verifiserings-knappen nedenfor. Hvis den ikke gjør det, er det noen andre som overvåker denne økten, og du vil sannsynligvis trykke på svartelisteknappen i stedet.\n\nI fremtiden vil denne verifiseringsprosessen bli mer sofistikert."; +"room_event_encryption_info_block" = "Svarteliste"; +"device_details_delete_prompt_title" = "Autentisering"; +"notice_room_power_level_acting_requirement" = "Minimum tilgangsnivå en bruker må ha før utførelse av handling er:"; +"login_prompt_email_token" = "Vennligst skriv inn valideringstokenet ditt for e-post:"; +"login_server_url_placeholder" = "URL (f.eks. https://matrix.org)"; + +// Login Screen +"login_create_account" = "Opprett konto:"; +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "Matrix"; +"ssl_cert_not_trust" = "Dette kan bety at noen overvåker trafikken din, eller at telefonen ikke stoler på sertifikatet fra den eksterne serveren."; +"resend" = "Send på nytt"; +"login_identity_server_title" = "URL til identitetsserver:"; +"login_home_server_info" = "Hjemmeserveren lagrer alle samtalene og kontodataene dine"; +"login_home_server_title" = "Hjemmeserver-URL:"; +"login_identity_server_info" = "Matrix tilbyr identitetsservere for å spore hvilke e-postadresser etc. som tilhører hvilke Matrix-IDer. Bare https://matrix.org eksisterer for øyeblikket."; +"login_user_id_placeholder" = "Matrix-ID (f.eks. @Bob: matrix.org eller bob)"; +"login_email_info" = "Angi en e-postadresse slik at andre brukere lettere kan finne deg, og samtidig gi deg en måte å tilbakestille passordet ditt senere."; +"login_display_name_placeholder" = "Visningsnavn (f.eks. Bob Obson)"; +"login_optional_field" = "valgfri"; +"login_password_placeholder" = "Passord"; +"login_error_do_not_support_login_flows" = "Foreløpig støtter vi ikke påloggingsflytene som er definert for denne hjemmeserveren"; +"login_error_no_login_flow" = "Vi kunne ikke hente autentiseringsinformasjon fra denne hjemmeserveren"; +"login_error_title" = "Innlogging feilet"; +"login_email_placeholder" = "E-postadresse"; +"login_error_unknown_token" = "Angitt tilgangstoken ble ikke gjenkjent"; +"login_error_forbidden" = "Ugyldig brukernavn/passord"; +"login_error_registration_is_not_supported" = "Registrering støttes ikke for øyeblikket"; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Denne hjemmeserveren har nådd grensen for aktive månedlige brukere."; +"login_error_resource_limit_exceeded_message_default" = "Denne hjemmeserveren har overskredet en av ressursgrensene."; +"login_error_resource_limit_exceeded_title" = "Ressursgrensen er overskredet"; +"login_desktop_device" = "PC"; +"login_tablet_device" = "Nettbrett"; +"login_mobile_device" = "Mobil"; +"login_error_forgot_password_is_not_supported" = "Glemt passord støttes for øyeblikket ikke"; +"register_error_title" = "Registrering feilet"; +"login_invalid_param" = "Ugyldig parameter"; +"login_leave_fallback" = "Avbryt"; +"login_use_fallback" = "Bruk reserveside"; +"login_error_login_email_not_yet" = "E-postlinken som ikke er klikket på ennå"; +"login_error_user_in_use" = "Dette brukernavnet er allerede brukt"; +"login_error_limit_exceeded" = "Det er sendt for mange forespørsler"; +"login_error_not_json" = "Inneholdt ikke gyldig JSON"; +"login_error_bad_json" = "Feilformatert JSON"; +"set_power_level" = "Bestem tilgangsnivå"; +"submit_code" = "Send inn kode"; +"submit" = "Send inn"; +"sign_up" = "Meld deg på"; +"dismiss" = "Ignorer"; +"discard" = "Forkast"; +"abort" = "Avbryt"; +"yes" = "Ja"; + +// Action +"no" = "Nei"; +"login_error_resource_limit_exceeded_contact_button" = "Kontakt administrator"; +"login_error_resource_limit_exceeded_message_contact" = "\n\nKontakt tjenesteadministratoren din for å fortsette å bruke denne tjenesten."; +"set_default_power_level" = "Tilbakestill tilgangsnivå"; +"start_chat" = "Start samtale"; +"set_admin" = "Velg admin"; +"set_moderator" = "Velg moderator"; +"invite_user" = "Inviter bruker"; +"capture_media" = "Ta bilde/video"; +"attach_media" = "Legg ved media fra biblioteket"; +"select_account" = "Velg en konto"; +"mention" = "Nevn"; +"start_video_call" = "Start videoanrop"; +"start_voice_call" = "Start taleanrop"; +"answer_call" = "Svar på anrop"; +"show_details" = "Vis detaljer"; +"cancel_download" = "Avbryt nedlasting"; +"cancel_upload" = "Avbryt opplasting"; +"select_all" = "Velg alle"; +"resend_message" = "Send meldingen på nytt"; +"reset_to_default" = "Tilbakestill til standard"; +"reject_call" = "Avvis anrop"; +"end_call" = "Avslutt samtale"; +// Old +"notice_room_join_rule" = "Bli-med regelen er: %@"; +"notice_room_created_for_dm" = "%@ ble med."; +"notice_room_created" = "%@ opprettet og konfigurerte rommet."; +"notice_profile_change_redacted" = "%@ oppdaterte profilen sin %@"; +"notice_event_redacted_reason" = " [årsak: %@]"; +"notice_event_redacted_by" = " av %@"; +"notice_event_redacted" = ""; +"notice_room_topic_removed" = "%@ fjernet emnet"; +"notice_room_name_removed_for_dm" = "%@ fjernet navnet"; +"notice_room_name_removed" = "%@ fjernet romnavnet"; + +// Events formatter +"notice_avatar_changed_too" = "(avatar ble også endret)"; +"unignore" = "Opphev ignorering"; +"ignore" = "Ignorer"; +"resume_call" = "Gjenoppta"; +"notice_room_power_level_intro" = "Medlemmenes tilgangsnivå i rommet er:"; +"notice_room_join_rule_public_by_you_for_dm" = "Du gjorde dette offentlig."; +"notice_room_join_rule_public_by_you" = "Du gjorde rommet offentlig."; +"notice_room_join_rule_public_for_dm" = "%@ gjorde dette offentlig."; +"notice_room_join_rule_public" = "%@ gjorde rommet offentlig."; +"notice_room_join_rule_invite_by_you_for_dm" = "Du endret til kun inviterte."; +"notice_room_join_rule_invite_by_you" = "Du endret rommet til kun inviterte."; +"notice_room_join_rule_invite_for_dm" = "%@ endret til kun inviterte."; +// New +"notice_room_join_rule_invite" = "%@ endret rommet til kun inviterte."; +"notice_room_power_level_intro_for_dm" = "Medlemmenes tilgangsnivå er:"; +"notice_room_power_level_event_requirement" = "Minimum tilgangsnivå relatert til events er:"; +"notice_unsupported_attachment" = "Ikke støttet vedlegg: %@"; +"notice_invalid_attachment" = "ugyldig vedlegg"; +"notice_file_attachment" = "filvedlegg"; +"notice_location_attachment" = "lokasjonsvedlegg"; +"notice_video_attachment" = "videovedlegg"; +"notice_audio_attachment" = "lydvedlegg"; +"notice_image_attachment" = "bildevedlegg"; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ slo på ende-til-ende-kryptering (ukjent algoritme %2$@)."; +"notice_encryption_enabled_ok" = "%@ slo på ende-til-ende-kryptering."; +"notice_encrypted_message" = "Kryptert melding"; +"notice_room_related_groups" = "Gruppene som er tilknyttet dette rommet er: %@"; +"notice_room_aliases_for_dm" = "Aliasene er: %@"; +"notice_room_aliases" = "Rom-aliasene er: %@"; +"room_event_encryption_info_event" = "Hendelseinformasjon\n"; + +// Encryption information +"room_event_encryption_info_title" = "Ende-til-ende-krypteringsinformasjon\n\n"; +"device_details_delete_prompt_message" = "Denne operasjonen krever ekstra godkjenning.\nFor å fortsette, vennligst skriv inn passordet ditt."; +"device_details_rename_prompt_message" = "En økts offentlige navn er synlig for folk du kommuniserer med"; +"device_details_rename_prompt_title" = "Øktnavn"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_last_seen" = "Sist sett\n"; +"device_details_identifier" = "ID\n"; +"device_details_name" = "Offentlig navn\n"; + +// Devices +"device_details_title" = "Øktinformasjon\n"; +"notification_settings_room_rule_title" = "Rom: '%@'"; +"settings_enter_validation_token_for" = "Angi valideringstoken for %@:"; +"settings_enable_push_notifications" = "Aktiver push-varsler"; +"settings_enable_inapp_notifications" = "Aktiver varsler i appen"; + +// Settings +"settings" = "Innstillinger"; +"room_displayname_more_than_two_members" = "%@ og %@ andre"; +"room_displayname_two_members" = "%@ og %@"; + +// room display name +"room_displayname_empty_room" = "Tomt rom"; +"notice_in_reply_to" = "Som svar på"; +"notice_sticker" = "klistremerke"; +"notice_crypto_error_unknown_inbound_session_id" = "Avsenderøkten har ikke sendt oss nøklene til denne meldingen."; +"notice_crypto_unable_to_decrypt" = "** Kan ikke dekryptere: %@ **"; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ gjorde fremtidige meldinger synlige for alle, fra de ble med."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ gjorde fremtidige meldinger synlige for alle, fra de blir invitert."; +"notice_room_history_visible_to_anyone" = "%@ gjorde fremtidig romhistorie synlig for alle."; +"notice_error_unknown_event_type" = "Ukjent hendelsestype"; +"notice_error_unexpected_event" = "Uventet hendelse"; +"notice_error_unsupported_event" = "Ikke støttet hendelse"; +"notice_feedback" = "Tilbakemeldingshendelse (id: %@): %@"; +"notice_room_history_visible_to_members_from_joined_point" = "%@ synliggjorde fremtidig romhistorie for alle medlemmer i rommet, fra det tidspunktet de ble med."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ synliggjorde fremtidig romhistorie for alle medlemmer i rommet, fra det punktet de er invitert."; +"notice_room_history_visible_to_members_for_dm" = "%@ gjorde fremtidige meldinger synlige for alle medlemmer i rommet."; +"notice_room_history_visible_to_members" = "%@ synliggjorde fremtidig romhistorie for alle medlemmer i rommet."; +"notice_redaction" = "%@ holdt igjen en hendelse (id: %@)"; +"room_event_encryption_info_event_fingerprint_key" = "Benyttet Ed25519 fingeravtrykknøkkel\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519 identitetsnøkkel\n"; +"room_event_encryption_info_event_user_id" = "Bruker-ID\n"; +"room_event_encryption_info_event_session_id" = "Økt-ID\n"; +"room_event_encryption_info_event_algorithm" = "Algoritme\n"; +"account_email_validation_message" = "Sjekk e-posten din og klikk på linken den inneholder. Når dette er gjort, klikker du på fortsett."; +"account_linked_emails" = "Linkede e-poster"; +"account_link_email" = "Link e-post"; + +// Account +"account_save_changes" = "Lagre endringer"; +"room_event_encryption_verify_ok" = "Verifiser"; +"room_event_encryption_verify_title" = "Verifiser økt\n\n"; +"room_event_encryption_info_unblock" = "Fjern svartelisting"; +"room_event_encryption_info_unverify" = "Fjern verifisering"; +"room_event_encryption_info_verify" = "Verifiser..."; +"room_event_encryption_info_device_blocked" = "Svartelistet"; +"room_event_encryption_info_device_not_verified" = "IKKE verifisert"; +"room_event_encryption_info_device_verified" = "Verifisert"; +"room_event_encryption_info_device_fingerprint" = "Ed25519 fingeravtrykk\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_name" = "Offentlig navn\n"; +"room_event_encryption_info_device_unknown" = "ukjent økt\n"; +"room_event_encryption_info_device" = "\nInformasjon om avsenderøkt\n"; +"room_event_encryption_info_event_none" = "ingen"; +"room_event_encryption_info_event_unencrypted" = "ukryptert"; +"room_event_encryption_info_event_decryption_error" = "Dekrypteringsfeil\n"; +"account_email_validation_title" = "Venter på verifisering"; +"room_creation_alias_placeholder" = "(f.eks. #foo:example.org)"; +"room_creation_alias_title" = "Romalias:"; +"room_creation_name_placeholder" = "(f.eks. lunsjgruppe)"; + +// Room creation +"room_creation_name_title" = "Romnavn:"; +"account_error_push_not_allowed" = "Varsler ikke tillatt"; +"account_error_msisdn_wrong_description" = "Dette ser ikke ut til å være et gyldig telefonnummer"; +"account_error_msisdn_wrong_title" = "Ugyldig telefonnummer"; +"account_error_email_wrong_description" = "Dette ser ikke ut til å være en gyldig e-postadresse"; +"account_error_email_wrong_title" = "Ugyldig e-postadresse"; +"account_error_matrix_session_is_not_opened" = "Matrix-økt er ikke åpnet"; +"account_error_picture_change_failed" = "Endring av bildet feilet"; +"account_error_display_name_change_failed" = "Endring av visningsnavn feilet"; +"account_msisdn_validation_error" = "Kan ikke bekrefte telefonnummeret."; +"account_msisdn_validation_message" = "Vi har sendt en SMS med en aktiveringskode. Vennligst skriv inn denne koden nedenfor."; +"account_email_validation_error" = "Kan ikke bekrefte e-postadressen. Sjekk e-posten din og klikk på lenken den inneholder. Når dette er gjort, klikker du på fortsett"; +"account_msisdn_validation_title" = "Venter på verifisering"; +"room_error_join_failed_title" = "Deltakelse i rommet feilet"; + +// Room +"room_please_select" = "Vennligst velg et rom"; +"room_creation_participants_placeholder" = "(f.eks. @bob:hjemmeserver1; @john:hjemmeserver2 ...)"; +"room_creation_participants_title" = "Deltakere:"; +"room_creation_alias_placeholder_with_homeserver" = "(f.eks. #foo%@)"; +"room_member_power_level_prompt" = "Du vil ikke kunne angre denne endringen ettersom du gir brukeren samme tilgangsnivå som deg selv.\nEr du sikker?"; + +// Room members +"room_member_ignore_prompt" = "Er du sikker på at du vil skjule alle meldinger fra denne brukeren?"; +"message_reply_to_message_to_reply_to_prefix" = "Som svar på"; +"message_reply_to_sender_sent_a_file" = "sendte en fil."; +"message_reply_to_sender_sent_an_audio_file" = "sendte en lydfil."; +"message_reply_to_sender_sent_a_video" = "sendte en video."; + +// Reply to message +"message_reply_to_sender_sent_an_image" = "sendte et bilde."; +"room_no_conference_call_in_encrypted_rooms" = "Konferansesamtaler støttes ikke i krypterte rom"; +"room_left_for_dm" = "Du forlot"; +"room_left" = "Du forlot rommet"; +"room_error_timeline_event_not_found" = "Applikasjonen prøvde å laste inn et bestemt punkt i tidslinjen til dette rommet, men kunne ikke finne det"; +"room_error_timeline_event_not_found_title" = "Kunne ikke laste tidslinjeposisjonen"; +"room_error_cannot_load_timeline" = "Kunne ikke laste tidslinjen"; +"room_error_topic_edition_not_authorized" = "Du har ikke autorisasjon til å redigere dette romemnet"; +"room_error_name_edition_not_authorized" = "Du har ikke autorisasjon til å redigere dette romnavnet"; + +// Groups +"contact_local_contacts" = "Lokale kontakter"; + +// Contacts +"contact_mx_users" = "Matrix-brukere"; +"attachment_e2e_keys_import" = "Importer..."; +"attachment_e2e_keys_file_prompt" = "Denne filen inneholder krypteringsnøkler eksportert fra en Matrix-klient.\nVil du se filinnholdet eller importere nøklene den inneholder?"; +"attachment_multiselection_original" = "Faktisk størrelse"; +"attachment_multiselection_size_prompt" = "Vil du sende bilder som:"; +"attachment_cancel_upload" = "Avbryte opplastingen?"; +"attachment_cancel_download" = "Avbryte nedlastingen?"; +"attachment_large" = "Stor: %@"; +"attachment_medium" = "Medium: %@"; +"attachment_small" = "Liten: %@"; +"attachment_original" = "Faktisk størrelse: %@"; + +// Attachment +"attachment_size_prompt" = "Vil du sende som:"; +"search_searching" = "Søk pågår..."; + +// Search +"search_no_results" = "Ingen resultater"; +"format_time_h" = "t"; +"format_time_m" = "m"; + +// Time +"format_time_s" = "s"; +"e2e_import_prompt" = "Denne prosessen lar deg importere krypteringsnøkler som du tidligere hadde eksportert fra en annen app. Du vil da kunne dekryptere alle meldinger som den andre klienten kan dekryptere.\nEksportfilen er beskyttet med en passordfrase. Du bør angi passordet her for å dekryptere filen."; + +// E2E import +"e2e_import_room_keys" = "Importer romnøkler"; +"format_time_d" = "d"; +"e2e_import" = "Importer"; +"e2e_export_prompt" = "Denne prosessen lar deg eksportere nøklene for meldinger du har mottatt i krypterte rom til en lokal fil. Du vil da kunne importere filen til en annen app i fremtiden, slik at den også kan dekryptere disse meldingene.\nDen eksporterte filen lar alle som kan lese den dekryptere alle krypterte meldinger du kan se, så du bør passe på å lagre den sikkert."; + +// E2E export +"e2e_export_room_keys" = "Eksporter romnøkler"; +"e2e_passphrase_enter" = "Skriv inn passordfrase"; +"e2e_export" = "Eksporter"; +"e2e_passphrase_empty" = "Passordfrase kan ikke være tom"; +"e2e_passphrase_confirm" = "Bekreft passordfrase"; +"power_level" = "Tilgangsnivå"; +"public" = "Offentlig"; +"private" = "Privat"; +"default" = "standard"; +"not_supported_yet" = "Støttes ikke ennå"; +"error_common_message" = "En feil oppstod. Prøv igjen senere."; +"error" = "Feil"; +"unsent" = "Ikke sendt"; +"offline" = "offline"; + +// Others +"user_id_title" = "Bruker-ID:"; +"e2e_passphrase_create" = "Opprett passordfrase"; +"e2e_passphrase_not_match" = "Passordfrase må stemme overens"; +"user_id_placeholder" = "eks: @bob:hjemmeserver"; +"network_error_not_reachable" = "Vennligst kontroller nettverkstilkoblingen"; +"local_contacts_access_discovery_warning" = "For å finne kontakter som allerede bruker løsningen, kan %@ sende e-postadresser og telefonnumre i adresseboken til den valgte identitetsserveren. Der det støttes, blir personlige data indeksert før sending - vennligst sjekk identitetsserverens personvernregler for mer informasjon."; +"local_contacts_access_discovery_warning_title" = "Finne brukere"; +"local_contacts_access_not_granted" = "Å finne brukere fra lokale kontakter krever tilgang til dine kontakter, men %@ har ikke tillatelse til å bruke dem"; +"microphone_access_not_granted_for_call" = "Samtaler krever tilgang til mikrofonen, men %@ har ikke tillatelse til å bruke den"; + +// Permissions +"camera_access_not_granted_for_call" = "Videosamtaler krever tilgang til kameraet, men %@ har ikke tillatelse til å bruke det"; +"ssl_homeserver_url" = "Hjemmeserver-URL:% @"; + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /matrix-sdk/src/main/res/values/strings.xml. +*/ + +"notice_room_invite" = "%@ inviterte %@"; +"language_picker_default_language" = "Standard (%@)"; + +// Language picker +"language_picker_title" = "Velg språk"; + +// Country picker +"country_picker_title" = "Velg et land"; +"notice_room_kick" = "%@ utviste %@"; +"notice_room_reject" = "%@ avviste invitasjonen"; +"notice_room_leave" = "%@ forlot"; +"notice_room_join" = "%@ ble med"; +"notice_room_third_party_registered_invite" = "%@ godtok invitasjonen til %@"; +"notice_room_third_party_invite_for_dm" = "%@ inviterte %@"; +"notice_room_third_party_invite" = "%@ sendte en invitasjon til %@ om å bli med i rommet"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ tilbakekalte invitasjonen til %@ om å bli med i rommet"; +"notice_room_third_party_revoked_invite" = "%@ tilbakekalte invitasjonen til %@ om å bli med i rommet"; +"notice_answered_video_call" = "%@ svarte på anropet"; +"notice_placed_video_call" = "%@ startet et videoanrop"; +"notice_placed_voice_call" = "%@ startet et taleanrop"; +"notice_room_name_changed_for_dm" = "%@ endret navnet til %@."; +"notice_room_name_changed" = "%@ endret romnavnet til %@."; +"notice_topic_changed" = "%@ endret emnet til \"%@\"."; +"notice_display_name_removed" = "%@ fjernet visningsnavnet"; +"notice_display_name_changed_from" = "%@ endret visningsnavnet fra %@ til %@"; +"notice_avatar_url_changed" = "%@ byttet avatar"; +"notice_room_reason" = ". Grunnen til: %@"; +"notice_room_withdraw" = "%@ trakk tilbake invitasjonen til %@"; +"notice_room_ban" = "%@ utestengte %@"; +"notice_room_unban" = "%@ omgjorde utestenging %@"; +"notice_declined_video_call" = "%@ avviste anropet"; +"notice_ended_video_call" = "%@ avsluttet samtalen"; +"notice_room_third_party_invite_by_you" = "Du sendte en invitasjon til %@ om å bli med i rommet"; +"notice_room_invite_you" = "%@ inviterte deg"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "Du inviterte %@"; +"notice_conference_call_finished" = "VoIP-konferansen avsluttet"; +"notice_conference_call_started" = "VoIP-konferansen startet"; +"notice_conference_call_request" = "%@ ba om en VoIP-konferanse"; +"notice_room_kick_by_you" = "Du utviste %@"; +"notice_room_reject_by_you" = "Du avviste invitasjonen"; +"notice_room_leave_by_you" = "Du forlot"; +"notice_room_join_by_you" = "Du ble med"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Du tilbakekalte invitasjonen til %@"; +"notice_room_third_party_revoked_invite_by_you" = "Du tilbakekalte invitasjonen til %@ om å bli med i rommet"; +"notice_room_third_party_registered_invite_by_you" = "Du godtok invitasjonen til %@"; +"notice_room_third_party_invite_by_you_for_dm" = "Du inviterte %@"; +"notice_room_unban_by_you" = "Du omgjorde utestenging av %@"; +"notice_room_ban_by_you" = "Du utestengte %@"; +"notice_answered_video_call_by_you" = "Du svarte på anropet"; +"notice_placed_video_call_by_you" = "Du startet et videoanrop"; +"notice_placed_voice_call_by_you" = "Du startet et taleanrop"; +"notice_room_name_changed_by_you_for_dm" = "Du endret navnet til %@."; +"notice_room_name_changed_by_you" = "Du endret romnavnet til %@."; +"notice_topic_changed_by_you" = "Du endret emnet til \"%@\"."; +"notice_display_name_removed_by_you" = "Du fjernet visningsnavnet ditt"; +"notice_display_name_changed_from_by_you" = "Du endret visningsnavnet ditt fra %@ til %@"; +"notice_display_name_set_by_you" = "Du satte visningsnavnet ditt til %@"; +"notice_room_withdraw_by_you" = "Du trakk tilbake invitasjonen til %@"; +"notice_avatar_url_changed_by_you" = "Du byttet avatar"; +"notice_declined_video_call_by_you" = "Du avviste anropet"; +"notice_ended_video_call_by_you" = "Du avsluttet samtalen"; +"login" = "Innlogging"; +"create_room" = "Opprett rom"; + +// actions +"action_logout" = "Logg ut"; +"delete" = "Slett"; +"share" = "Del"; +"redact" = "Fjern"; +"copy_button_name" = "Kopier"; +"send" = "Send"; + +// Room Screen + +// general errors + +// Home Screen + +// Last seen time + +// call events + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /console/src/main/res/values/strings.xml. +*/ + + +// titles + +// button names +"ok" = "OK"; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Du gjorde fremtidige meldinger synlige for alle, fra de ble med."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Du gjorde fremtidig romhistorie synlig for alle medlemmer i rommet, fra det tidspunktet de ble med."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Du gjorde fremtidige meldinger synlige for alle, fra de blir invitert."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Du gjorde fremtidig romhistorie synlig for alle medlemmer i rommet, fra det tidspunktet de er invitert."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Du gjorde fremtidige meldinger synlige for alle medlemmer i rommet."; +"notice_room_history_visible_to_members_by_you" = "Du gjorde fremtidig romhistorie synlig for alle medlemmer i rommet."; +"notice_room_history_visible_to_anyone_by_you" = "Du gjorde fremtidig romhistorie synlig for alle."; +"notice_redaction_by_you" = "Du fjernet en hendelse (id: %@)"; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Du slo på ende-til-ende-kryptering (ukjent algoritme %@)."; +"notice_encryption_enabled_ok_by_you" = "Du slo på ende-til-ende-kryptering."; +"notice_room_created_by_you_for_dm" = "Du ble med."; +"notice_room_created_by_you" = "Du opprettet og konfigurerte rommet."; +"notice_profile_change_redacted_by_you" = "Du oppdaterte profilen din %@"; +"notice_event_redacted_by_you" = " av deg"; +"notice_room_topic_removed_by_you" = "Du fjernet emnet"; +"notice_room_name_removed_by_you_for_dm" = "Du fjernet navnet"; +"notice_room_name_removed_by_you" = "Du fjernet romnavnet"; +"notice_conference_call_request_by_you" = "Du ba om en VoIP-konferanse"; +"kick" = "Utvis"; +"num_members_other" = "%@ brukere"; +"num_members_one" = "%@ bruker"; +"membership_ban" = "Utestengt"; +"membership_leave" = "Forlot"; +"membership_invite" = "Invitert"; +"create_account" = "Opprett konto"; +"notification_settings_global_info" = "Varslingsinnstillinger lagres i brukerkontoen din og deles mellom alle klienter som støtter dem (inkludert skrivebordsvarsler).\n\nRegler brukes i rekkefølge; den første regelen som samsvarer definerer resultatet for meldingen.\nSå: Varsler per ord er viktigere enn varsler per rom som er viktigere enn varsler per avsender.\nVed flere regler av samme type benyttes den første i listen som samsvarer."; +"notification_settings_enable_notifications_warning" = "Alle varsler er for øyeblikket deaktivert for alle enheter."; +"notification_settings_enable_notifications" = "Aktiver varsler"; + +// Notification settings screen +"notification_settings_disable_all" = "Deaktiver alle varsler"; +"settings_title_notifications" = "Varsler"; + +// Settings screen +"settings_title_config" = "Konfigurasjon"; + +// contacts list screen +"invitation_message" = "Jeg vil gjerne chatte med deg med Matrix. Besøk nettstedet https://matrix.org for å få mer informasjon."; + +// members list Screen + +// accounts list Screen + +// image size selection + +// invitation members list Screen + +// room creation dialog Screen + +// room info dialog Screen + +// room details dialog screen +"login_error_must_start_http" = "URL må starte med http[s]://"; + +// Login Screen +"login_error_already_logged_in" = "Allerede logget inn"; +"message_unsaved_changes" = "Endringer er ikke lagret. Hvis du avslutter, forkastes de."; +"unban" = "Omgjør utestenging"; +"ban" = "Utesteng"; +"notification_settings_receive_a_call" = "Varsle meg når jeg mottar et anrop"; +"notification_settings_people_join_leave_rooms" = "Varsle meg når folk blir med eller forlater rom"; +"notification_settings_invite_to_a_new_room" = "Varsle meg når jeg blir invitert til et nytt rom"; +"notification_settings_just_sent_to_me" = "Varsle meg med lyd om meldinger sendt bare til meg"; +"notification_settings_contain_my_display_name" = "Varsle meg med lyd om meldinger som inneholder visningsnavnet mitt"; +"notification_settings_contain_my_user_name" = "Varsle meg med lyd om meldinger som inneholder brukernavnet mitt"; +"notification_settings_other_alerts" = "Andre varsler"; +"notification_settings_select_room" = "Velg et rom"; +"notification_settings_sender_hint" = "@bruker:domene.com"; +"notification_settings_per_sender_notifications" = "Varsler per avsender"; +"notification_settings_per_room_notifications" = "Varsler per rom"; +"notification_settings_custom_sound" = "Egendefinert lyd"; +"notification_settings_highlight" = "Fremhev"; +"notification_settings_word_to_match" = "ord som skal samsvare"; +"notification_settings_never_notify" = "Aldri varsle"; +"notification_settings_always_notify" = "Alltid varsle"; +"notification_settings_per_word_info" = "Ord samsvarer uten å ta hensyn til store eller små bokstaver, og kan inneholde et * jokertegn. Så:\nfoo samsvarer med strengen foo omgitt av ordavgrensere (f.eks. tegnsetting og mellomrom eller start/slutt på linjen).\nfoo* samsvarer med et slikt ord som begynner foo.\n*foo* samsvarer med et hvilket som helst ord som inkluderer de tre bokstavene foo."; +"notification_settings_per_word_notifications" = "Varsler per ord"; +"notification_settings_suppress_from_bots" = "Blokker meldinger fra roboter"; +"notification_settings_notify_all_other" = "Varsle for alle andre meldinger/rom"; +"notification_settings_by_default" = "Som standard ..."; +"incoming_video_call" = "Innkommende videoanrop"; +"call_ended" = "Samtale avsluttet"; +"call_ringing" = "Ringer…"; + +// Settings keys + +// call string +"call_connecting" = "Kobler til…"; + +// gcm section +"incoming_voice_call" = "Innkommende taleanrop"; +"call_invite_expired" = "Anropsinvitasjon utløpt"; + +// unrecognized SSL certificate +"ssl_trust" = "Tillit"; +"call_transfer_to_user" = "Overfør til %@"; +"call_consulting_with_user" = "Rådfører seg med %@"; +"call_video_with_user" = "Videosamtale med %@"; +"call_voice_with_user" = "Taleanrop med %@"; +"call_more_actions_dialpad" = "Tastaturet"; +"call_more_actions_transfer" = "Overfør"; +"call_more_actions_audio_use_device" = "Bruk enhetslyd"; +"call_more_actions_audio_use_headset" = "Bruk hodetelefonlyd"; +"call_more_actions_change_audio_device" = "Bytt lydenhet"; +"call_more_actions_unhold" = "Gjenoppta"; +"call_more_actions_hold" = "Hold"; +"call_holded" = "Du holdt samtalen"; +"call_remote_holded" = "%@ satte samtalen på vent"; +"ssl_unexpected_existing_expl" = "Sertifikatet har endret seg fra et som telefonen din klarerte. Dette er VELDIG UVANLIG. Det anbefales derfor at du IKKE godtar dette nye sertifikatet."; +"ssl_cert_new_account_expl" = "Hvis serveradministratoren har sagt at dette forventes, må du forsikre deg om at fingeravtrykket nedenfor samsvarer med fingeravtrykket du har fått."; +"ssl_could_not_verify" = "Kunne ikke bekrefte identiteten til den eksterne serveren."; +"ssl_fingerprint_hash" = "Fingeravtrykk (%@):"; +"ssl_remain_offline" = "Ignorer"; +"ssl_logout_account" = "Logg ut"; +"ssl_expected_existing_expl" = "Sertifikatet er endret fra et tidligere klarert til et som ikke er klarert. Serveren kan ha fornyet sertifikatet. Kontakt serveradministratoren for forventet fingeravtrykk."; +"ssl_only_accept" = "Godta KUN sertifikatet hvis serveradministratoren har publisert et fingeravtrykk som samsvarer med det over."; diff --git a/Riot/Assets/nl.lproj/Vector.strings b/Riot/Assets/nl.lproj/Vector.strings index ffe224e84..85999444d 100644 --- a/Riot/Assets/nl.lproj/Vector.strings +++ b/Riot/Assets/nl.lproj/Vector.strings @@ -309,8 +309,6 @@ "settings_privacy_policy" = "Privacybeleid"; "settings_third_party_notices" = "Derdepartijmeldingen"; "settings_send_crash_report" = "Anonieme crash- en gebruiksgegevens versturen"; -"settings_clear_cache" = "Cache verwijderen"; -"settings_change_password" = "Matrix account wachtwoord veranderen"; "settings_old_password" = "oud wachtwoord"; "settings_new_password" = "nieuw wachtwoord"; "settings_confirm_password" = "wachtwoord bevestigen"; @@ -1758,3 +1756,530 @@ "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"; + + +// MARK: - MatrixKit + + +/* + Copyright 2017 Vector Creations Ltd + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Account aanmaken:"; +"login_server_url_placeholder" = "URL (bv. https://matrix.org)"; +"login_home_server_title" = "Thuisserver-URL:"; +"login_home_server_info" = "Uw thuisserver slaat al uw gespreks- en accountgegevens op"; +"login_identity_server_title" = "Identiteitsserver-URL:"; +"login_identity_server_info" = "Matrix verstrekt identiteitsservers om te achterhalen welke e-mailadressen enz. bij welke Matrix-ID’s horen. Tot nu toe bestaat alleen https://matrix.org."; +"login_user_id_placeholder" = "Matrix-ID (bv. @jan:matrix.org of jan)"; +"login_password_placeholder" = "Wachtwoord"; +"login_optional_field" = "optioneel"; +"login_display_name_placeholder" = "Weergavenaam (bv. Jan Janssens)"; +"login_email_info" = "Door een e-mailadres in te voeren kunnen andere gebruikers u eenvoudiger op Matrix vinden, verder geeft het u een manier om uw wachtwoord in de toekomst te wijzigen."; +"login_email_placeholder" = "E-mailadres"; +"login_prompt_email_token" = "Voer uw e-mailadres-validatiebewijs in:"; +"login_error_title" = "Aanmelden Mislukt"; +"login_error_no_login_flow" = "Ophalen van authenticatie-informatie van deze thuisserver is mislukt"; +"login_error_do_not_support_login_flows" = "Momenteel bieden we geen ondersteuning voor sommige of alle aanmeldingsmethoden van deze thuisserver"; +"login_error_registration_is_not_supported" = "Registratie wordt momenteel niet ondersteund"; +"login_error_forbidden" = "Ongeldige gebruikersnaam/wachtwoord"; +"login_error_unknown_token" = "Het gespecificeerde toegangsbewijs is niet herkend"; +"login_error_bad_json" = "Ongeldige JSON"; +"login_error_not_json" = "Bevat geen geldige JSON"; +"login_error_limit_exceeded" = "Er zijn te veel verzoeken verzonden"; +"login_error_user_in_use" = "Deze gebruikersnaam is al in gebruik"; +"login_error_login_email_not_yet" = "De koppeling in de e-mail is nog niet geopend"; +"login_use_fallback" = "Terugvalpagina gebruiken"; +"login_leave_fallback" = "Annuleren"; +"login_invalid_param" = "Ongeldige parameter"; +"register_error_title" = "Registratie Mislukt"; +"login_error_forgot_password_is_not_supported" = "Wachtwoord vergeten wordt momenteel nog niet ondersteund"; +// Action +"no" = "Nee"; +"yes" = "Ja"; +"abort" = "Afbreken"; +"discard" = "Verwerpen"; +"dismiss" = "Sluiten"; +"sign_up" = "Aanmelden"; +"submit" = "Versturen"; +"submit_code" = "Code versturen"; +"set_power_level" = "Machtsniveau instellen"; +"set_default_power_level" = "Machtsniveau opnieuw instellen"; +"set_moderator" = "Tot moderator benoemen"; +"set_admin" = "Tot beheerder benoemen"; +"start_chat" = "Gesprek beginnen"; +"start_voice_call" = "Spraakoproep beginnen"; +"start_video_call" = "Video-oproep beginnen"; +"mention" = "Vermelden"; +"select_account" = "Selecteer een account"; +"attach_media" = "Media van de bibliotheek bijvoegen"; +"capture_media" = "Foto/video maken"; +"invite_user" = "Matrix-gebruiker uitnodigen"; +"reset_to_default" = "Standaardwaarden herstellen"; +"resend_message" = "Bericht opnieuw versturen"; +"select_all" = "Alles selecteren"; +"cancel_upload" = "Upload annuleren"; +"cancel_download" = "Download annuleren"; +"show_details" = "Details weergeven"; +"answer_call" = "Oproep beantwoorden"; +"reject_call" = "Oproep afwijzen"; +"end_call" = "Ophangen"; +"ignore" = "Negeren"; +"unignore" = "Stoppen met negeren"; +// Events formatter +"notice_avatar_changed_too" = "(avatar is ook veranderd)"; +"notice_room_name_removed" = "%@ heeft de gespreksnaam verwijderd"; +"notice_room_topic_removed" = "%@ heeft het onderwerp verwijderd"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " door %@"; +"notice_event_redacted_reason" = " [reden: %@]"; +"notice_profile_change_redacted" = "%@ heeft zijn/haar profiel bijgewerkt %@"; +"notice_room_created" = "%@ heeft de kamer aangemaakt en ingesteld."; +"notice_room_join_rule" = "De toetredingsregel is: %@"; +"notice_room_power_level_intro" = "De machtsniveaus van de gespreksleden zijn:"; +"notice_room_power_level_acting_requirement" = "De minimale machtsniveaus waarover een gebruiker moet beschikken vooraleer deze kan handelen zijn:"; +"notice_room_power_level_event_requirement" = "De minimale machtsniveaus gerelateerd aan gebeurtenissen zijn:"; +"notice_room_aliases" = "De gespreksbijnamen zijn: %@"; +"notice_encrypted_message" = "Versleuteld bericht"; +"notice_encryption_enabled" = "%@ heeft eind-tot-eind-versleuteling aangezet (%@-algoritme)"; +"notice_image_attachment" = "afbeeldingsbijlage"; +"notice_audio_attachment" = "audiobijlage"; +"notice_video_attachment" = "videobijlage"; +"notice_location_attachment" = "locatiebijlage"; +"notice_file_attachment" = "bestandsbijlage"; +"notice_invalid_attachment" = "ongeldige bijlage"; +"notice_unsupported_attachment" = "Niet-ondersteunde bijlage: %@"; +"notice_feedback" = "Feedbackgebeurtenis (id: %@): %@"; +"notice_redaction" = "%@ een gebeurtenis verwijderd (id: %@)"; +"notice_error_unsupported_event" = "Niet-ondersteunde gebeurtenis"; +"notice_error_unexpected_event" = "Onverwachte gebeurtenis"; +"notice_error_unknown_event_type" = "Onbekend gebeurtenistype"; +"notice_room_history_visible_to_anyone" = "%@ heeft de toekomstige gespreksgeschiedenis voor iedereen zichtbaar gemaakt."; +"notice_room_history_visible_to_members" = "%@ heeft de toekomstige gespreksgeschiedenis voor alle gespreksleden zichtbaar gemaakt."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ heeft de toekomstige gespreksgeschiedenis zichtbaar gemaakt voor alle gespreksleden, vanaf het moment dat ze uitgenodigd zijn."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ heeft de toekomstige gespreksgeschiedenis zichtbaar gemaakt voor alle gespreksleden, vanaf het moment dat ze toetreden."; +"notice_crypto_unable_to_decrypt" = "** Kan niet ontsleutelen: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "De sessie van de afzender heeft ons geen sleutels voor dit bericht gestuurd."; +// room display name +"room_displayname_empty_room" = "Leeg gesprek"; +"room_displayname_two_members" = "%@ en %@"; +"room_displayname_more_than_two_members" = "%@ en %@ anderen"; +// Settings +"settings" = "Instellingen"; +"settings_enable_inapp_notifications" = "In-app-meldingen inschakelen"; +"settings_enable_push_notifications" = "Pushmeldingen inschakelen"; +"settings_enter_validation_token_for" = "Voer validatiebewijs voor %@ in:"; +"notification_settings_room_rule_title" = "Gesprek: ‘%@’"; +// Devices +"device_details_title" = "Sessie-informatie\n"; +"device_details_name" = "Publieke naam\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Laatst gezien\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "De publieke naam van een sessie is zichtbaar voor de personen waarmee u communiceert"; +"device_details_delete_prompt_title" = "Authenticatie"; +"device_details_delete_prompt_message" = "Deze handeling vereist bijkomende authenticatie.\nVoer uw wachtwoord in om verder te gaan."; +// Encryption information +"room_event_encryption_info_title" = "Informatie over eind-tot-eind-versleuteling\n\n"; +"room_event_encryption_info_event" = "Gebeurtenisinformatie\n"; +"room_event_encryption_info_event_user_id" = "Gebruikers-ID\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519-identiteitssleutel\n"; +"room_event_encryption_info_event_fingerprint_key" = "Geclaimde Ed25519-vingerafdrukssleutel\n"; +"room_event_encryption_info_event_algorithm" = "Algoritme\n"; +"room_event_encryption_info_event_session_id" = "Sessie-ID\n"; +"room_event_encryption_info_event_decryption_error" = "Ontsleutelingsfout\n"; +"room_event_encryption_info_event_unencrypted" = "onversleuteld"; +"room_event_encryption_info_event_none" = "geen"; +"room_event_encryption_info_device" = "\nInformatie over sessie van afzender\n"; +"room_event_encryption_info_device_unknown" = "onbekende sessie\n"; +"room_event_encryption_info_device_name" = "Publieke naam\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "Verificatie\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519-vingerafdruk\n"; +"room_event_encryption_info_device_verified" = "Geverifieerd"; +"room_event_encryption_info_device_not_verified" = "NIET geverifieerd"; +"room_event_encryption_info_device_blocked" = "Geblokkeerd"; +"room_event_encryption_info_verify" = "Verifiëren…"; +"room_event_encryption_info_unverify" = "Ontverifiëren"; +"room_event_encryption_info_block" = "Blokkeren"; +"room_event_encryption_info_unblock" = "Deblokkeren"; +"room_event_encryption_verify_title" = "Sessie verifiëren\n\n"; +"room_event_encryption_verify_message" = "Om te verifiëren dat deze sessie vertrouwd kan worden, neemt u contact op met de eigenaar van de sessie op een andere manier (bv. persoonlijk of door te bellen) en vraagt u hem/haar of de sleutel die hij/zij in de gebruikersinstellingen ziet overeenkomt met de onderstaande sleutel:\n\n\tSessienaam: %@\n\tSessie-ID: %@\n\tSessiesleutel: %@\n\nAls het overeenkomt, klikt u hieronder op de knop ‘Verifiëren’. Als het niet overeenkomt, onderschept iemand anders deze sessie en drukt u in plaats daarvan op de knop ‘Blokkeren’.\n\nIn de toekomst zal dit verificatieproces verbeterd worden."; +"room_event_encryption_verify_ok" = "Verifiëren"; +// Account +"account_save_changes" = "Wijzigingen opslaan"; +"account_link_email" = "E-mailadres koppelen"; +"account_linked_emails" = "Gekoppelde e-mailadressen"; +"account_email_validation_title" = "Verificatie in afwachting"; +"account_email_validation_message" = "Bekijk uw e-mail en open de koppeling erin. Wanneer dit gedaan is, tikt u op verder gaan."; +"account_email_validation_error" = "Kan het e-mailadres niet verifiëren. Bekijk uw e-mail en open de koppeling erin. Wanneer dit gedaan is, tikt u op verder gaan"; +"account_msisdn_validation_title" = "Verificatie in afwachting"; +"account_msisdn_validation_message" = "We hebben een sms met een activatiecode verstuurd. Voer deze code hieronder in."; +"account_msisdn_validation_error" = "Kan het telefoonnummer niet verifiëren."; +"account_error_display_name_change_failed" = "Wijzigen van weergavenaam is mislukt"; +"account_error_picture_change_failed" = "Wijzigen van afbeelding is mislukt"; +"account_error_matrix_session_is_not_opened" = "Matrix-sessie is niet geopend"; +"account_error_email_wrong_title" = "Ongeldig e-mailadres"; +"account_error_email_wrong_description" = "Het ziet er niet naar uit dat dit een geldig e-mailadres is"; +"account_error_msisdn_wrong_title" = "Ongeldig telefoonnummer"; +"account_error_msisdn_wrong_description" = "Het ziet er niet naar uit dat dit een geldig telefoonnummer is"; +// Room creation +"room_creation_name_title" = "Gespreksnaam:"; +"room_creation_name_placeholder" = "(bv. lunchGroep)"; +"room_creation_alias_title" = "Gespreksbijnaam:"; +"room_creation_alias_placeholder" = "(bv. #foo:voorbeeld.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(bv. #foo%@)"; +"room_creation_participants_title" = "Deelnemers:"; +"room_creation_participants_placeholder" = "(bv. @jan:thuisserver1; @joep:thuisserver2…)"; +// Room +"room_please_select" = "Selecteer een gesprek"; +"room_error_join_failed_title" = "Toetreden tot het gesprek is mislukt"; +"room_error_join_failed_empty_room" = "Het is momenteel niet mogelijk om tot een leeg gesprek toe te treden."; +"room_error_name_edition_not_authorized" = "U bent niet bevoegd om de naam van dit gesprek te wijzigen"; +"room_error_topic_edition_not_authorized" = "U bent niet bevoegd om het onderwerp van dit gesprek te wijzigen"; +"room_error_cannot_load_timeline" = "Laden van tijdslijn is mislukt"; +"room_error_timeline_event_not_found_title" = "Laden van tijdslijnpositie is mislukt"; +"room_error_timeline_event_not_found" = "De app heeft geprobeerd een specifiek punt in de tijdslijn van dit gesprek te laden, maar kon het niet vinden"; +"room_left" = "U heeft het gesprek verlaten"; +"room_no_power_to_create_conference_call" = "U heeft toestemming nodig om een vergadering in dit groepsgesprek te starten"; +"room_no_conference_call_in_encrypted_rooms" = "Vergadergesprekken worden niet ondersteund in versleutelde gesprekken"; +// Room members +"room_member_ignore_prompt" = "Weet u zeker dat u alle berichten van deze gebruiker wilt verbergen?"; +"room_member_power_level_prompt" = "U kunt deze veranderingen niet ongedaan maken aangezien u de gebruiker tot hetzelfde niveau als uzelf promoveert.\nWeet u het zeker?"; +// Attachment +"attachment_size_prompt" = "Wilt u het versturen als:"; +"attachment_original" = "Werkelijke grootte (%@)"; +"attachment_small" = "Klein (~%@)"; +"attachment_medium" = "Middel (~%@)"; +"attachment_large" = "Groot (~%@)"; +"attachment_cancel_download" = "Download annuleren?"; +"attachment_cancel_upload" = "Upload annuleren?"; +"attachment_multiselection_size_prompt" = "Wilt u afbeeldingen versturen als:"; +"attachment_multiselection_original" = "Werkelijke grootte"; +"attachment_e2e_keys_file_prompt" = "Dit bestand bevat versleutelingssleutels die uit een Matrix-client geëxporteerd zijn.\nWilt u de bestandsinhoud bekijken of de sleutels die het bevat importeren?"; +"attachment_e2e_keys_import" = "Bezig met importeren…"; +// Contacts +"contact_mx_users" = "Matrix-gebruikers"; +"contact_local_contacts" = "Lokale contacten"; +// Search +"search_no_results" = "Geen resultaten"; +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "u"; +"format_time_d" = "d"; +// E2E import +"e2e_import_room_keys" = "Gesprekssleutels importeren"; +"e2e_import_prompt" = "Dit proces maakt het mogelijk om versleutelingssleutels die u eerder had geëxporteerd vanaf een andere Matrix-cliënt te importeren. Daarna kunt u alle berichten ontsleutelen die de andere cliënt ook kon ontsleutelen.\nHet exporteerbestand is beschermd met een wachtwoord. Voer hier het wachtwoord in om het bestand te ontsleutelen."; +"e2e_import" = "Importeren"; +"e2e_passphrase_enter" = "Voer wachtwoord in"; +// E2E export +"e2e_export_room_keys" = "Gesprekssleutels exporteren"; +"e2e_export_prompt" = "Dit proces maakt het mogelijk om de sleutels voor berichten die u heeft ontvangen in versleutelde gesprekken te exporteren naar een lokaal bestand. Daarna kunt u het bestand in de toekomst in een andere Matrix-cliënt importeren, zodat die cliënt ook deze berichten zal kunnen ontsleutelen.\nHet geëxporteerde bestand zal iedereen die het kan lezen de mogelijkheid bieden om de versleutelde berichten die u kunt zien te ontsleutelen, dus wees voorzichtig en bewaar het op een veilige plaats."; +"e2e_export" = "Exporteren"; +"e2e_passphrase_confirm" = "Bevestig wachtwoord"; +"e2e_passphrase_empty" = "Wachtwoord mag niet leeg zijn"; +"e2e_passphrase_not_match" = "Wachtwoorden moeten overeenkomen"; +// Others +"user_id_title" = "Gebruikers-ID:"; +"offline" = "offline"; +"unsent" = "Niet verstuurd"; +"error" = "Fout"; +"not_supported_yet" = "Nog niet ondersteund"; +"default" = "standaard"; +"private" = "Privé"; +"public" = "Publiek"; +"power_level" = "Machtsniveau"; +"network_error_not_reachable" = "Controleer uw netwerkverbinding"; +"user_id_placeholder" = "bv: @jan:thuisserver"; +"ssl_homeserver_url" = "Thuisserver-URL: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Video-oproepen vereisen toegang tot de camera, maar %@ heeft hier geen toestemming voor"; +"microphone_access_not_granted_for_call" = "Oproepen vereisen toegang tot de camera, maar %@ heeft hier geen toestemming voor"; +"local_contacts_access_not_granted" = "Gebruikers zoeken op basis van uw lokale contacten vereist toegang tot die contacten, maar %@ heeft hier geen toestemming voor"; +"local_contacts_access_discovery_warning_title" = "Gebruikers zoeken"; +"local_contacts_access_discovery_warning" = "Om contacten te vinden die Matrix al gebruiken, kan %@ de e-mailadressen en telefoonnummers in uw adresboek naar uw gekozen Matrix-identiteitsserver sturen. Waar ondersteund worden de persoonlijke gegevens gehasht vóór het versturen - bekijk het privacybeleid van uw identiteitsserver voor meer informatie."; +// Country picker +"country_picker_title" = "Kies een land"; +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /matrix-sdk/src/main/res/values/strings.xml. +*/ + +"notice_room_invite" = "%@ heeft %@ uitgenodigd"; +"notice_room_third_party_invite" = "%@ heeft een uitnodiging gestuurd naar %@ om tot het gesprek toe te treden"; +"notice_room_third_party_registered_invite" = "%@ heeft de uitnodiging voor %@ aanvaard"; +"notice_room_join" = "%@ is tot de kamer toegetreden"; +"notice_room_leave" = "%@ heeft de kamer verlaten"; +"notice_room_reject" = "%@ heeft de uitnodiging geweigerd"; +"notice_room_kick" = "%@ heeft %@ uit de kamer gezet"; +"notice_room_unban" = "%@ heeft %@ ontbannen"; +"notice_room_ban" = "%@ heeft %@ verbannen"; +"notice_room_withdraw" = "%@ heeft de uitnodiging van %@ ingetrokken"; +"notice_room_reason" = ". Reden: %@"; +"notice_avatar_url_changed" = "%@ heeft zijn/haar avatar veranderd"; +"notice_display_name_set" = "%@ heeft zijn/haar weergavenaam veranderd naar %@"; +"notice_display_name_changed_from" = "%@ heeft zijn/haar weergavenaam veranderd van %@ naar %@"; +"notice_display_name_removed" = "%@ heeft zijn/haar weergavenaam verwijderd"; +"notice_topic_changed" = "%@ heeft het onderwerp veranderd naar \"%@\"."; +"notice_room_name_changed" = "%@ heeft de gespreksnaam veranderd naar %@."; +"notice_placed_voice_call" = "%@ heeft een spraakoproep gestart"; +"notice_placed_video_call" = "%@ heeft een video-oproep gestart"; +"notice_answered_video_call" = "%@ heeft de oproep beantwoord"; +"notice_ended_video_call" = "%@ heeft opgehangen"; +"notice_conference_call_request" = "%@ heeft een VoIP-vergadering aangevraagd"; +"notice_conference_call_started" = "VoIP-vergadering gestart"; +"notice_conference_call_finished" = "VoIP-vergadering beëindigd"; +// Room Screen + +// general errors + +// Home Screen + +// Last seen time + +// call events + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /console/src/main/res/values/strings.xml. +*/ + +// titles + +// button names +"send" = "Versturen"; +"copy_button_name" = "Kopiëren"; +"resend" = "Opnieuw versturen"; +"redact" = "Verwijderen"; +"share" = "Delen"; +"delete" = "Verwijderen"; +// actions +"action_logout" = "Afmelden"; +"create_room" = "Gesprek aanmaken"; +"login" = "Aanmelden"; +"create_account" = "Account aanmaken"; +"membership_invite" = "Uitgenodigd"; +"membership_leave" = "Verlaten"; +"membership_ban" = "Verbannen"; +"num_members_one" = "%@ gebruiker"; +"num_members_other" = "%@ gebruikers"; +"kick" = "Er uit zetten"; +"ban" = "Verbannen"; +"unban" = "Ontbannen"; +"message_unsaved_changes" = "Er zijn onopgeslagen wijzigingen. Verlaten zal ze verwijderen."; +// Login Screen +"login_error_already_logged_in" = "Reeds aangemeld"; +"login_error_must_start_http" = "URL moet beginnen met http[s]://"; +// members list Screen + +// accounts list Screen + +// image size selection + +// invitation members list Screen + +// room creation dialog Screen + +// room info dialog Screen + +// room details dialog screen +// contacts list screen +"invitation_message" = "Ik wil graag praten via Matrix. Bezoek de website https://matrix.org voor meer informatie."; +// Settings screen +"settings_title_config" = "Configuratie"; +"settings_title_notifications" = "Meldingen"; +// Notification settings screen +"notification_settings_disable_all" = "Alle meldingen uitschakelen"; +"notification_settings_enable_notifications" = "Meldingen inschakelen"; +"notification_settings_enable_notifications_warning" = "Alle meldingen zijn momenteel voor alle apparaten uitgeschakeld."; +"notification_settings_global_info" = "Meldingsinstellingen worden op uw account opgeslagen en gedeeld met alle cliënten die dat ondersteunen (inclusief bureaubladmeldingen).\n\nRegels worden in volgorde toegepast; de eerste regel die overeenkomt bepaalt de uitkomst van een bericht.\nDus: per-woord-meldingen zijn belangrijker dan per-gespreks-meldingen, die op hun beurt weer belangrijker zijn dan per-afzender-meldingen.\nVoor meerdere regels van hetzelfde type geldt dat de eerste in de lijst die overeenkomt de prioriteit heeft."; +"notification_settings_per_word_notifications" = "Per-woord-meldingen"; +"notification_settings_per_word_info" = "Woorden komen niet hoofdlettergevoelig met elkaar overeen en kunnen een *-wildcard bevatten. Dus:\nfoo komt overeen met de tekenreeks ‘foo’, die omgeven wordt door woordscheidingstekens (zoals punctuatie en spaties, of het begin of einde van een regel).\nfoo* komt overeen met elk woord dat met ‘foo’ begint.\n*foo* komt overeen met elk woord dat de drie letters ‘foo’ bevat."; +"notification_settings_always_notify" = "Altijd melden"; +"notification_settings_never_notify" = "Nooit melden"; +"notification_settings_word_to_match" = "woord om mee overeen te komen"; +"notification_settings_highlight" = "Markeren"; +"notification_settings_custom_sound" = "Aangepast geluid"; +"notification_settings_per_room_notifications" = "Per-gespreks-meldingen"; +"notification_settings_per_sender_notifications" = "Per-afzender-meldingen"; +"notification_settings_sender_hint" = "@gebruiker:domein.com"; +"notification_settings_select_room" = "Selecteer een gesprek"; +"notification_settings_other_alerts" = "Andere meldingen"; +"notification_settings_contain_my_user_name" = "Meld mij met geluid over berichten die mijn gebruikersnaam bevatten"; +"notification_settings_contain_my_display_name" = "Meld mij met geluid over berichten die mijn weergavenaam bevatten"; +"notification_settings_just_sent_to_me" = "Meld mij met geluid over berichten die alleen naar mij gestuurd zijn"; +"notification_settings_invite_to_a_new_room" = "Meld mij wanneer ik in een nieuw gesprek uitgenodigd word"; +"notification_settings_people_join_leave_rooms" = "Meld mij wanneer mensen het gesprek verlaten of betreden"; +"notification_settings_receive_a_call" = "Meld mij wanneer ik een oproep ontvang"; +"notification_settings_suppress_from_bots" = "Meldingen van robots onderdrukken"; +"notification_settings_by_default" = "Standaard…"; +"notification_settings_notify_all_other" = "Melden voor alle andere berichten/gesprekken"; +// gcm section +// Settings keys + +// call string +"call_waiting" = "In afwachting…"; +"call_connecting" = "Verbinden…"; +"call_ended" = "Oproep beëindigd"; +"call_ring" = "Bellen…"; +"incoming_video_call" = "Inkomende video-oproep"; +"incoming_voice_call" = "Inkomende spraakoproep"; +"call_invite_expired" = "Oproepuitnodiging verlopen"; +// unrecognized SSL certificate +"ssl_trust" = "Vertrouwen"; +"ssl_logout_account" = "Afmelden"; +"ssl_remain_offline" = "Negeren"; +"ssl_fingerprint_hash" = "Vingerafdruk (%@):"; +"ssl_could_not_verify" = "Kan de identiteit van de externe server niet bepalen."; +"ssl_cert_not_trust" = "Dit kan betekenen dat iemand kwaadwillig uw verkeer onderschept, of dat uw telefoon het certificaat dat door de externe server wordt geleverd niet vertrouwt."; +"ssl_cert_new_account_expl" = "Als de serverbeheerder heeft gezegd dat dit de bedoeling is, wees er dan zeker van dat de vingerafdruk hieronder overeenkomt met de vingerafdruk die door hen wordt geleverd."; +"ssl_unexpected_existing_expl" = "Het certificaat is veranderd van één dat door uw telefoon werd vertrouwd naar een ander. Dit is HEEL ONGEBRUIKELIJK. Het wordt aangeraden om dit nieuwe certificaat NIET TE AANVAARDEN."; +"ssl_expected_existing_expl" = "Het certificaat is veranderd van een vertrouwd naar een onvertrouwd certificaat. De server heeft misschien zijn certificaat vernieuwd. Contacteer de serverbeheerder voor de verwachte vingerafdruk."; +"ssl_only_accept" = "Aanvaard het certificaat alleen als de serverbeheerder een vingerafdruk heeft gepubliceerd die overeenkomt met degene hierboven."; +"search_searching" = "Bezig met zoeken…"; +// Language picker +"language_picker_title" = "Kies een taal"; +"language_picker_default_language" = "Standaard (%@)"; +"login_mobile_device" = "Mobiel"; +"login_tablet_device" = "Tablet"; +"login_desktop_device" = "Desktop"; +"notice_room_related_groups" = "De groepen die geassocieerd zijn met dit gesprek zijn: %@"; +// Groups +"notice_sticker" = "sticker"; +"notice_in_reply_to" = "In antwoord op"; +"error_common_message" = "Er is een fout opgetreden. Probeer het later opnieuw."; +"login_error_resource_limit_exceeded_title" = "Bronlimiet Overschreden"; +"login_error_resource_limit_exceeded_message_default" = "Deze thuisserver heeft één of meerdere van zijn bronlimieten overschreden."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Deze thuisserver heeft zijn limiet voor maandelijks actieve gebruikers bereikt."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nGelieve contact op te nemen met uw dienstbeheerder om deze dienst te blijven gebruiken."; +"login_error_resource_limit_exceeded_contact_button" = "Beheerder contacteren"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "heeft een afbeelding gestuurd."; +"message_reply_to_sender_sent_a_video" = "heeft een video gestuurd."; +"message_reply_to_sender_sent_an_audio_file" = "heeft een audiobestand gestuurd."; +"message_reply_to_sender_sent_a_file" = "heeft een bestand gestuurd."; +"message_reply_to_message_to_reply_to_prefix" = "In antwoord op"; +"e2e_passphrase_create" = "Wachtwoord aanmaken"; +"account_error_push_not_allowed" = "Meldingen niet toegestaan"; +"notice_room_third_party_revoked_invite" = "%@ heeft de uitnodiging voor %@ om tot het gesprek toe te treden ingetrokken"; +"device_details_rename_prompt_title" = "Sessienaam"; +"notice_encryption_enabled_ok" = "%@ heeft eind-tot-eind-versleuteling ingeschakeld."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ heeft eind-tot-eind-versleuteling ingeschakeld (onbekend algoritme %2$@)."; +"notice_room_name_removed_for_dm" = "%@ heeft de naam verwijderd"; +"notice_room_ban_by_you" = "U heeft %@ verbannen"; +"notice_room_unban_by_you" = "U heeft %@ ontbannen"; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "U heeft toekomstige berichten voor iedereen zichtbaar gemaakt vanaf het moment dat zij deelnemen aan het gesprek."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "U heeft de toekomstige gespreksgeschiedenis zichtbaar gemaakt voor alle gespreksleden, vanaf het moment dat ze toegetreden zijn."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "U heeft toekomstige berichten voor iedereen zichtbaar gemaakt vanaf het moment dat zij zijn uitgenodigd."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "U heeft de toekomstige gespreksgeschiedenis zichtbaar gemaakt voor alle gespreksleden, vanaf het moment dat ze uitgenodigd zijn."; +"notice_room_history_visible_to_members_by_you_for_dm" = "U heeft toekomstige berichten voor alle gespreksleden zichtbaar gemaakt."; +"notice_room_history_visible_to_members_by_you" = "U heeft de toekomstige gespreksgeschiedenis voor alle gespreksleden zichtbaar gemaakt."; +"notice_room_history_visible_to_anyone_by_you" = "U heeft de toekomstige gespreksgeschiedenis voor iedereen zichtbaar gemaakt."; +"notice_redaction_by_you" = "U heeft een gebeurtenis bewerkt (ID: %@)"; +"notice_encryption_enabled_unknown_algorithm_by_you" = "U heeft eind-tot-eind-versleuteling ingeschakeld (onbekend algoritme %@)."; +"notice_encryption_enabled_ok_by_you" = "U heeft eind-tot-eind-versleuteling ingeschakeld."; +"notice_room_created_by_you_for_dm" = "U bent toegetreden."; +"notice_room_created_by_you" = "U heeft de kamer aangemaakt en ingesteld."; +"notice_profile_change_redacted_by_you" = "U heeft uw profiel %@ bijgewerkt"; +"notice_event_redacted_by_you" = " door u"; +"notice_room_topic_removed_by_you" = "U heeft het onderwerp verwijderd"; +"notice_room_name_removed_by_you_for_dm" = "U heeft de naam verwijderd"; +"notice_room_name_removed_by_you" = "U heeft de gespreksnaam verwijderd"; +"notice_conference_call_request_by_you" = "U heeft een VoIP-vergadering aangevraagd"; +"notice_ended_video_call_by_you" = "U heeft opgehangen"; +"notice_answered_video_call_by_you" = "U heeft de oproep beantwoord"; +"notice_placed_video_call_by_you" = "U heeft een spraakoproep gestart"; +"notice_placed_voice_call_by_you" = "U heeft een spraakoproep gestart"; +"notice_room_name_changed_by_you_for_dm" = "U heeft de gespreksnaam veranderd naar %@."; +"notice_room_name_changed_by_you" = "U heeft de gespreksnaam veranderd naar %@."; +"notice_topic_changed_by_you" = "U heeft het onderwerp veranderd naar \"%@\"."; +"notice_display_name_removed_by_you" = "U heeft uw weergavenaam verwijderd"; +"notice_display_name_changed_from_by_you" = "U heeft uw weergavenaam veranderd van %@ naar %@"; +"notice_display_name_set_by_you" = "U heeft uw weergavenaam veranderd naar %@"; +"notice_avatar_url_changed_by_you" = "U heeft uw profielfoto veranderd"; +"notice_room_withdraw_by_you" = "U heeft %@'s uitnodiging teruggetrokken"; +"notice_room_kick_by_you" = "U heeft %@ verwijderd uit het gesprek"; +"notice_room_reject_by_you" = "U heeft de uitnodiging geweigerd"; +"notice_room_leave_by_you" = "U heeft het gesprek verlaten"; +"notice_room_join_by_you" = "U bent toegetreden"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "U heeft %@'s uitnodiging ingetrokken"; +"notice_room_third_party_revoked_invite_by_you" = "U heeft de uitnodiging aan %@ om aan het gesprek deel te nemen ingetrokken"; +"notice_room_third_party_registered_invite_by_you" = "U heeft de uitnodiging van %@ aanvaard"; +"notice_room_third_party_invite_by_you_for_dm" = "U heeft %@ uitgenodigd"; +"notice_room_third_party_invite_by_you" = "U heeft %@ uitgenodigd om aan het gesprek deel te nemen"; +"notice_room_invite_you" = "%@ heeft u uitgenodigd"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "U heeft %@ uitgenodigd"; +"notice_room_name_changed_for_dm" = "%@ heeft de gespreksnaam veranderd naar %@."; +"notice_room_third_party_revoked_invite_for_dm" = "%@ heeft %@'s uitnodiging ingetrokken"; +"notice_room_third_party_invite_for_dm" = "%@ heeft %@ uitgenodigd"; +"room_left_for_dm" = "U heeft het gesprek verlaten"; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ heeft toekomstige berichten voor iedereen zichtbaar gemaakt vanaf het moment dat zij deelnemen aan het gesprek."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ heeft toekomstige berichten voor iedereen zichtbaar gemaakt vanaf het moment dat zij zijn uitgenodigd."; +"notice_room_history_visible_to_members_for_dm" = "%@ heeft toekomstige berichten voor alle gespreksleden zichtbaar gemaakt."; +"notice_room_aliases_for_dm" = "De bijnamen zijn: %@"; +"notice_room_join_rule_public_by_you_for_dm" = "U maakte dit publiekelijk."; +"notice_room_join_rule_public_by_you" = "U heeft de kamer publiekelijk gemaakt."; +"notice_room_join_rule_public_for_dm" = "%@ maakte dit publiekelijk."; +"notice_room_join_rule_public" = "%@ heeft de kamer publiekelijk gemaakt."; +"notice_room_created_for_dm" = "%@ is toegetreden."; +"notice_room_power_level_intro_for_dm" = "Het machtsniveau van de gespreksleden is:"; +"notice_room_join_rule_invite_by_you_for_dm" = "U maakte dit gesprek alleen op uitnodiging."; +"notice_room_join_rule_invite_by_you" = "U heeft het toegangsbeleid gewijzigd naar alleen genodigden."; +// New +"notice_room_join_rule_invite" = "%@ heeft het toegangsbeleid gewijzigd naar alleen genodigden."; +"notice_room_join_rule_invite_for_dm" = "%@ heeft dit gesprek alleen op uitnodiging gemaakt."; +"call_more_actions_dialpad" = "Kiestoetsen"; +"call_more_actions_transfer" = "Doorschakelen"; +"call_more_actions_audio_use_device" = "Ingebouwde Luidspreker"; +"call_more_actions_audio_use_headset" = "Audio-koptelefoon gebruiken"; +"call_more_actions_change_audio_device" = "Audio-apparaat wisselen"; +"call_more_actions_unhold" = "Hervatten"; +"call_more_actions_hold" = "Vasthouden"; +"call_holded" = "U heeft de oproep in de wacht"; +"call_remote_holded" = "%@ heeft de oproep in de wacht"; +"notice_declined_video_call_by_you" = "U heeft de oproep afgewezen"; +"notice_declined_video_call" = "%@ heeft de oproep afgewezen"; +"resume_call" = "Hervatten"; +"call_consulting_with_user" = "In de wacht bij %@"; +"call_transfer_to_user" = "Doorverbinden met %@"; +"call_video_with_user" = "Video-oproep met %@"; +"call_voice_with_user" = "Spraakoproep met %@"; +"call_ringing" = "Bellen…"; +"e2e_passphrase_too_short" = "Wachtwoord is te kort (hij moet minimaal %d tekens lang zijn)"; +"microphone_access_not_granted_for_voice_message" = "Spraakberichten vereisen toegang tot de Microfoon maar %@ heeft geen toestemming om het te gebruiken"; +"message_reply_to_sender_sent_a_voice_message" = "heeft een spraakbericht gestuurd."; +"attachment_large_with_resolution" = "Groot %@ (~%@)"; +"attachment_medium_with_resolution" = "Middel %@ (~%@)"; +"attachment_small_with_resolution" = "Klein %@ (~%@)"; +"attachment_size_prompt_message" = "U kunt dit uitzetten in uw instellingen."; +"attachment_size_prompt_title" = "Bevestig de afmeting om te versturen"; +"room_displayname_all_other_participants_left" = "%@ (vertrok)"; +"attachment_unsupported_preview_message" = "Dit bestandstype wordt niet ondersteund."; +"attachment_unsupported_preview_title" = "Kan geen voorbeeld geven"; +"room_displayname_all_other_members_left" = "%@ (Vertrok)"; +"message_reply_to_sender_sent_their_location" = "deelde hun locatie."; diff --git a/Riot/Assets/pl.lproj/Vector.strings b/Riot/Assets/pl.lproj/Vector.strings index 4f027c5db..79e5f4750 100644 --- a/Riot/Assets/pl.lproj/Vector.strings +++ b/Riot/Assets/pl.lproj/Vector.strings @@ -1590,3 +1590,494 @@ "open" = "Otwórz"; "enable" = "Włącz"; "ok" = "OK"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Stwórz konto:"; +"login_server_url_placeholder" = "URL (np. https://matrix.org)"; +"login_identity_server_title" = "URL serwera tożsamości:"; +"login_password_placeholder" = "Hasło"; +"login_optional_field" = "opcjonalne"; +"login_email_placeholder" = "Adres e-mail"; +"login_error_forbidden" = "Nieprawidłowa nazwa użytkownika/hasło"; +"login_error_unknown_token" = "Wprowadzony token dostępu nie został rozpoznany"; +"login_error_bad_json" = "Uszkodzony JSON"; +"login_error_not_json" = "Nie zawiera prawidłowego JSON"; +"login_error_limit_exceeded" = "Wysłano zbyt wiele żądań"; +"login_error_user_in_use" = "Ta nazwa użytkownika jest już używana"; +"login_error_login_email_not_yet" = "Nie kliknięto odnośnika z wiadomości e-mail"; +"login_leave_fallback" = "Anuluj"; +"login_error_resource_limit_exceeded_title" = "Przekroczono limit dostępu do zasobów"; +"login_error_resource_limit_exceeded_message_default" = "Ten serwer przekroczył jeden z limitów dostępu do zasobów."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Ten serwer osiągnął miesięczny limit aktywnych użytkowników."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nSkontaktuj się z administratorem Twojego serwera domowego, aby korzystać dalej z tej usługi."; +"login_error_resource_limit_exceeded_contact_button" = "Skontaktuj się z administratorem"; +// Action +"no" = "Nie"; +"yes" = "Tak"; +"dismiss" = "Zamknij"; +"submit" = "Wyślij"; +"login_home_server_title" = "URL serwera domowego:"; +"login_display_name_placeholder" = "Wyświetlana nazwa (np. Bob Obson)"; +"login_invalid_param" = "Nieprawidłowy parametr"; +"login_tablet_device" = "Tablet"; +"discard" = "Odrzuć"; +"start_chat" = "Rozpocznij rozmowę"; +"start_voice_call" = "Rozpocznij połączenie głosowe"; +"start_video_call" = "Rozpocznij połączenie wideo"; +"mention" = "Wspomnij"; +"capture_media" = "Zrób zdjęcie/film"; +"resend_message" = "Wyślij ponownie wiadomość"; +"select_all" = "Zaznacz wszystko"; +"cancel_upload" = "Anuluj wysyłanie"; +"cancel_download" = "Anuluj pobieranie"; +"ignore" = "Ignoruj"; +"unignore" = "Przestań ignorować"; +// Events formatter +"notice_avatar_changed_too" = "(awatar też został zmieniony)"; +"notice_room_name_removed" = "%@ usunął(-ęła) nazwę pokoju"; +"notice_room_topic_removed" = "%@ usunął(-ęła) temat pokoju"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " przez %@"; +"notice_event_redacted_reason" = " [powód: %@]"; +"notice_profile_change_redacted" = "%@ zaktualizował(-a) swój profil %@"; +"notice_encrypted_message" = "Wiadomość zaszyfrowana"; +"notice_encryption_enabled" = "%@ włączył(a) szyfrowanie end-to-end (algorytm %@)"; +"ssl_only_accept" = "Akceptuj certyfikat TYLKO wtedy gdy administrator opublikował odcisk palca pasujący do tego powyżej."; +"ssl_unexpected_existing_expl" = "Certyfikat zmienił stan z zaufanego na niezaufany. Jest to NIEZWYKLE RZADKIE. Zalecane jest NIE AKCEPTOWANIE nowego certyfikatu."; +"ssl_cert_not_trust" = "Może to oznaczać że ktoś zakłóca twoje połączenie, lub Twój telefon nie ufa certyfikatowi dostarczonemu przez zdalny serwer."; +"ssl_could_not_verify" = "Nie można zweryfikować tożsamości serwera."; +"ssl_fingerprint_hash" = "Fingerprint (%@):"; +"ssl_remain_offline" = "Ignoruj"; +"ssl_logout_account" = "Wyloguj"; +// unrecognized SSL certificate +"ssl_trust" = "Ufaj"; +"incoming_voice_call" = "Przychodzące połączenie głosowe"; +"incoming_video_call" = "Przychodzące połączenie wideo"; +"call_ring" = "Dzwonię…"; +"call_ended" = "Zakończono połączenie"; +"call_connecting" = "Łączenie…"; +// gcm section +"notification_settings_notify_all_other" = "Powiadamiaj o wszystkich innych wiadomośsciach/pokojach"; +"notification_settings_select_room" = "Wybierz pokój"; +"notification_settings_sender_hint" = "@user:domain.com"; +"notification_settings_enable_notifications" = "Włącz powiadomienia"; +// Notification settings screen +"notification_settings_disable_all" = "Wyłącz wszystkie powiadomienia"; +"settings_title_notifications" = "Powiadomienia"; +// room details dialog screen +"login_error_must_start_http" = "URL musi zaczynać się od http[s]://"; +"select_account" = "Wybierz konto"; +"show_details" = "Pokaż szczegóły"; +"end_call" = "Zakończ rozmowę"; +"login_error_title" = "Logowanie nie powiodło się"; +"login_error_registration_is_not_supported" = "Rejestracja nie jest obecnie wspierana"; +"register_error_title" = "Rejestracja nie powiodła się"; +"abort" = "Przerwij"; +"sign_up" = "Zarejestruj się"; +"submit_code" = "Prześlij kod"; +"attach_media" = "Dołącz zawartość multimedialną z Biblioteki"; +"reset_to_default" = "Przywróć ustawienia domyślne"; +"notice_room_created" = "%@ stworzył(-a) i skonfigurował (-a) pokój."; +"notice_audio_attachment" = "załącznik (audio)"; +"notice_video_attachment" = "załącznik (wideo)"; +"notice_invalid_attachment" = "nieprawidłowy załącznik"; +"notice_unsupported_attachment" = "Niewspierany załącznik: %@"; +"notice_room_history_visible_to_members" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju, od momentu ich zaproszenia."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju, od momentu ich dołączenia."; +"notice_crypto_error_unknown_inbound_session_id" = "Sesja nadawcy nie wysłała kluczy do wiadomości dla bieżącej sesji."; +"notice_sticker" = "naklejka"; +"notice_in_reply_to" = "W odpowiedzi do"; +// room display name +"room_displayname_empty_room" = "Pusty pokój"; +"room_displayname_two_members" = "%@ i %@"; +"room_displayname_more_than_two_members" = "%@ i %@ innych"; +// Settings +"settings" = "Ustawienia"; +"notification_settings_room_rule_title" = "Pokój: '%@'"; +// Devices +"device_details_title" = "Informacje o sesji\n"; +"device_details_name" = "Publiczna nazwa\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Ostatnio widziany(-a)\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "Publiczna nazwa sesji jest widoczna dla osób z którymi się komunikujesz"; +"device_details_delete_prompt_title" = "Uwierzytelnienie"; +"device_details_delete_prompt_message" = "To działanie wymaga dodatkowego uwierzytelnienia.\nWprowadź hasło, aby kontynuować."; +// Encryption information +"room_event_encryption_info_title" = "Informacje o szyfrowaniu end-to-end\n\n"; +"room_event_encryption_info_event" = "Informacje o zdarzeniu\n"; +"room_event_encryption_info_event_user_id" = "ID użytkownika\n"; +"room_event_encryption_info_event_identity_key" = "Klucz tożsamości Curve25519\n"; +"room_event_encryption_info_event_algorithm" = "Algorytm\n"; +"room_event_encryption_info_event_decryption_error" = "Błąd deszyfrowania\n"; +"room_event_encryption_info_device" = "\nInformacje o sesji nadawcy\n"; +"room_event_encryption_info_device_unknown" = "nieznana sesja\n"; +"room_event_encryption_info_device_name" = "Publiczna nazwa\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"notification_settings_never_notify" = "Nigdy nie powiadamiaj"; +"notification_settings_always_notify" = "Zawsze powiadamiaj"; +// Settings screen +"settings_title_config" = "Konfiguracja"; +"ban" = "Zbanuj"; +"unban" = "Odbanuj"; +"kick" = "Wyproś"; +"num_members_other" = "%@ użytkowników"; +"num_members_one" = "%@ użytkownik"; +"create_account" = "Stwórz konto"; +"create_room" = "Utwórz pokój"; +// actions +"action_logout" = "Wyloguj"; +"delete" = "Usuń"; +"set_power_level" = "Ustaw poziom uprawnień"; +"share" = "Udostępnij"; +"redact" = "Usuń"; +"resend" = "Wyślij ponownie"; +"copy_button_name" = "Kopiuj"; +"send" = "Wyślij"; +// button names +"notice_conference_call_finished" = "Zakończono konferencję VoIP"; +"notice_conference_call_started" = "Rozpoczęto konferencję VoIP"; +"notice_conference_call_request" = "%@ zaprasza do konferencji VoIP"; +"set_default_power_level" = "Resetuj poziom uprawnień"; +"notice_file_attachment" = "załącznik (plik)"; +"notice_room_history_visible_to_anyone" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla każdego."; +"notice_crypto_unable_to_decrypt" = "** Nie można odszyfrować: %@ **"; +"ssl_cert_new_account_expl" = "Jeśli administrator serwera oświadczył, że jest to oczekiwane, upewnij się, że poniższy odcisk palca odpowiada odciskowi palca dostarczonemu przez niego."; +"notification_settings_by_default" = "Domyślnie…"; +"notification_settings_suppress_from_bots" = "Ogranicz powiadomienia od botów"; +"notification_settings_custom_sound" = "Dźwięk niestandardowy"; +"login_home_server_info" = "Twój serwer domowy przechowuje wszystkie Twoje rozmowy i dane konta"; +"login_user_id_placeholder" = "Identyfikator Matrix (np. @bob:matrix.org lub bob)"; +"search_searching" = "Wyszukiwanie..."; + +// Search +"search_no_results" = "Brak wyników"; + +// Groups +"attachment_e2e_keys_import" = "Importuj..."; +"attachment_multiselection_original" = "Rzeczywisty rozmiar"; +"attachment_multiselection_size_prompt" = "Czy chcesz wysłać obrazy jako:"; +"attachment_cancel_upload" = "Przerwać wgrywanie?"; +"attachment_cancel_download" = "Przerwać pobieranie?"; +"membership_ban" = "Zbanowany(-a)"; +"login_desktop_device" = "Komputer"; +"login_mobile_device" = "Smartphone"; +"login_error_forgot_password_is_not_supported" = "Przywracanie hasła nie jest obecnie obsługiwane"; +"login_prompt_email_token" = "Wprowadź token weryfikacyjny wysłany na e-mail:"; +"room_event_encryption_info_event_session_id" = "ID sesji\n"; +"room_event_encryption_info_event_fingerprint_key" = "Odebrany klucz Ed25519 fingerprint\n"; +"device_details_rename_prompt_title" = "Nazwa sesji"; +"settings_enter_validation_token_for" = "Wprowadź token weryfikacyjny dla %@:"; +"settings_enable_push_notifications" = "Włącz powiadomienia push"; +"settings_enable_inapp_notifications" = "Włącz powiadomienia aplikacyjne"; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju, od momentu ich dołączenia."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju, od momentu ich zaproszenia."; +"notice_room_history_visible_to_members_for_dm" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju."; +"notice_error_unknown_event_type" = "Nieznany typ zdarzenia"; +"notice_error_unexpected_event" = "Niespodziewane zdarzenie"; +"notice_error_unsupported_event" = "Nieobsługiwane zdarzenie"; +"notice_redaction" = "%@ zredagował(-a) zdarzenie (id: %@)"; +"notice_feedback" = "Opis zdarzenia (id: %@): %@"; +"notice_location_attachment" = "załącznik (lokalizacja)"; +"notice_image_attachment" = "załącznik (obraz)"; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ włączył(-a) szyfrowanie end-to-end (nierozpoznany algorytm %2$@)."; +"notice_encryption_enabled_ok" = "%@ włączył(-a) szyfrowanie end-to-end."; +"notice_room_related_groups" = "Społeczności powiązane z tym pokojem: %@"; +"notice_room_aliases_for_dm" = "Aliasy pokoju: %@"; +"notice_room_aliases" = "Aliasy pokoju: %@"; +"notice_room_power_level_event_requirement" = "Minimalny poziom uprawnień związany ze zdarzeniami:"; +"notice_room_power_level_acting_requirement" = "Minimalny poziom uprawnień uczestnika pokoju, aby mógł podjąć działania:"; +"notice_room_power_level_intro_for_dm" = "Poziom uprawnień uczestników pokoju:"; +"notice_room_power_level_intro" = "Poziom uprawnień uczestników pokoju:"; +"notice_room_join_rule_public_by_you_for_dm" = "Ustawiłeś(-aś) widoczność tego pokoju jako 'pokój publiczny'."; +"notice_room_join_rule_public_by_you" = "Ustawiłeś(-aś) widoczność tego pokoju jako 'pokój publiczny'."; +"notice_room_join_rule_public_for_dm" = "%@ ustawił(-a) widoczność tego pokoju jako 'pokój publiczny'."; +"notice_room_join_rule_public" = "%@ ustawił(-a) widoczność tego pokoju jako 'pokój publiczny'."; +"notice_room_join_rule_invite_by_you_for_dm" = "Ustawiłeś(-aś) dostępność tego pokoju na 'Tylko osoby, które zostały zaproszone'."; +"notice_room_join_rule_invite_by_you" = "Ustawiłeś(-aś) dostępność tego pokoju na 'Tylko osoby, które zostały zaproszone'."; +"notice_room_join_rule_invite_for_dm" = "%@ ustawił(-a) dostępność tego pokoju na 'Tylko osoby, które zostały zaproszone'."; +// New +"notice_room_join_rule_invite" = "%@ ustawił(-a) dostępność tego pokoju na 'Tylko osoby, które zostały zaproszone'."; +// Old +"notice_room_join_rule" = "Reguła dołączenia to: %@"; +"notice_room_created_for_dm" = "%@ stworzył(-a) pokój."; +"notice_room_name_removed_for_dm" = "%@ usunął(-ęła) nazwę pokoju"; +"resume_call" = "Wznów"; +"reject_call" = "Odrzuć połączenie"; +"answer_call" = "Odbierz połączenie"; +"invite_user" = "Zaproś użytkownika Matrix"; +"set_admin" = "Nadaj uprawnienia Administratora"; +"set_moderator" = "Nadaj uprawnienia Moderatora"; +"login_use_fallback" = "Użyj strony zastępczej"; +"login_error_do_not_support_login_flows" = "Obecnie nie obsługujemy żadnego lub wszystkich przepływów logowania zdefiniowanych przez ten Serwer Domowy"; +"login_error_no_login_flow" = "Nie udało się pobrać informacji uwierzytelniających z tego serwera domowego"; +"login_email_info" = "Podanie adresu e-mail pozwala innym użytkownikom na znalezienie Ciebie w sieci Matrix oraz pozwala na zresetowanie hasła."; +"login_identity_server_info" = "Matrix zapewnia serwery tożsamości do śledzenia, które e-maile itp. Należą do których identyfikatorów Matrix. Obecnie istnieje tylko https://matrix.org."; +"ssl_expected_existing_expl" = "Certyfikat zmienił się z wcześniej zaufanego na taki, który nie jest zaufany. Serwer mógł odnowić swój certyfikat. Skontaktuj się z administratorem serwera, aby uzyskać oczekiwany odcisk palca."; +"call_transfer_to_user" = "Transfer do %@"; +"call_consulting_with_user" = "Konsultacje z %@"; +"call_video_with_user" = "Połączenie wideo z %@"; +"call_voice_with_user" = "Połączenie głosowe z %@"; +"call_more_actions_dialpad" = "Klawiatura numeryczna"; +"call_more_actions_transfer" = "Transferuj"; +"call_more_actions_audio_use_device" = "Wyjście audio"; +"call_more_actions_audio_use_headset" = "Użyj zestawu głosowego"; +"call_more_actions_change_audio_device" = "Zmień urządzenie dźwiękowe"; +"call_more_actions_unhold" = "Wznów"; +"call_more_actions_hold" = "Wstrzymaj"; +"call_holded" = "Wstrzymałeś połączenie"; +"call_remote_holded" = "%@ wstrzymał(-a) połączenie"; +"call_invite_expired" = "Zaproszenie do rozmowy wygasło"; +"call_ringing" = "Dzwonię…"; +"notification_settings_receive_a_call" = "Powiadom mnie, gdy ktoś do mnie dzwoni"; +"notification_settings_people_join_leave_rooms" = "Powiadamiaj mnie, gdy ktoś dołącza do pokoju lub go opuszcza"; +"notification_settings_invite_to_a_new_room" = "Powiadamiaj mnie, gdy jestem zaproszony do nowego pokoju"; +"notification_settings_just_sent_to_me" = "Powiadamiaj mnie dźwiękiem o wiadomościach wysłanych tylko do mnie"; +"notification_settings_contain_my_display_name" = "Powiadamiaj mnie dźwiękiem o wiadomościach zawierających moją nazwę wyświetlaną"; +"notification_settings_contain_my_user_name" = "Powiadamiaj mnie dźwiękiem o wiadomościach zawierających moją nazwę użytkownika"; +"notification_settings_other_alerts" = "Inne Alarmy"; +"notification_settings_per_sender_notifications" = "Powiadomienia per-nadawca"; +"notification_settings_per_room_notifications" = "Powiadomienia per-pokój"; +"notification_settings_highlight" = "Wyróżnienie"; +"notification_settings_word_to_match" = "słowo do dopasowania"; +"notification_settings_per_word_info" = "Słowa dopasowują wielkość liter bez uwzględniania wielkości liter i mogą zawierać * symbol wieloznaczny. Więc:\nfoo dopasowuje ciąg foo otoczony ogranicznikami słów (np. interpunkcja i białe spacje lub początek / koniec linii).\nfoo* odpowiada każdemu słowu zaczynającemu się foo.\n*foo* pasuje do każdego takiego słowa, które zawiera 3 litery foo."; +"notification_settings_per_word_notifications" = "Powiadomienia według słów"; +"notification_settings_global_info" = "Ustawienia powiadomień są zapisywane na koncie użytkownika i są udostępniane wszystkim klientom, które je obsługują.\n\nReguły powiadomień są stosowane w kolejności; pierwsza pasująca reguła określa wynik wiadomości.\nTak więc: powiadomienia według słów są ważniejsze niż powiadomienia dotyczące pokoju, które są ważniejsze niż powiadomienia według nadawcy.\nW przypadku wielu reguł tego samego typu pierwszeństwo ma pierwsza na liście pasująca reguła."; +"notification_settings_enable_notifications_warning" = "Wszystkie powiadomienia są obecnie wyłączone dla wszystkich urządzeń."; + +// contacts list screen +"invitation_message" = "Chciałbym z Tobą porozmawiać za pomocą sieci Matrix. Odwiedź witrynę http://matrix.org, aby uzyskać więcej informacji."; + +// Login Screen +"login_error_already_logged_in" = "Jesteś już zalogowany(-a)"; +"message_unsaved_changes" = "Istnieją niezapisane zmiany. Opuszczenie spowoduje ich odrzucenie."; +"membership_leave" = "Odszedł(-a)"; +"membership_invite" = "Zaproszony(-a)"; +"login" = "Zaloguj się"; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne tylko dla uczestników pokoju od momentu, gdy dołączyli."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne tylko dla uczestników pokoju od momentu, gdy dołączyli."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne dla wszystkich uczestników pokoju od momentu, gdy zostali zaproszeni."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne dla wszystkich uczestników pokoju od momentu, gdy zostali zaproszeni."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne dla wszystkich uczestników pokoju."; +"notice_room_history_visible_to_members_by_you" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne dla wszystkich uczestników pokoju."; +"notice_room_history_visible_to_anyone_by_you" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne dla każdego."; +"notice_redaction_by_you" = "Zredagowałeś(-aś) zdarzenie (id: %@)"; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Włączyłeś(-aś) szyfrowanie end-to-end (nierozpoznany algorytm %@)."; +"notice_encryption_enabled_ok_by_you" = "Włączyłeś(-aś) szyfrowanie end-to-end."; +"notice_room_created_by_you_for_dm" = "Utworzyłeś(-aś) i skonfigurowałeś(-aś) pokój."; +"notice_room_created_by_you" = "Utworzyłeś(-aś) i skonfigurowałeś(-aś) pokój."; +"notice_profile_change_redacted_by_you" = "Zaktualizowałeś(-aś) swój profil %@"; +"notice_event_redacted_by_you" = " przez Ciebie"; +"notice_room_topic_removed_by_you" = "Usunąłeś(-aś) temat"; +"notice_room_name_removed_by_you_for_dm" = "Usunąłeś(-aś) nazwę pokoju"; +"notice_room_name_removed_by_you" = "Usunąłeś(-aś) nazwę pokoju"; +"notice_conference_call_request_by_you" = "Poprosiłeś(-aś) o konferencję VoIP"; +"notice_declined_video_call_by_you" = "Odrzuciłeś(-aś) połączenie"; +"notice_ended_video_call_by_you" = "Zakończyłeś(-aś) połączenie"; +"notice_answered_video_call_by_you" = "Odebrałeś(-aś) połączenie"; +"notice_placed_video_call_by_you" = "Nawiązałeś(-aś) rozmowę wideo"; +"notice_placed_voice_call_by_you" = "Nawiązałeś(-aś) połączenie głosowe"; +"notice_room_name_changed_by_you_for_dm" = "Zmieniłeś(-aś) nazwę na %@."; +"notice_room_name_changed_by_you" = "Zmieniłeś(-aś) nazwę pokoju na %@."; +"notice_topic_changed_by_you" = "Zmieniłeś(-aś) temat na \"%@\"."; +"notice_display_name_removed_by_you" = "Usunąłeś(-aś) swoją wyświetlaną nazwę"; +"notice_display_name_changed_from_by_you" = "Zmieniłeś(-aś) wyświetlaną nazwę z %@ na %@"; +"notice_display_name_set_by_you" = "Zmieniłeś(-aś) wyświetlaną nazwę na %@"; +"notice_avatar_url_changed_by_you" = "Zmieniłeś(-aś) swój awatar"; +"notice_room_withdraw_by_you" = "Wycofałeś(-aś) zaproszenie do pokoju dla %@"; +"notice_room_ban_by_you" = "Zbanowałeś(-aś) %@"; +"notice_room_unban_by_you" = "Odbanowałeś(-aś) %@"; +"notice_room_kick_by_you" = "Wyprosiłeś(-aś) %@"; +"notice_room_reject_by_you" = "Odrzuciłeś(-aś) zaproszenie"; +"notice_room_leave_by_you" = "Opuściłeś(-aś) pokój"; +"notice_room_join_by_you" = "Dołączyłeś(-aś) do pokoju"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Odrzuciłeś(-aś) zaproszenie %@"; +"notice_room_third_party_revoked_invite_by_you" = "Odrzuciłeś(-aś) zaproszenie do pokoju od %@"; +"notice_room_third_party_registered_invite_by_you" = "Przyjąłeś(-aś) zaproszenie od %@"; +"notice_room_third_party_invite_by_you_for_dm" = "Zaprosiłeś(-aś) %@"; +"notice_room_third_party_invite_by_you" = "Wysłałeś(-aś) zaproszenie do pokoju dla %@"; +"notice_room_invite_you" = "%@ zaprosił(-a) Ciebie"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "Zaprosiłeś(-aś) %@"; +"notice_declined_video_call" = "%@ odrzucił(-a) połączenie"; +"notice_ended_video_call" = "%@ zakończył(-a) połączenie"; +"notice_answered_video_call" = "%@ odebrał(-a) połączenie"; +"notice_placed_video_call" = "%@ nawiązał(-a) połączenie wideo"; +"notice_placed_voice_call" = "%@ nawiązał(-a) połączenie głosowe"; +"notice_room_name_changed_for_dm" = "%@ zmienił(-a) nazwę na %@."; +"notice_room_name_changed" = "%@ zmienił(-a) nazwę pokoju na %@."; +"notice_topic_changed" = "%@ zmienił(-a) temat na \"%@\"."; +"notice_display_name_removed" = "%@ usunął(-ęła) swoją wyświetlaną nazwę"; +"notice_display_name_changed_from" = "%@ zmienił(-a) swoją wyświetlaną nazwę z %@ na %@"; +"notice_display_name_set" = "%@ zmienił(-a) swoją wyświetlaną nazwę na %@"; +"notice_avatar_url_changed" = "%@ zmienił(-a) swój awatar"; +"notice_room_reason" = ". Powód: %@"; +"notice_room_withdraw" = "%@ wycofał(-a) zaproszenie %@"; +"notice_room_ban" = "%@ zbanował(-a) %@"; +"notice_room_unban" = "%@ odbanował(-a) %@"; +"notice_room_kick" = "%@ wyprosiła(-a) %@"; +"notice_room_reject" = "%@ odrzucił(-a) zaproszenie"; +"notice_room_leave" = "%@ opuścił(-a) pokój"; +"notice_room_join" = "%@ dołączył(-a)"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ odrzucił(-a) zaproszenie do pokoju od %@"; +"notice_room_third_party_registered_invite" = "%@ przyjął(-ęła) zaproszenie od %@"; +"notice_room_third_party_revoked_invite" = "%@ odrzucił(-a) zaproszenie do pokoju od %@"; +"notice_room_third_party_invite_for_dm" = "%@ zaprosił(-a) %@"; +"notice_room_third_party_invite" = "%@ wysłał(-a) zaproszenie do pokoju dla %@"; + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /matrix-sdk/src/main/res/values/strings.xml. +*/ + +"notice_room_invite" = "%@ zaprosił(-a) %@"; +"language_picker_default_language" = "Domyślny (%@)"; + +// Language picker +"language_picker_title" = "Wybierz język"; + +// Country picker +"country_picker_title" = "Wybierz kraj"; +"local_contacts_access_discovery_warning" = "Aby znaleźć kontakty, które są użytkownikami sieci Matrix, %@ może wysłać adresy e-mail i numery telefonów z Twojej książki adresowej do wybranego serwera tożsamości Matrix. Jeśli serwer na to pozwala, dane osobowe są szyfrowane przed wysłaniem - zapoznaj się z polityką prywatności Twojego serwera tożsamości, aby uzyskać więcej informacji."; +"local_contacts_access_discovery_warning_title" = "Odkrywanie użytkowników"; +"local_contacts_access_not_granted" = "Wyszukiwanie użytkowników sieci Matrix na podstawie lokalnych kontaktów wymaga dostępu do Twoich kontaktów, ale %@ nie ma uprawnień, które umożliwiłyby ich użycie"; +"microphone_access_not_granted_for_call" = "Połączenia głosowe wymagają dostępu do mikrofonu, ale %@ nie ma pozwolenia na jego używanie"; + +// Permissions +"camera_access_not_granted_for_call" = "Rozmowy wideo wymagają dostępu do kamery, ale %@ nie ma pozwolenia na jej używanie"; +"ssl_homeserver_url" = "URL Serwera Domowego: %@"; +"user_id_placeholder" = "np.: @bob:homeserver"; +"network_error_not_reachable" = "Sprawdź połączenie internetowe"; +"power_level" = "Poziom uprawnień"; +"public" = "Publiczny"; +"private" = "Prywatny"; +"default" = "domyślny"; +"not_supported_yet" = "Jeszcze nie obsługiwane"; +"error_common_message" = "Wystąpił błąd. Spróbuj ponownie później."; +"error" = "Błąd"; +"unsent" = "Niewysłane"; +"offline" = "offline"; + +// Others +"user_id_title" = "ID użytkownika:"; +"e2e_passphrase_create" = "Utwórz hasło"; +"e2e_passphrase_not_match" = "Hasła muszą się zgadzać"; +"e2e_passphrase_empty" = "Hasło nie może być puste"; +"e2e_passphrase_confirm" = "Potwierdź hasło"; +"e2e_export" = "Eksport"; +"e2e_export_prompt" = "Ten proces umożliwia wyeksportowanie do pliku lokalnego kluczy wiadomości odebranych w zaszyfrowanych pokojach. Dzięki temu będziesz mógł w przyszłości zaimportować plik do innego klienta Matrix i odszyfrować te wiadomości.\nWyeksportowany plik pozwoli każdemu, kto może go odczytać, na odszyfrowanie wszelkich zaszyfrowanych wiadomości, które widzisz, więc powinieneś zadbać o jego bezpieczeństwo."; + +// E2E export +"e2e_export_room_keys" = "Eksportuj klucze pokoju"; +"e2e_passphrase_enter" = "Wprowadź hasło"; +"e2e_import" = "Importuj"; +"e2e_import_prompt" = "Ten proces umożliwia zaimportowanie kluczy szyfrowania, które zostały wcześniej wyeksportowane z innego klienta Matrix. Będziesz mógł odszyfrować wszystkie wiadomości, które inny klient mógłby odszyfrować. \nPlik eksportu jest chroniony hasłem. Wprowadź hasło, aby odszyfrować plik."; + +// E2E import +"e2e_import_room_keys" = "Importuj klucze pokoju"; +"format_time_d" = "d"; +"format_time_h" = "h"; +"format_time_m" = "m"; + +// Time +"format_time_s" = "s"; +"contact_local_contacts" = "Lokalne Kontakty"; + +// Contacts +"contact_mx_users" = "Użytkownicy Matrix"; +"attachment_e2e_keys_file_prompt" = "Ten plik zawiera klucze szyfrowania wyeksportowane z klienta Matrix.\nChcesz przejrzeć zawartość pliku czy zaimportować zawarte w nim klucze?"; +"attachment_large" = "Duży (%@)"; +"attachment_medium" = "Średni (%@)"; +"attachment_small" = "Mały (%@)"; +"attachment_original" = "Rzeczywisty rozmiar (%@)"; + +// Attachment +"attachment_size_prompt" = "Czy chcesz wysłać jako:"; +"room_member_power_level_prompt" = "Nie będzie można cofnąć tej zmiany, ponieważ nadajesz użytkownikowi uprawnienia równoważne do Twoich. \nCzy jesteś pewny(-a)?"; + +// Room members +"room_member_ignore_prompt" = "Czy na pewno chcesz ukryć wszystkie wiadomości od tego użytkownika?"; +"message_reply_to_message_to_reply_to_prefix" = "W odpowiedzi na"; +"message_reply_to_sender_sent_a_file" = "wysłał(-a) plik."; +"message_reply_to_sender_sent_a_video" = "wysłał(-a) plik wideo."; +"message_reply_to_sender_sent_an_audio_file" = "wysłał(-a) plik audio."; + +// Reply to message +"message_reply_to_sender_sent_an_image" = "wysłał(-a) obraz."; +"room_no_conference_call_in_encrypted_rooms" = "Połączenia konferencyjne nie są obsługiwane w zaszyfrowanych pokojach"; +"room_no_power_to_create_conference_call" = "Nie masz uprawnień do rozpoczęcia konferencji w tym pokoju"; +"room_left_for_dm" = "Opuściłeś(-aś) pokój"; +"room_left" = "Opuściłeś(-aś) pokój"; +"room_error_timeline_event_not_found" = "Aplikacja próbowała załadować określony punkt na osi czasu tego pokoju, ale nie mogła go znaleźć"; +"room_error_timeline_event_not_found_title" = "Nie udało się załadować pozycji na osi czasu"; +"room_error_cannot_load_timeline" = "Nie udało się załadować osi czasu"; +"room_error_topic_edition_not_authorized" = "Nie masz uprawnień do edytowania tematu tego pokoju"; +"room_error_name_edition_not_authorized" = "Nie masz uprawnień do edytowania nazwy tego pokoju"; +"room_error_join_failed_empty_room" = "Obecnie nie jest możliwe ponowne dołączenie do pustego pokoju."; +"room_error_join_failed_title" = "Nie udało się dołączyć do pokoju"; + +// Room +"room_please_select" = "Wybierz pokój"; +"room_creation_participants_placeholder" = "(np. @bob:homeserver1; @john:homeserver2...)"; +"room_creation_participants_title" = "Uczestnicy:"; +"room_creation_alias_placeholder_with_homeserver" = "(np. #foo%@)"; +"room_creation_alias_placeholder" = "(np. #foo:example.org)"; +"room_creation_alias_title" = "Alias pokoju:"; +"room_creation_name_placeholder" = "(np. grupa obiadowa)"; + +// Room creation +"room_creation_name_title" = "Nazwa pokoju:"; +"account_error_push_not_allowed" = "Powiadomienia nie są dozwolone"; +"account_error_msisdn_wrong_description" = "To nie wygląda na prawidłowy numer telefonu"; +"account_error_msisdn_wrong_title" = "Nieprawidłowy numer telefonu"; +"account_error_email_wrong_description" = "To nie wygląda na prawidłowy adres e-mail"; +"account_error_email_wrong_title" = "Niepoprawny adres e-mail"; +"account_error_matrix_session_is_not_opened" = "Sesja Matrix nie jest otwarta"; +"account_error_picture_change_failed" = "Zmiana obrazu nie powiodła się"; +"account_error_display_name_change_failed" = "Zmiana wyświetlanej nazwy nie powiodła się"; +"account_msisdn_validation_error" = "Nie można zweryfikować numeru telefonu."; +"account_msisdn_validation_message" = "Wysłaliśmy SMS-a z kodem aktywacyjnym. Wpisz otrzymany kod poniżej."; +"account_msisdn_validation_title" = "Oczekiwanie na weryfikację"; +"account_email_validation_error" = "Nie można zweryfikować adresu e-mail. Sprawdź swoją skrzynkę e-mail i kliknij zawarte w niej łącze. Gdy to zrobisz, kliknij kontynuuj"; +"account_email_validation_message" = "Sprawdź swoją skrzynkę e-mail i kliknij zawarte w niej łącze. Gdy to zrobisz, kliknij kontynuuj."; +"account_email_validation_title" = "Oczekiwanie na weryfikację"; +"account_linked_emails" = "Połączone adresy e-mail"; +"account_link_email" = "Połącz adres e-mail"; + +// Account +"account_save_changes" = "Zapisz zmiany"; +"room_event_encryption_verify_ok" = "Zweryfikuj"; +"room_event_encryption_verify_message" = "Aby sprawdzić, czy tej sesji można zaufać, skontaktuj się z jej właścicielem w inny sposób (np. osobiście lub telefonicznie) i zapytaj, czy klucz, który widzą w swoich ustawieniach użytkownika dla tej sesji, odpowiada kluczowi poniżej:\n\nNazwa sesji: %@\nIdentyfikator sesji: %@\nKlucz sesji: %@\n\nJeżeli klucze są identyczne, naciśnij przycisk weryfikacji poniżej. Jeżeli klucze się różnią, to oznacza to, że ktoś inny mógł przechwycić tę sesję — w takim przypadku naciśnij przycisk zablokuj.\n\nW przyszłości proces weryfikacji będzie bardziej wyrafinowany."; +"room_event_encryption_verify_title" = "Zweryfikuj sesję\n\n"; +"room_event_encryption_info_unblock" = "Odblokuj"; +"room_event_encryption_info_block" = "Zablokuj"; +"room_event_encryption_info_unverify" = "Cofnij weryfikację"; +"room_event_encryption_info_verify" = "Zweryfikuj..."; +"room_event_encryption_info_device_blocked" = "Zablokowany"; +"room_event_encryption_info_device_not_verified" = "NIE zweryfikowano"; +"room_event_encryption_info_device_verified" = "Zweryfikowano"; +"room_event_encryption_info_device_fingerprint" = "Ed25519 fingerprint\n"; +"room_event_encryption_info_device_verification" = "Weryfikacja\n"; +"room_event_encryption_info_event_none" = "brak"; +"room_event_encryption_info_event_unencrypted" = "niezaszyfrowane"; +"e2e_passphrase_too_short" = "Hasło jest zbyt krótkie (Hasło musi składać się z co najmniej %d znaków)"; +"microphone_access_not_granted_for_voice_message" = "Wiadomości głosowe wymagają dostępu do mikrofonu ale %@ nie posiada uprawnień do użycia go"; +"message_reply_to_sender_sent_a_voice_message" = "wysłał(-a) wiadomość głosową."; +"attachment_large_with_resolution" = "Duży %@ (~%@)"; +"attachment_medium_with_resolution" = "Średni %@ (~%@)"; +"attachment_small_with_resolution" = "Mały %@ (~%@)"; +"attachment_size_prompt_message" = "Możesz to wyłączyć w ustawieniach."; +"attachment_size_prompt_title" = "Potwierdź rozmiar, który chcesz wysłać"; +"attachment_unsupported_preview_message" = "Ten format pliku nie jest obsługiwany."; +"attachment_unsupported_preview_title" = "Brak podglądu"; +"message_reply_to_sender_sent_their_location" = "udostępnił(-a) swoją lokację."; +"room_displayname_all_other_members_left" = "%@ (Opuścił-a)"; diff --git a/Riot/Assets/pr.lproj/Vector.strings b/Riot/Assets/pr.lproj/Vector.strings index 06ace01b4..edf98a855 100755 --- a/Riot/Assets/pr.lproj/Vector.strings +++ b/Riot/Assets/pr.lproj/Vector.strings @@ -402,9 +402,7 @@ "settings_third_party_notices" = "Third-party اطلاعیه های"; "settings_send_crash_report" = "ارسال اطلاعات توقف و یا داده ها"; "settings_enable_rageshake" = "تکان دادن برای ارسال گزارش"; -"settings_clear_cache" = "پاک کردن کش"; -"settings_change_password" = "تعویض گذرواژه"; "settings_old_password" = "گذرواژه قدیمی"; "settings_new_password" = "گذرواژه جدید"; "settings_confirm_password" = "تایید گذرواژه"; diff --git a/Riot/Assets/pt.lproj/Vector.strings b/Riot/Assets/pt.lproj/Vector.strings index 8b1378917..e3dbb85af 100644 --- a/Riot/Assets/pt.lproj/Vector.strings +++ b/Riot/Assets/pt.lproj/Vector.strings @@ -1 +1,7 @@ + + +// MARK: - MatrixKit + + + diff --git a/Riot/Assets/pt_BR.lproj/Vector.strings b/Riot/Assets/pt_BR.lproj/Vector.strings index ac178a35a..92f52bca6 100644 --- a/Riot/Assets/pt_BR.lproj/Vector.strings +++ b/Riot/Assets/pt_BR.lproj/Vector.strings @@ -229,7 +229,7 @@ "room_event_action_view_decrypted_source" = "Visualizar Fonte Decriptada"; "room_event_action_report" = "Reportar conteúdo"; "room_event_action_report_prompt_reason" = "Razão para reportar este conteúdo"; -"room_event_action_kick_prompt_reason" = "Razão para expulsar esta(e) usuária(o)"; +"room_event_action_kick_prompt_reason" = "Razão para remover esta(e) usuária(o)"; "room_event_action_ban_prompt_reason" = "Razão para banir esta(e) usuária(o)"; "room_event_action_report_prompt_ignore_user" = "Você quer esconder todas as mensagens desta(e) usuária(o)?"; "room_event_action_save" = "Salvar"; @@ -1626,3 +1626,484 @@ "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"; +"location_sharing_open_open_street_maps" = "Abrir em OpenStreetMap"; +"search_filter_placeholder" = "Filtrar"; +"onboarding_use_case_existing_server_button" = "Conectar a servidor"; +"onboarding_use_case_existing_server_message" = "Procurando se juntar a um servidor existente?"; +"onboarding_use_case_skip_button" = "pukar esta pergunta"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Não tem certeza ainda? Você pode %@"; +"onboarding_use_case_community_messaging" = "Comunidades"; +"onboarding_use_case_work_messaging" = "Times"; +"onboarding_use_case_personal_messaging" = "Amigas(os) e família"; +"onboarding_use_case_message" = "Nós vamos ajudá-la(o) a se conectar."; +"onboarding_use_case_title" = "Com quem você vai fazer chat mais?"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Criar conta:"; +"login_server_url_placeholder" = "URL (e.g. https://matrix.org)"; +"login_home_server_title" = "URL de Servidorcasa:"; +"login_home_server_info" = "Seu servidorcasa armazena todas as suas conversas e dados de conta"; +"login_identity_server_title" = "URL de servidor de identidade:"; +"login_identity_server_info" = "Matrix provê servidores de identidade para rastrear quais emails, etc. pertencem a quais IDs Matrix. Somente https://matrix.org existe atualmente."; +"login_user_id_placeholder" = "ID Matrix (e.g. @bob:matrix.org ou bob)"; +"login_password_placeholder" = "Senha"; +"login_optional_field" = "opcional"; +"login_display_name_placeholder" = "Nome de exibição (e.g. Bob Obson)"; +"login_email_info" = "Especificar um endereço de email permite que outras(os) usuárias(os) encontrem você mais facilmente, e vai dar a você uma forma de resettar sua senha no futuro."; +"login_email_placeholder" = "Endereço de email"; +"login_prompt_email_token" = "Por favor entre seu token de validação de email:"; +"login_error_title" = "Login Falhou"; +"login_error_no_login_flow" = "Nós falhamos para recuperar informação de autenticação deste servidorcasa"; +"login_error_do_not_support_login_flows" = "Atualmente nós não suportamos qualquer ou todos os fluxos de login definidos por este servidorcasa"; +"login_error_registration_is_not_supported" = "Registro não é suportado atualmente"; +"login_error_forbidden" = "Nome de usuária(o)/senha inválidos"; +"login_error_unknown_token" = "O token de acesso especificado não foi reconhecido"; +"login_error_bad_json" = "JSON malformado"; +"login_error_not_json" = "Não continha JSON válido"; +"login_error_limit_exceeded" = "Requisições demais têm sido enviadas"; +"login_error_user_in_use" = "Este nome de usuária(o) já é usado"; +"login_desktop_device" = "Desktop"; +// Action +"no" = "Não"; +"yes" = "Sim"; +"abort" = "Abortar"; +"discard" = "Descartar"; +"dismiss" = "Dispensar"; +"sign_up" = "Fazer signup"; +"submit" = "Submeter"; +"submit_code" = "Submeter código"; +"set_default_power_level" = "Resettar Nível de Poder"; +"set_moderator" = "Definir Moderador(a)"; +"set_admin" = "Definir Admin"; +"start_chat" = "Começar Chat"; +"start_voice_call" = "Começar Chamada de Voz"; +"start_video_call" = "Começar Chamada de Vídeo"; +"mention" = "Mencionar"; +"select_account" = "Selecionar uma conta"; +"attach_media" = "Anexar Mídia desde Biblioteca"; +"capture_media" = "Tirar Foto/Vídeo"; +"invite_user" = "Convidar Usuária(o) matrix"; +"reset_to_default" = "Resettar para default"; +"resend_message" = "Reenviar a mensagem"; +"select_all" = "Selecionar Todas"; +"cancel_upload" = "Cancelar Upload"; +"cancel_download" = "Cancelar Download"; +"show_details" = "Mostrar Detalhes"; +"answer_call" = "Atender Chamada"; +"reject_call" = "Rejeitar Chamada"; +"end_call" = "Terminar Chamada"; +"ignore" = "Ignorar"; +"unignore" = "Designorar"; +"login_error_forgot_password_is_not_supported" = "Esqueceu senha não é suportada atualmente"; +"login_error_login_email_not_yet" = "O link de email que ainda não tem sido clicado"; +"login_use_fallback" = "Usar página de fallback"; +"login_leave_fallback" = "Cancelar"; +"login_invalid_param" = "Parâmetro inválido"; +"register_error_title" = "Registro Falhou"; +"login_tablet_device" = "Tablet"; +"login_error_resource_limit_exceeded_title" = "Limite de Recursos Excedido"; +"login_error_resource_limit_exceeded_message_default" = "Este servidorcasa tem excedido um de seus limites de recursos."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Este servidorcasa tem atingido seu limite de Usuárias(os) Mensalmente Ativos."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nPor favor contacte seu/sua administrador(a) de serviço para continuar usando este serviço."; +"login_error_resource_limit_exceeded_contact_button" = "Contactar Administrador(a)"; +// Events formatter +"notice_avatar_changed_too" = "(avatar foi mudado também)"; +"notice_room_name_removed" = "%@ removeu o nome da sala"; +"notice_room_topic_removed" = "%@ removeu o tópico"; +"notice_event_redacted_by" = " por %@"; +"notice_event_redacted_reason" = " [razão: %@]"; +"login_mobile_device" = "Celular"; +"notice_event_redacted" = ""; +"notice_profile_change_redacted" = "%@ atualizou perfil dela(e) %@"; +"notice_room_created" = "%@ criou e configurou a sala."; +"notice_room_join_rule" = "A regra de se juntar é: %@"; +"notice_room_power_level_intro" = "Os níveis de poder de membros da sala são:"; +"notice_room_power_level_acting_requirement" = "Os níveis de poder mínimos que um/a usuária(o) deve ter antes de agir são:"; +"notice_room_power_level_event_requirement" = "Os níveis mínimos de poder relacionados a eventos são:"; +"notice_room_aliases" = "Os aliases da sala são: %@"; +"notice_room_related_groups" = "Os grupos associados a esta sala são: %@"; +"notice_encrypted_message" = "Mensagem encriptada"; +"set_power_level" = "Definir Nível de Poder"; +"power_level" = "Nível de Poder"; +"notice_encryption_enabled" = "%@ ativou a criptografia de ponta a ponta (algorithm %@)"; +"notice_image_attachment" = "anexo de imagem"; +"notice_audio_attachment" = "anexo de áudio"; +"notice_video_attachment" = "anexo de vídeo"; +"notice_location_attachment" = "anexo de localização"; +"notice_file_attachment" = "anexo de arquivo"; +"notice_invalid_attachment" = "anexo inválido"; +"notice_unsupported_attachment" = "Anexo insuportado: %@"; +"notice_feedback" = "Evento de feedback (id: %@): %@"; +"notice_redaction" = "%@ redigiu um evento (id: %@)"; +"notice_error_unsupported_event" = "Evento insuportado"; +"notice_error_unexpected_event" = "Evento não-esperado"; +"notice_error_unknown_event_type" = "Tipo de evento desconhecido"; +"notice_room_history_visible_to_anyone" = "%@ fez histórico da sala futuro visível para qualquer pessoa."; +"notice_room_history_visible_to_members" = "%@ fez histórico da sala futuro visível para todos os membros da sala."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ fez histórico da sala futuro visível para todos os membros da sala, do ponto que foram convidados."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ fez histórico da sala futuro visível para todos os membros da sala, do ponto que se juntaram."; +"notice_crypto_unable_to_decrypt" = "** Incapaz de decriptar: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "A sessão do/da enviador(a) não nos tem enviado as chaves para esta mensagem."; +"notice_sticker" = "sticker"; +"notice_in_reply_to" = "Em resposta a"; +// room display name +"room_displayname_empty_room" = "Sala vazia"; +"room_displayname_two_members" = "%@ e %@"; +"room_displayname_more_than_two_members" = "%@ e %@ outros"; +// Settings +"settings" = "Ajustes"; +"settings_enable_inapp_notifications" = "Habilitar notificações Em-App"; +"settings_enable_push_notifications" = "Habilitar notificações push"; +"settings_enter_validation_token_for" = "Entrar token de validação para %@:"; +"notification_settings_room_rule_title" = "Sala: '%@'"; +// Devices +"device_details_title" = "Informação de sessão\n"; +"device_details_name" = "Nome Público\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Visto por último\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "O nome público de uma sessão é visível para pessoas com quem você se comunica"; +"device_details_delete_prompt_title" = "Autenticação"; +"device_details_delete_prompt_message" = "Esta operação requer autenticação adicional.\nPara continuar, por favor entre sua senha."; +// Encryption information +"room_event_encryption_info_title" = "Informação de encriptação ponta-a-ponta\n\n"; +"room_event_encryption_info_event" = "Informação de evento\n"; +"room_event_encryption_info_event_user_id" = "ID de usuária(o)\n"; +"room_event_encryption_info_event_algorithm" = "Algoritmo\n"; +"room_event_encryption_info_event_session_id" = "ID de sessão\n"; +"room_event_encryption_info_event_unencrypted" = "não-encriptado"; +"room_event_encryption_info_event_none" = "nenhuma"; +"room_event_encryption_info_device" = "\nInformação de sessão de enviador(a)\n"; +"room_event_encryption_info_device_unknown" = "sessão desconhecida\n"; +"room_event_encryption_info_device_name" = "Nome Público\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "Verificação\n"; +"room_event_encryption_info_event_decryption_error" = "Erro de decriptação\n"; +"room_event_encryption_info_device_verified" = "Verificado"; +"room_event_encryption_info_device_not_verified" = "NÃO verificado"; +"room_event_encryption_info_device_blocked" = "Na lista negra"; +"room_event_encryption_info_verify" = "Verificar..."; +"room_event_encryption_info_unverify" = "Desverificar"; +"room_event_encryption_info_block" = "Adicionar à lista negra"; +"room_event_encryption_info_unblock" = "Remover da lista negra"; +"room_event_encryption_verify_title" = "Verificar sessão\n\n"; +"room_event_encryption_verify_message" = "Para verificar que esta sessão pode ser confiada, por favor contacte a/o dona(o) dela usando alguma outro meio (e.g. em pessoa ou uma chamada de telefone) e pergunte-lhe se a chave que ela/ele vê em seus Ajustes de Usuária(o) para esta sessão corresponde com a chave abaixo:\n\n\tNome de sessão: %@\n\tID de sessão: %@\n\tChave de sessão: %@\n\nSe ela corresponde, pressione o botão verificar abaixo. Se não corresponde, então alguma outra pessoa está interceptando esa sessão e você provavelmente quer pressionar o botão adicionar à lista negra em vez disso.\n\nNo futuro este processo de verificação vai ser mais sofisticado."; +"room_event_encryption_verify_ok" = "Verificar"; +// Account +"account_save_changes" = "Salvar mudanças"; +"account_link_email" = "Linkar Email"; +"account_linked_emails" = "Emails linkados"; +"account_email_validation_title" = "Verificação Pendendo"; +"account_email_validation_message" = "Por favor cheque seu email e clique no link que ele contém. Uma vez que isto seja feito, clique em continuar."; +"account_email_validation_error" = "Incapaz de verificar endereço de email. Por favor cheque seu email e clique no link que ele contém. Uma vez que isto seja feito, clique em continuar"; +"account_msisdn_validation_title" = "Verificação Pendendo"; +"account_msisdn_validation_message" = "Nós temos enviado um SMS com um código de ativação. Por favor entre este código abaixo."; +"account_msisdn_validation_error" = "Incapaz de verificar número de telefone."; +"room_event_encryption_info_event_identity_key" = "Chave de identidade Curve25519\n"; +"room_event_encryption_info_event_fingerprint_key" = "Chave de impressão digital Ed25519 clamada\n"; +"room_event_encryption_info_device_fingerprint" = "Impressão digital Ed25519\n"; +"account_error_display_name_change_failed" = "Mudança de nome de exibição falhou"; +"account_error_picture_change_failed" = "Mudança de imagem falhou"; +"account_error_matrix_session_is_not_opened" = "Sessão Matrix não está aberta"; +"account_error_email_wrong_title" = "Endereço de Email Inválido"; +"account_error_email_wrong_description" = "Isto não parece ser um endereço de email válido"; +"account_error_msisdn_wrong_title" = "Número de Telefone Inválido"; +"account_error_msisdn_wrong_description" = "Isto não parece ser um número de telefone válido"; +// Room creation +"room_creation_name_title" = "Nome de sala:"; +"room_creation_name_placeholder" = "(e.g. grupoDeAlmoço)"; +"room_creation_alias_title" = "Alias de sala:"; +"room_creation_participants_title" = "Participantes:"; +// Room +"room_please_select" = "Por favor selecione uma sala"; +"room_error_join_failed_title" = "Falha para se juntar a sala"; +"room_error_join_failed_empty_room" = "Não é atualmente possível se juntar a uma sala vazia."; +"room_error_name_edition_not_authorized" = "Você não está autorizada(o) a editar o nome deste sala"; +"room_error_topic_edition_not_authorized" = "Você não está autorizada(o) a editar o tópico desta sala"; +"room_error_cannot_load_timeline" = "Falha para carregar timeline"; +"room_error_timeline_event_not_found_title" = "Falha para carregar posição de timeline"; +"room_error_timeline_event_not_found" = "O aplicativo estava tentando carregar um ponto específico na timeline desta sala mas foi incapaz de o encontrar"; +"room_left" = "Você saiu da sala"; +"room_no_power_to_create_conference_call" = "Você precisa de permissão para convidar para começar uma conferência nesta sala"; +"room_no_conference_call_in_encrypted_rooms" = "Chamadas de conferência não são suportadas em salas encriptadas"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "enviou uma imagem."; +"message_reply_to_sender_sent_a_video" = "enviou um vídeo."; +"room_creation_alias_placeholder" = "(e.g. #foo:exemplo.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(e.g. #foo%@)"; +"room_creation_participants_placeholder" = "(e.g. @bob:servidorcasa1; @john:servidorcasa2...)"; +"message_reply_to_sender_sent_an_audio_file" = "enviou um arquivo de áudio."; +"message_reply_to_sender_sent_a_file" = "enviou um arquivo."; +"message_reply_to_message_to_reply_to_prefix" = "Em resposta a"; +// Room members +"room_member_ignore_prompt" = "Você tem certeza que você quer esconder todas as mensagens desta(e) usuária(o)?"; +"room_member_power_level_prompt" = "Você não vai ser capaz de desfazer esta mudança como você está promovendo a/o usuária(o) para ter o mesmo nível de poder que você mesma(o).\nVocê tem certeza?"; +// Attachment +"attachment_size_prompt" = "Você quer enviar como:"; +"attachment_original" = "Tamanho de Verdade (%@)"; +"attachment_small" = "Pequeno (~%@)"; +"attachment_medium" = "Médio (~%@)"; +"attachment_large" = "Grande (~%@)"; +"attachment_cancel_download" = "Cancelar o download?"; +"attachment_cancel_upload" = "Cancelar o upload?"; +"attachment_multiselection_size_prompt" = "Você quer enviar imagens como:"; +"attachment_multiselection_original" = "Tamanho de Verdade"; +"attachment_e2e_keys_file_prompt" = "Este arquivo contém chaves de encriptação exportadas de um cliente Matrix.\nVocê quer visualizar o conteúdo do arquivo ou importar as chaves que ele contém?"; +"attachment_e2e_keys_import" = "Importar..."; +// Contacts +"contact_mx_users" = "Usuárias(os) Matrix"; +"contact_local_contacts" = "Contatos Locais"; +// Groups +// Search +"search_no_results" = "Nenhum Resultado"; +"search_searching" = "Pesquisa em Progresso..."; +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "h"; +"format_time_d" = "d"; +// E2E import +"e2e_import_room_keys" = "Importar chaves de sala"; +"e2e_import_prompt" = "Esse processo permite a você importar chaves de encriptação que você tinha previamente exportado de um outro cliente Matrix. Você vai então ser capaz de descriptar quaisquer mensagens que o outro cliente podia decriptar.\nO arquivo de exportação é protegido com uma frasepasse. Você deveria inserir a frasepasse aqui, para decriptar o arquivo."; +"e2e_import" = "Importar"; +"e2e_passphrase_enter" = "Entrar frasepasse"; +// E2E export +"e2e_export_room_keys" = "Exportar chaves de sala"; +"e2e_export_prompt" = "Este processo permite a você exportar as chaves para mensagens que você recebeu em salas encriptadas para um arquivo local. Você vai então ser capaz importar o arquivo para um outro cliente Matrix no futuro, para que o cliente também possa decriptar estas mensagens.\nO arquivo exportado vai permitir a qualquer pessoa que o possa ler decriptar quaisquer mensagens encriptadas que você pode ver, então você deveria ser cuidadosa(o) para mantê-lo protegido."; +"e2e_export" = "Exportar"; +"e2e_passphrase_confirm" = "Confirmar frasepasse"; +"e2e_passphrase_empty" = "Frasepasse não deve estar vazia"; +"e2e_passphrase_not_match" = "Frasepasses devem corresponder"; +"e2e_passphrase_create" = "Criar frasepasse"; +// Others +"user_id_title" = "ID de usuária(o):"; +"offline" = "offline"; +"unsent" = "Não-enviado"; +"error" = "Erro"; +"error_common_message" = "Um erro ocorreu. Por favor tente de novo mais tarde."; +"not_supported_yet" = "Não suportado ainda"; +"default" = "padrão"; +"private" = "Privado"; +"public" = "Público"; +"network_error_not_reachable" = "Por favor cheque sua conectividade de rede"; +"user_id_placeholder" = "ex: @bob:servidorcasa"; +"ssl_homeserver_url" = "URL de servidorcasa: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Chamadas de vídeo requerem acesso à Câmera mas %@ não tem permissão para usá-la"; +"microphone_access_not_granted_for_call" = "Chamadas requerem acesso ao Microfone mas %@ não tem permissão para usá-lo"; +"local_contacts_access_not_granted" = "Descoberta de usuárias(os) desde contatos locais requer acesso a seus contatos mas %@ não tem permissão para usá-los"; +"local_contacts_access_discovery_warning_title" = "Descoberta de usuárias(os)"; +"local_contacts_access_discovery_warning" = "Para descobrir contatos já usando Matrix, %@ pode enviar endereços de email e números de telefone em seu livro de endereços para seu servidor de identidade Matrix escolhido. Onde suportado, dados pessoais são hashados antes do envio - por favor cheque a política de privacidade de seu servidor de identidade para mais detalhes."; +// Country picker +"country_picker_title" = "Escolha um país"; +// Language picker +"language_picker_title" = "Escolha uma língua"; +"language_picker_default_language" = "Default (%@)"; +"notice_room_invite" = "%@ convidou %@"; +"notice_room_third_party_invite" = "%@ enviou um convite para %@ para se juntar à sala"; +"notice_room_third_party_registered_invite" = "%@ aceitou o convite para %@"; +"notice_room_join" = "%@ juntou-se"; +"notice_room_leave" = "%@ saiu"; +"notice_room_reject" = "%@ rejeitou o convite"; +"notice_room_kick" = "%@ removeu %@"; +"notice_room_unban" = "%@ desbaniu %@"; +"notice_room_ban" = "%@ baniu %@"; +"notice_room_withdraw" = "%@ retirou o convite de %@"; +"notice_room_reason" = ". Razão: %@"; +"notice_avatar_url_changed" = "%@ mudou o avatar dela(e)"; +"notice_display_name_set" = "%@ definiu o nome de exibição dela(e) para %@"; +"notice_display_name_changed_from" = "%@ mudou o nome de exibição dela(e) de %@ para %@"; +"notice_display_name_removed" = "%@ removeu o nome de exibição dela(e)"; +"notice_topic_changed" = "%@ mudou o tópico para \"%@\"."; +"notice_room_name_changed" = "%@ mudou o nome da sala para %@."; +"notice_placed_voice_call" = "%@ começou uma chamada de voz"; +"notice_placed_video_call" = "%@ começou uma chamada de vídeo"; +"notice_answered_video_call" = "%@ atendeu a chamada"; +"notice_ended_video_call" = "%@ terminou a chamada"; +"notice_conference_call_request" = "%@ requisitou uma conferência de VoIP"; +"notice_conference_call_started" = "Conferência de VoIP começada"; +"notice_conference_call_finished" = "Conferência de VoIP terminada"; +// button names +"send" = "Enviar"; +"copy_button_name" = "Copiar"; +"resend" = "Reenviar"; +"redact" = "Remover"; +"share" = "Compartilhar"; +"delete" = "Deletar"; +// actions +"action_logout" = "Fazer logout"; +"create_room" = "Criar Sala"; +"login" = "Fazer login"; +"create_account" = "Criar Conta"; +"membership_invite" = "Convidada(o)"; +"membership_leave" = "Saiu"; +"membership_ban" = "Banida(o)"; +"num_members_one" = "%@ usuária(o)"; +"num_members_other" = "%@ usuárias(os)"; +"kick" = "Remover de chat"; +"ban" = "Banir"; +"unban" = "Des-banir"; +"message_unsaved_changes" = "Existem mudanças não-salvas. Sair vai descartá-las."; +// Login Screen +"login_error_already_logged_in" = "Login já feito"; +"login_error_must_start_http" = "URL deve começar com http[s]://"; +// room details dialog screen +// contacts list screen +"invitation_message" = "Eu gostaria de conversar com você com matrix. Por favor, visite o website http://matrix.org para ter mais informação."; +// Settings screen +"settings_title_config" = "Configuração"; +"settings_title_notifications" = "Notificações"; +// Notification settings screen +"notification_settings_disable_all" = "Desabilitar todas as notificações"; +"notification_settings_enable_notifications" = "Habilitar notificações"; +"notification_settings_enable_notifications_warning" = "Todas as notificações estão atualmente desabilitadas para todos os dispositivos."; +"notification_settings_global_info" = "Ajustes de notificação são salvas em sua conta de usuária(o) e são compartilhadas entre todos os clientes que as suportam (incluindo notificações de desktop).\n\nRegras são aplicadas em ordem; a primeira regra que corresponde define o resultado da mensagem.\nEntão: Notificações per-palavra são mais importantes que notificações per-sala que são mais importantes que notificações per-enviador(a).\nPara múltiplas regras do mesmo tipo, a primeira na lista que corresponde leva prioridade."; +"notification_settings_per_word_notifications" = "Notificações per-palavra"; +"notification_settings_per_word_info" = "Palavras correspondem insensivelmente com maiúsculas e minúsculas, e podem incluir um wildcard *. Então:\nfoo corresponde com string foo rodeado por delimitadores de palavras (e.g., pontuação e whitespace ou início/fim de linha).\nfoo* corresponde com qualquer palavra que começa foo.\n*foo* corresponde com qualquer palavra que inclui as 3 letras foo."; +"notification_settings_always_notify" = "Sempre notificar"; +"notification_settings_never_notify" = "Nunca notificar"; +"notification_settings_word_to_match" = "palavra para corresponder"; +"notification_settings_highlight" = "Destacar"; +"notification_settings_custom_sound" = "Som personalizado"; +"notification_settings_per_room_notifications" = "Notificações per-sala"; +"notification_settings_per_sender_notifications" = "Notificações per-enviador(a)"; +"notification_settings_sender_hint" = "@usuarix:dominio.com"; +"notification_settings_select_room" = "Selecionar uma sala"; +"notification_settings_other_alerts" = "Outros Alertas"; +"notification_settings_contain_my_user_name" = "Notificar-me com som sobre mensagens que contêm meu nome de usuária(o)"; +"notification_settings_contain_my_display_name" = "Notificar-me com som sobre mensagens que contêm meu nome de exibição"; +"notification_settings_just_sent_to_me" = "Notificar-me com som sobre mensagens enviadas apenas para mim"; +"notification_settings_invite_to_a_new_room" = "Notificar-me quando eu sou convidada(o) para uma nova sala"; +"notification_settings_people_join_leave_rooms" = "Notificar-me quando pessoas se juntam ou saem de salas"; +"notification_settings_receive_a_call" = "Notificar-me quando eu recebo uma chamada"; +"notification_settings_suppress_from_bots" = "Suprimir notificações de bots"; +"notification_settings_by_default" = "Por default..."; +"notification_settings_notify_all_other" = "Notificar para todas as outras mensagens/salas"; +// gcm section +// call string +"call_waiting" = "Aguardando..."; +"call_connecting" = "Conectando…"; +"call_ended" = "Chamada terminada"; +"call_ring" = "Chamando..."; +"incoming_video_call" = "Chamada de Vídeo Entrante"; +"incoming_voice_call" = "Chamada de Voz Entrante"; +"call_invite_expired" = "Convite de Chamada Expirado"; +// unrecognized SSL certificate +"ssl_trust" = "Confiar"; +"ssl_logout_account" = "Fazer logout"; +"ssl_remain_offline" = "Ignorar"; +"ssl_fingerprint_hash" = "Impressão digital (%@):"; +"ssl_could_not_verify" = "Não foi possível verificar identidade de servidor remoto."; +"ssl_cert_not_trust" = "Isto pode significar que alguém está interceptando maliciosamente seu tráfico, ou que seu telefone não confia no certificado provido pelo servidor remoto."; +"ssl_cert_new_account_expl" = "Se o/a administrador(a) do servidor tem dito que isto é esperado, assegure-se que a impressão digital abaixo corresponde com a impressão digital provida por ele(a)."; +"ssl_unexpected_existing_expl" = "O certificado tem mudado de um que esta confiado por seu telefone. Isto é ALTAMENTE INCOMUM. É recomendado que você NÃO ACEITE este novo certificado."; +"ssl_expected_existing_expl" = "O certificado tem sido mudado de um previamente confiado para um que não é confiado. O servidor pode ter renovado o certificado dele. Contacte o/a administrador(a) do servidor a impressão digital esperada."; +"ssl_only_accept" = "SOMENTE aceite o certificado se o/a administrador(a) do servidor tem publicado uma impressão digital que corresponde com a acima."; +"notice_encryption_enabled_ok" = "%@ ativou encriptação ponta-a-ponta."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ ativou encriptação ponta-a-ponta (algoritmo não-reconhecido %2$@)."; +"device_details_rename_prompt_title" = "Nome da Sessão"; +"account_error_push_not_allowed" = "Notificações não permitidas"; +"notice_room_third_party_revoked_invite" = "%@ revogou o convite para %@ para se juntar à sala"; +// Notice Events with "You" +"notice_room_invite_by_you" = "Você convidou %@"; +"notice_room_invite_you" = "%@ convidou você"; +"notice_room_third_party_invite_by_you" = "Você enviou um convite para %@ para se juntar à sala"; +"notice_room_third_party_registered_invite_by_you" = "Você aceitou o convite para %@"; +"notice_room_third_party_revoked_invite_by_you" = "Você revogou o convite para que %@ se junte à sala"; +"notice_room_join_by_you" = "Você juntou-se"; +"notice_room_leave_by_you" = "Você saiu"; +"notice_room_reject_by_you" = "Você rejeitou o convite"; +"notice_room_kick_by_you" = "Você removeu %@"; +"notice_room_unban_by_you" = "Você desbaniu %@"; +"notice_room_ban_by_you" = "Você baniu %@"; +"notice_room_withdraw_by_you" = "Você retirou o convite de %@"; +"notice_avatar_url_changed_by_you" = "Você mudou seu avatar"; +"notice_display_name_set_by_you" = "Você definiu seu nome de exibição para %@"; +"notice_display_name_changed_from_by_you" = "Você mudou seu nome de exibição de %@ para %@"; +"notice_display_name_removed_by_you" = "Você removeu seu nome de exibição"; +"notice_topic_changed_by_you" = "Você mudou o tópico para \"%@\"."; +"notice_room_name_changed_by_you" = "Você mudou o nome da sala para %@."; +"notice_placed_voice_call_by_you" = "Você começou uma chamada de voz"; +"notice_placed_video_call_by_you" = "Você começou uma chamada de vídeo"; +"notice_answered_video_call_by_you" = "Você atendeu a chamada"; +"notice_ended_video_call_by_you" = "Você terminou a chamada"; +"notice_conference_call_request_by_you" = "Você requisitou uma conferência de VoIP"; +"notice_room_name_removed_by_you" = "Você removeu o nome da sala"; +"notice_room_topic_removed_by_you" = "Você removeu o tópico"; +"notice_event_redacted_by_you" = " por você"; +"notice_profile_change_redacted_by_you" = "Você atualizou seu perfil %@"; +"notice_room_created_by_you" = "Você criou e configurou a sala."; +"notice_encryption_enabled_ok_by_you" = "Você ativou encriptação ponta-a-ponta."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Você ativou a encriptação ponta-a-ponta (algoritmo irreconhecido %@)."; +"notice_redaction_by_you" = "Você redigiu um evento (id: %@)"; +"notice_room_history_visible_to_anyone_by_you" = "Você fez histórico da sala futuro visível para qualquer pessoa."; +"notice_room_history_visible_to_members_by_you" = "Você fez histórico da sala futuro visível para todos os membros da sala."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Você fez histórico de sala futuro visível para todos os membros da sala, do ponto que são convidados."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Você fez histórico da sala futuro visível para todos os membros da sala, do momento que se juntaram."; +"notice_room_name_removed_for_dm" = "%@ removeu o nome"; +"notice_room_created_for_dm" = "%@ juntou-se."; +// New +"notice_room_join_rule_invite" = "%@ fez a sala somente convite."; +"notice_room_join_rule_invite_for_dm" = "%@ fez isto somente convite."; +"notice_room_join_rule_invite_by_you" = "Você fez a sala somente convite."; +"notice_room_join_rule_invite_by_you_for_dm" = "Você fez isto somente convite."; +"notice_room_join_rule_public" = "%@ fez a sala pública."; +"notice_room_join_rule_public_for_dm" = "%@ fez isto público."; +"notice_room_join_rule_public_by_you" = "Você fez a sala pública."; +"notice_room_join_rule_public_by_you_for_dm" = "Você fez isto público."; +"notice_room_power_level_intro_for_dm" = "Os níveis de poder de membros são:"; +"notice_room_aliases_for_dm" = "Os aliases são: %@"; +"notice_room_history_visible_to_members_for_dm" = "%@ fez mensagens futuras visíveis para todos os membros da sala."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ fez mensagens futuras visíveis para todas as pessoas, do ponto que são convidadas."; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ fez mensagens futuras visíveis para todas as pessoas, do ponto que se juntaram."; +"room_left_for_dm" = "Você saiu"; +"notice_room_third_party_invite_for_dm" = "%@ convidou %@"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ revogou o convite de %@"; +"notice_room_name_changed_for_dm" = "%@ mudou o nome para %@."; +"notice_room_third_party_invite_by_you_for_dm" = "Você convidou %@"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Você revogou o convite de %@"; +"notice_room_name_changed_by_you_for_dm" = "Você mudou o nome para %@."; +"notice_room_name_removed_by_you_for_dm" = "Você removeu o nome"; +"notice_room_created_by_you_for_dm" = "Você juntou-se."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Você fez mensagens futuras visíveis para todos os membros da sala."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Você fez mensagens futuras visíveis para todas as pessoas, do ponto que são convidadas."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Você fez mensagens futuras visíveis para todas as pessoas, do ponto que se juntaram."; +"call_more_actions_dialpad" = "Pad de disco"; +"call_more_actions_unhold" = "Retomar"; +"call_more_actions_hold" = "Pôr em espera"; +"call_holded" = "Você pôs a chamada em espera"; +"call_remote_holded" = "%@ pôs a chamada em espera"; +"notice_declined_video_call_by_you" = "Você declinou a chamada"; +"notice_declined_video_call" = "%@ declinou a chamada"; +"resume_call" = "Retomar"; +"call_more_actions_transfer" = "Transferir"; +"call_more_actions_audio_use_device" = "Falante de Dispositivo"; +"call_more_actions_audio_use_headset" = "Usar Áudio de Auscultador"; +"call_more_actions_change_audio_device" = "Mudar Dispositivo de Áudio"; +"call_video_with_user" = "Chamada de vídeo com %@"; +"call_voice_with_user" = "Chamada de voz com %@"; +"call_ringing" = "Tocando…"; +"call_transfer_to_user" = "Transferir para %@"; +"call_consulting_with_user" = "Consultando com %@"; +"e2e_passphrase_too_short" = "Frasepasse curta demais (Ela deve ser a um mínimo %d caracteres em comprimento)"; +"microphone_access_not_granted_for_voice_message" = "Mensagens de voz requerem acesso ao Microfone mas %@ não tem permissão para usá-lo"; +"message_reply_to_sender_sent_a_voice_message" = "enviou uma mensagem de voz."; +"attachment_large_with_resolution" = "Grande %@ (~%@)"; +"attachment_medium_with_resolution" = "Médio %@ (~%@)"; +"attachment_small_with_resolution" = "Pequeno %@ (~%@)"; +"attachment_size_prompt_message" = "Você pode desligar isto em ajustes."; +"attachment_size_prompt_title" = "Confirmar tamanho para enviar"; +"room_displayname_all_other_participants_left" = "%@ (Saiu)"; +"room_displayname_all_other_members_left" = "%@ (Saiu)"; +"attachment_unsupported_preview_message" = "Este tipo de arquivo não é suportado."; +"attachment_unsupported_preview_title" = "Incapaz de previsualizar"; +"message_reply_to_sender_sent_their_location" = "tem compartilhado a localização dela(e)."; +"home_syncing" = "Sincando"; +"room_participants_leave_success" = "Saiu de sala"; +"room_participants_leave_processing" = "Saindo"; diff --git a/Riot/Assets/ru.lproj/Vector.strings b/Riot/Assets/ru.lproj/Vector.strings index 46ee4ba1d..5897a73b7 100644 --- a/Riot/Assets/ru.lproj/Vector.strings +++ b/Riot/Assets/ru.lproj/Vector.strings @@ -1513,3 +1513,469 @@ "contacts_address_book_permission_denied_alert_title" = "Контакты отключены"; "space_home_show_all_rooms" = "Показать все комнаты"; "room_event_action_forward" = "Переслать"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Регистрация:"; +"login_server_url_placeholder" = "URL (например https://matrix.org)"; +"login_home_server_title" = "URL домашнего сервера:"; +"login_home_server_info" = "Ваш домашний сервер хранит все ваши разговоры и данные о аккаунте"; +"login_identity_server_title" = "Cервер идентификации URL:"; +"login_identity_server_info" = "Серверы идентификации Matrix обеспечивают определение соответствия между email и Matrix ID. В настоящее время существует только https://matrix.org."; +"login_user_id_placeholder" = "Matrix ID (например, @bob:matrix.org или bob)"; +"login_password_placeholder" = "Пароль"; +"login_optional_field" = "не обязательно"; +"login_display_name_placeholder" = "Отображаемое имя (например, Иван Петров)"; +"login_email_info" = "Укажите адрес электронной почты, чтобы другие пользователи могли легко находить вас в Matrix. Кроме того, вы сможете при необходимости восстановить свой пароль."; +"login_email_placeholder" = "Адрес электронной почты"; +"login_prompt_email_token" = "Введите токен подтверждения адреса электронной почты:"; +"login_error_title" = "Не удалось войти"; +"login_error_no_login_flow" = "Не удалось получить информацию для аутентификации с этого домашнего сервера"; +"login_error_registration_is_not_supported" = "Регистрация в настоящее время не поддерживается"; +"login_error_forbidden" = "Неверное имя пользователя или пароль"; +"login_error_unknown_token" = "Указанный токен доступа не распознан"; +"login_error_bad_json" = "Поврежденный JSON"; +"login_error_not_json" = "Не содержит допустимый JSON"; +"login_error_limit_exceeded" = "Отправлено слишком много запросов"; +"login_error_user_in_use" = "Это имя пользователя уже используется"; +"login_error_login_email_not_yet" = "Вы не перешли по высланной в email ссылке"; +"login_leave_fallback" = "Отмена"; +"login_invalid_param" = "Недопустимый параметр"; +"register_error_title" = "Регистрация не удалась"; +// Action +"no" = "Нет"; +"yes" = "Да"; +"abort" = "Отменить"; +"discard" = "Отказаться"; +"dismiss" = "Отклонить"; +"sign_up" = "Зарегистрироваться"; +"submit" = "Отправить"; +"submit_code" = "Отправить код"; +"set_default_power_level" = "Сбросить уровень доступа"; +"set_moderator" = "Сделать модератором"; +"set_admin" = "Сделать администратором"; +"start_chat" = "Начать чат"; +"start_voice_call" = "Начать голосовой вызов"; +"start_video_call" = "Начать видеовызов"; +"mention" = "Упоминание"; +"select_account" = "Выберите аккаунт"; +"attach_media" = "Прикрепить файл из библиотеки"; +"capture_media" = "Сделать фото/видео"; +"invite_user" = "Пригласить пользователя matrix"; +"reset_to_default" = "Восстановить по умолчанию"; +"resend_message" = "Отправить сообщение снова"; +"select_all" = "Выбрать все"; +"cancel_upload" = "Отменить отправку"; +"cancel_download" = "Отменить загрузку"; +"show_details" = "Показать детали"; +"answer_call" = "Ответить на вызов"; +"reject_call" = "Отклонить вызов"; +"end_call" = "Завершить вызов"; +"ignore" = "Игнорировать"; +"unignore" = "Перестать игнорировать"; +// Events formatter +"notice_avatar_changed_too" = "(аватар также изменился)"; +"notice_room_name_removed" = "%@ удалил(а) название комнаты"; +"notice_room_topic_removed" = "%@ удалил(а) тему"; +"notice_event_redacted_reason" = " [причина: %@]"; +"notice_profile_change_redacted" = "%@ обновил(а) свой профиль %@"; +"notice_room_created" = "%@ создал(а) и настроил(а) комнату."; +"notice_room_power_level_intro" = "Уровень доступа членов комнаты:"; +"notice_room_power_level_acting_requirement" = "Минимальные уровни доступа пользователя для совершения действия:"; +"notice_room_power_level_event_requirement" = "Минимальные уровни доступа, связанные с событиями:"; +"notice_encrypted_message" = "Зашифрованное сообщение"; +"notice_encryption_enabled" = "%@ включил(а) сквозное шифрование (алгоритм %@)"; +"notice_image_attachment" = "прикрепленное изображение"; +"notice_audio_attachment" = "прикрепленное аудио"; +"notice_video_attachment" = "прикрепленное видео"; +"notice_location_attachment" = "прикрепленное местоположение"; +"notice_file_attachment" = "прикрепленный файл"; +"notice_invalid_attachment" = "недопустимое вложение"; +"notice_unsupported_attachment" = "Неподдерживаемое вложение: %@"; +"notice_redaction" = "%@ отредактировал(а) событие (id: %@)"; +"notice_error_unsupported_event" = "Неподдерживаемое событие"; +"notice_error_unexpected_event" = "Непредвиденное событие"; +"notice_error_unknown_event_type" = "Неизвестный тип события"; +"notice_room_history_visible_to_anyone" = "%@ сделал(а) будущую историю комнату видимой всем."; +"notice_room_history_visible_to_members" = "%@ сделал(а) будущую историю комнаты видимой всем членам комнаты."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ сделал(а) будущую историю комнаты видимой всем членам комнаты с момента их приглашения."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ сделал(а) будущую историю комнаты видимой всем членам комнаты с момента их входа."; +"notice_crypto_unable_to_decrypt" = "** Не удалось расшифровать: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "Сессия отправителя не отправила вам ключи для этого сообщения."; +// room display name +"room_displayname_empty_room" = "Пустая комната"; +"room_displayname_two_members" = "%@ и %@"; +"room_displayname_more_than_two_members" = "%@ и %u другие"; +// Settings +"settings" = "Настройки"; +"settings_enable_inapp_notifications" = "Включить уведомления в приложении"; +"settings_enable_push_notifications" = "Включить push-уведомления"; +"settings_enter_validation_token_for" = "Введите токен подтверждения для %@:"; +"notification_settings_room_rule_title" = "Комната: '%@'"; +// Devices +"device_details_title" = "Информация о сессии\n"; +"device_details_name" = "Публичное имя\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Последняя активность\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "Публичные имена сессий видны людям, с которыми вы общаетесь"; +"device_details_delete_prompt_title" = "Аутентификация"; +"room_event_encryption_info_event" = "Информация о событии\n"; +"room_event_encryption_info_event_user_id" = "ID пользователя\n"; +"room_event_encryption_info_event_algorithm" = "Алгоритм\n"; +"room_event_encryption_info_event_session_id" = "ID сессии\n"; +"room_event_encryption_info_event_decryption_error" = "Ошибка расшифровки\n"; +"room_event_encryption_info_event_unencrypted" = "незашифровано"; +"room_event_encryption_info_device" = "\nИнформация о сессии отправителя\n"; +"room_event_encryption_info_device_unknown" = "неизвестная сессия\n"; +"room_event_encryption_info_device_name" = "Публичное имя\n"; +"room_creation_participants_title" = "Участники:"; +// Room +"room_please_select" = "Пожалуйста, выберите комнату"; +"room_error_join_failed_title" = "Не удалось войти в комнату"; +"room_left" = "Вы покинули комнату"; +// Room members +"room_member_ignore_prompt" = "Вы уверены, что хотите скрыть все сообщения этого пользователя?"; +"room_member_power_level_prompt" = "Вы не сможете отменить это действие, поскольку пользователь получит такой же уровень доступа, как и у вас. \nВы уверены?"; +"power_level" = "Уровень доступа"; +// Country picker +"country_picker_title" = "Выберите страну"; +// Language picker +"language_picker_title" = "Выберите язык"; +"language_picker_default_language" = "По умолчанию (%@)"; +"notice_room_join" = "%@ вошел(ла)"; +"notice_room_leave" = "%@ вышел(ла)"; +"notice_room_reject" = "%@ отклонил(а) приглашение"; +"notice_room_kick" = "%@ выкинул(а) %@"; +"notice_room_unban" = "%@ разблокировал(а) %@"; +"notice_room_ban" = "%@ заблокировал(а) %@"; +"notice_room_withdraw" = "%@ отозвал(а) приглашение %@"; +"notice_room_reason" = ". Причина: %@"; +"notice_avatar_url_changed" = "%@ изменил(а) свой аватар"; +"notice_display_name_set" = "%@ сделал(а) своим отображаемым именем %@"; +"notice_display_name_changed_from" = "%@ изменил(а) свое отображаемое имя с %@ на %@"; +"notice_display_name_removed" = "%@ удалил(а) свое отображаемое имя"; +"notice_topic_changed" = "%@ изменил(а) тему на \"%@\"."; +"notice_room_name_changed" = "%@ изменил(а) название комнаты на %@."; +"notice_placed_voice_call" = "%@ совершил(а) голосовой вызов"; +"notice_placed_video_call" = "%@ совершил(а) видео вызов"; +"notice_answered_video_call" = "%@ ответил(а) на вызов"; +"notice_ended_video_call" = "%@ завершил(а) вызов"; +"notice_conference_call_request" = "%@ запросил(а) голосовую конференцию"; +"notice_conference_call_started" = "голосовая конференция началась"; +"notice_conference_call_finished" = "голосовая конференция завершилась"; +// button names +"ok" = "OK"; +"send" = "Отправить"; +"copy_button_name" = "Скопировать"; +"resend" = "Переотправить"; +"redact" = "Удалить"; +"share" = "Поделиться"; +"set_power_level" = "Установить уровень мощности"; +"delete" = "Удалить"; +// actions +"action_logout" = "Выйти"; +"create_room" = "Создать комнату"; +"login" = "Войти"; +"create_account" = "Создать аккаунт"; +"membership_invite" = "Приглашен"; +"membership_leave" = "Покинул"; +"membership_ban" = "Заблокирован"; +"num_members_one" = "%@ пользователь"; +"num_members_other" = "%@ пользователей"; +"kick" = "Выкинуть"; +"ban" = "Заблокировать"; +"unban" = "Разблокировать"; +// Room creation +"room_creation_name_title" = "Название комнаты:"; +"login_use_fallback" = "Использовать резервную страницу"; +"login_error_do_not_support_login_flows" = "В настоящее время мы не поддерживаем потоки авторизации, определенных данным домашним сервером"; +"login_error_forgot_password_is_not_supported" = "\"Забытый пароль\" в настоящее время не поддерживается"; +"notice_event_redacted" = "<отредактировано%@>"; +"notice_event_redacted_by" = " от %@"; +"notice_room_join_rule" = "Правило присоединения: %@"; +"device_details_delete_prompt_message" = "Для этой операции требуется дополнительная аутентификация.\nЧтобы продолжить, введите свой пароль."; +// Encryption information +"room_event_encryption_info_title" = "Сведения о сквозном шифровании\n\n"; +"room_event_encryption_info_event_identity_key" = "Ключ идентификации Curve25519\n"; +"room_event_encryption_info_event_fingerprint_key" = "Требуемый ключ цифрового отпечатка Ed25519\n"; +"room_event_encryption_info_event_none" = "никого нет"; +"room_event_encryption_info_device_id" = "Идентификатор устройства\n"; +"room_event_encryption_info_device_verification" = "Верификация\n"; +"room_event_encryption_info_device_fingerprint" = "Отпечаток Ed25519\n"; +"room_event_encryption_info_device_verified" = "Подтверждено"; +"room_event_encryption_info_device_not_verified" = "НЕ подтверждено"; +"room_event_encryption_info_device_blocked" = "В черном списке"; +"room_event_encryption_info_verify" = "Проверка..."; +"room_event_encryption_info_unverify" = "Отменить верификацию"; +"room_event_encryption_info_block" = "Черный список"; +"room_event_encryption_info_unblock" = "Удалить из черного списка"; +"room_event_encryption_verify_title" = "Проверить сессию\n\n"; +"room_event_encryption_verify_message" = "Для верификации сессии, пожалуйста, свяжитесь с владельцем используя другие методы коммуникации (например, лично или по телефону) и попросите его подтвердить, что он видит такой же ключ как написанный ниже:\n\n\tИмя сессии: %@\n\tИдентификатор сессии: %@\n\tКлюч сессии: %@\n\nЕсли совпадают, то нажмите кнопку верификации ниже. Если нет, значит кто-то перехватил эту сессию и вы, скорее всего, захотите внести его в черный список.\n\nВ будущем процесс верификации будет усложнен."; +"room_event_encryption_verify_ok" = "Подтвердить"; +// Account +"account_save_changes" = "Сохранить изменения"; +"account_linked_emails" = "Связанные адреса электронной почты"; +"account_link_email" = "Связанный адрес электронной почты"; +"account_email_validation_title" = "Ожидание проверки"; +"account_email_validation_message" = "Проверьте свою электронную почту и нажмите на содержащуюся ссылку. После этого нажмите кнопку Продолжить."; +"account_email_validation_error" = "Не удалось проверить адрес электронной почты. Проверьте свою электронную почту и нажмите на содержащуюся ссылку. Когда это будет сделано, нажмите Продолжить"; +"account_msisdn_validation_title" = "Ожидание проверки"; +"account_msisdn_validation_message" = "Мы отправили SMS с кодом активации. Введите этот код в поле ниже."; +"account_msisdn_validation_error" = "Не удалось проверить номер телефона."; +"account_error_display_name_change_failed" = "Не удалось изменить отображаемое имя"; +"account_error_picture_change_failed" = "Не удалось изменить аватар"; +"account_error_matrix_session_is_not_opened" = "Сессия Matrix не открыта"; +"account_error_email_wrong_title" = "Неверный адрес электронной почты"; +"account_error_email_wrong_description" = "Похоже это недействительный адрес электронной почты"; +"account_error_msisdn_wrong_title" = "Некорректный номер телефона"; +"account_error_msisdn_wrong_description" = "Это недействительный номер телефона"; +"room_creation_name_placeholder" = "(напр. lunchGroup)"; +"room_creation_alias_title" = "Псевдоним комнаты:"; +"room_creation_alias_placeholder" = "(напр. #foo:primer.ru)"; +"room_creation_alias_placeholder_with_homeserver" = "(напр. #foo%@)"; +"room_creation_participants_placeholder" = "(напр. @boris:homeserver1; @ivan:homeserver2...)"; +"room_error_join_failed_empty_room" = "В настоящее время невозможно присоединиться в пустую комнату."; +"room_error_name_edition_not_authorized" = "У вас нет прав на редактирование названия этой комнаты"; +"room_error_topic_edition_not_authorized" = "У вас нет прав редактировать тему этой комнаты"; +"room_error_cannot_load_timeline" = "Не удалось загрузить хронологию"; +"room_error_timeline_event_not_found_title" = "Не удалось загрузить метку из хронологии"; +"room_error_timeline_event_not_found" = "Приложение пыталось загрузить конкретную позицию хронологии этой комнаты, но не смогло ее найти"; +"room_no_power_to_create_conference_call" = "Вы должны иметь право выдачи приглашений, чтобы начать конференцию в этой комнате"; +"room_no_conference_call_in_encrypted_rooms" = "Групповые вызовы не поддерживаются в зашифрованных комнатах"; +// Attachment +"attachment_size_prompt" = "Вы хотите отправить как:"; +"attachment_original" = "Фактический размер (%@)"; +"attachment_small" = "Маленький (%@)"; +"attachment_medium" = "Средний (%@)"; +"attachment_large" = "Большой (%@)"; +"attachment_cancel_download" = "Отменить загрузку?"; +"attachment_cancel_upload" = "Отменить отправку?"; +"attachment_multiselection_size_prompt" = "Вы хотите отправить изображения как:"; +"attachment_multiselection_original" = "Фактический размер"; +"attachment_e2e_keys_file_prompt" = "Этот файл содержит ключи шифрования, экспортированные из клиента Matrix.\nВы хотите просмотреть содержимое файла или импортировать содержащиеся в нем ключи?"; +"attachment_e2e_keys_import" = "Импорт..."; +// Contacts +"contact_mx_users" = "Пользователи Matrix"; +"contact_local_contacts" = "Локальные контакты"; +// Search +"search_no_results" = "Нет результатов"; +// Time +"format_time_s" = "с"; +"format_time_m" = "м"; +"format_time_h" = "ч"; +"format_time_d" = "д"; +// E2E import +"e2e_import_room_keys" = "Импорт ключей комнаты"; +"e2e_import_prompt" = "Этот процесс позволит вам импортировать ключи шифрования, которые вы экспортировали ранее из клиента Matrix. Это позволит вам расшифровать историю чата.\nФайл защищен парольной фразой. Введите ее для расшифровки файла."; +"e2e_import" = "Импорт"; +"e2e_passphrase_enter" = "Введите парольную фразу"; +// E2E export +"e2e_export_room_keys" = "Экспорт ключей комнаты"; +"notice_feedback" = "Обратная связь (id: %@): %@"; +"e2e_export_prompt" = "Этот процесс позволяет вам экспортировать ключи для сообщений, которые вы получили в комнатах с шифрованием, в локальный файл. Вы сможете импортировать эти ключи в другой клиент Matrix чтобы расшифровать эти сообщения.\nЭкспортированный файл позволит любому пользователю расшифровать и зашифровать сообщения, которые вы видите, поэтому вы должны быть крайне осторожны и держать файл в надежном месте."; +"e2e_export" = "Экспорт"; +"e2e_passphrase_confirm" = "Подтвердить парольную фразу"; +"e2e_passphrase_empty" = "Парольная фраза не может быть пустой"; +"e2e_passphrase_not_match" = "Парольные фразы должны совпадать"; +// Others +"user_id_title" = "Идентификатор пользователя:"; +"offline" = "не в сети"; +"unsent" = "Не отправлено"; +"error" = "Ошибка"; +"not_supported_yet" = "Пока не поддерживается"; +"default" = "по умолчанию"; +"network_error_not_reachable" = "Проверьте подключение к сети"; +"user_id_placeholder" = "напр.: @boris:homeserver"; +"ssl_homeserver_url" = "URL-адрес домашнего сервера: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Для видеозвонков требуется доступ к камере, но %@ не имеет разрешения на ее использование"; +"microphone_access_not_granted_for_call" = "Для звонков требуется доступ к микрофону, но %@ не имеет разрешения на его использование"; +"local_contacts_access_not_granted" = "Поиск пользователей из локальных контактов требует доступа к вашим контактам, но %@ не имеет разрешения на их использование"; +"local_contacts_access_discovery_warning_title" = "Обнаружение пользователей"; +"local_contacts_access_discovery_warning" = "Чтобы обнаружить контакты, уже использующие Matrix, %@ может отправлять адреса электронной почты и номера телефонов в вашей адресной книге на выбранный вами сервер идентификации Matrix. Там, где это поддерживается, личные данные перед отправкой хэшируются - пожалуйста, ознакомьтесь с политикой конфиденциальности вашего сервера идентификации для более подробной информации."; +"notice_room_invite" = "%@ пригласил(а) %@"; +"notice_room_third_party_invite" = "%@ отправил(а) приглашение для %@ войти в комнату"; +"notice_room_third_party_registered_invite" = "%@ принял(а) приглашение от %@"; +"notice_room_aliases" = "Псевдонимы комнаты: %@"; +"private" = "Приватный"; +"public" = "Публичный"; +"message_unsaved_changes" = "Имеются несохраненные изменения. Они будут потеряны."; +// Login Screen +"login_error_already_logged_in" = "Уже вошли"; +"login_error_must_start_http" = "URL-адрес должен начинаться с http[s]://"; +// room details dialog screen +// contacts list screen +"invitation_message" = "Я бы хотел поговорить с вами в Matrix. Пожалуйста, посетите веб-сайт https://matrix.org для получения дополнительной информации."; +// Settings screen +"settings_title_config" = "Конфигурация"; +"settings_title_notifications" = "Уведомления"; +// Notification settings screen +"notification_settings_disable_all" = "Отключить все уведомления"; +"notification_settings_enable_notifications" = "Включить уведомления"; +"notification_settings_enable_notifications_warning" = "Все уведомления отключены для всех устройств."; +"notification_settings_global_info" = "Настройки уведомлений сохраняются в учетной записи и распространяются на все клиенты, которые их поддерживают (включая настольный компьютер).\n\nПравила применяются по порядку; будет использовано первое подходящее.\nТаким образом: уведомления для сообщений приоритетней уведомлений для комнат, которые, в свою очередь, приоритетней уведомлений для отправителей.\nДля нескольких правил одинакового типа будет использован первый по счету."; +"notification_settings_always_notify" = "Всегда уведомлять"; +"notification_settings_never_notify" = "Никогда не уведомлять"; +"notification_settings_word_to_match" = "соответствие слов"; +"notification_settings_custom_sound" = "Пользовательский звук"; +"notification_settings_sender_hint" = "@user:domain.com"; +"notification_settings_select_room" = "Выберите комнату"; +"notification_settings_other_alerts" = "Другие предупреждения"; +"notification_settings_contain_my_user_name" = "Уведомлять звуком о сообщениях, содержащих мое имя пользователя"; +"notification_settings_contain_my_display_name" = "Уведомлять звуком о сообщениях, содержащих мое отображаемое имя"; +"notification_settings_just_sent_to_me" = "Уведомлять звуком о сообщениях, отправленных только мне"; +"notification_settings_invite_to_a_new_room" = "Уведомлять меня о приглашении в новую комнату"; +"notification_settings_people_join_leave_rooms" = "Уведомлять, когда пользователи заходят или выходят из комнат"; +"notification_settings_receive_a_call" = "Уведомлять о получении звонка"; +"notification_settings_suppress_from_bots" = "Подавлять уведомления от ботов"; +"notification_settings_by_default" = "По умолчанию..."; +"notification_settings_notify_all_other" = "Уведомлять о всех других сообщениях/комнатах"; +// gcm section +// call string +"call_waiting" = "Ожидание..."; +"call_connecting" = "Соединение…"; +"call_ended" = "Вызов завершен"; +"call_ring" = "Вызов..."; +"incoming_video_call" = "Входящий видеовызов"; +"incoming_voice_call" = "Входящий голосовой вызов"; +"call_invite_expired" = "Срок действия приглашения на звонок истек"; +// unrecognized SSL certificate +"ssl_trust" = "Доверять"; +"ssl_logout_account" = "Выход"; +"ssl_remain_offline" = "Игнорировать"; +"ssl_could_not_verify" = "Не удалось проверить подлинность удаленного сервера."; +"ssl_cert_not_trust" = "Это может означать, что кто-то злонамеренно перехватывает ваш трафик или что ваш телефон не доверяет сертификату, предоставленному удаленным сервером."; +"ssl_unexpected_existing_expl" = "Сертификат изменился у пользователя, который был доверенным для вашего устройства. Это ОЧЕНЬ НЕОБЫЧНО. Рекомендуется НЕ ПРИНИМАТЬ новый сертификат."; +"ssl_only_accept" = "Примите сертификат ТОЛЬКО в том случае, если администратор сервера опубликовал отпечаток, соответствующий приведенному выше."; +"ssl_fingerprint_hash" = "Отпечаток (%@):"; +"notification_settings_per_word_notifications" = "Уведомления по одному слову"; +"notification_settings_per_word_info" = "Слова нечувствительны к регистру и могут содержать * спецсимвол. Так:\nFoo соответствует строке foo, окруженной разделителями слов (например, пунктуацией и пробелом или началом/концом строки).\nFoo * соответствует любому такому слову, которое начинается с foo.\n* Foo * соответствует любому такому слову, которое включает в себя 3 буквы foo."; +"notification_settings_highlight" = "Подсветка"; +"notification_settings_per_room_notifications" = "Уведомления для каждой комнаты"; +"notification_settings_per_sender_notifications" = "Уведомления для отдельного собеседника"; +"ssl_cert_new_account_expl" = "Если администратор сервера сказал, что это ожидается, убедитесь, что отпечаток ниже соответствует предоставленному им отпечатку."; +"ssl_expected_existing_expl" = "Сертификат изменился с ранее доверенного на один, которому не доверяют. Возможно, сервер обновил свой сертификат. Обратитесь к администратору сервера за ожидаемым отпечатком."; +"search_searching" = "Выполняется поиск..."; +"login_mobile_device" = "Мобильное устройство"; +"login_tablet_device" = "Планшет"; +"login_desktop_device" = "Компьютер"; +"notice_room_related_groups" = "Группы, связанные с этой комнатой: %@"; +// Groups +"notice_sticker" = "стикер"; +"notice_in_reply_to" = "В ответ на"; +"error_common_message" = "Произошла ошибка. Пожалуйста, повторите попытку позже."; +// Reply to message +"message_reply_to_sender_sent_an_image" = "отправил(а) изображение."; +"message_reply_to_sender_sent_a_video" = "отправил(а) видео."; +"message_reply_to_sender_sent_an_audio_file" = "отправил(а) аудиофайл."; +"message_reply_to_sender_sent_a_file" = "отправил(а) файл."; +"message_reply_to_message_to_reply_to_prefix" = "В ответ на"; +"login_error_resource_limit_exceeded_title" = "Превышен лимит ресурса"; +"login_error_resource_limit_exceeded_contact_button" = "Связаться с администратором"; +"login_error_resource_limit_exceeded_message_default" = "Этот сервер превысил один из лимитов ресурсов."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Этот сервер достиг ежемесячного лимита активных пользователей."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nПожалуйста свяжитесь с вашим администратором что бы продолжить пользоваться этим сервисом."; +"e2e_passphrase_create" = "Создать парольную фразу"; +"account_error_push_not_allowed" = "Уведомления не разрешены"; +"notice_room_third_party_revoked_invite" = "%@ отозвал приглашение для %@ на вступление в комнату"; +"device_details_rename_prompt_title" = "Имя Сессии"; +"notice_encryption_enabled_ok" = "%@ включил сквозное шифрование."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ включил сквозное шифрование (нераспознанный алгоритм %2$@)."; +// Notice Events with "You" +"notice_room_invite_by_you" = "Вы пригласили %@"; +"notice_room_invite_you" = "%@ пригласил Вас"; +"notice_room_third_party_invite_by_you" = "Вы отправили приглашение %@ вступить в комнату"; +"notice_room_third_party_registered_invite_by_you" = "Вы приняли приглашение для @%"; +"notice_room_third_party_revoked_invite_by_you" = "Вы отозвали приглашение для %@ вступить в комнату"; +"notice_room_join_by_you" = "Вы вошли"; +"notice_room_leave_by_you" = "Вы вышли"; +"notice_room_reject_by_you" = "Вы отклонили приглашение"; +"notice_room_kick_by_you" = "Вы исключили %@"; +"notice_room_unban_by_you" = "Вы разбанили %@"; +"notice_room_ban_by_you" = "Вы забанили %@"; +"notice_avatar_url_changed_by_you" = "Вы сменили свой аватар"; +"notice_display_name_set_by_you" = "Вы установили своё отображаемое имя как %@"; +"notice_display_name_changed_from_by_you" = "Вы сменили своё отображаемое имя с %@ на %@"; +"notice_display_name_removed_by_you" = "Вы удалили своё отображаемое имя"; +"notice_topic_changed_by_you" = "Вы сменили тему на \"%@\"."; +"notice_room_name_changed_by_you" = "Вы сменили имя комнаты на %@."; +"notice_room_withdraw_by_you" = "Вы отозвали приглашение %@"; +"notice_placed_voice_call_by_you" = "Вы начали звонок"; +"notice_placed_video_call_by_you" = "Вы начали видеозвонок"; +"notice_answered_video_call_by_you" = "Вы ответили на звонок"; +"notice_ended_video_call_by_you" = "Вы закончили звонок"; +"notice_conference_call_request_by_you" = "Вы запросили VoIP конференцию"; +"notice_room_name_removed_by_you" = "Вы удалили название комнаты"; +"notice_room_topic_removed_by_you" = "Вы удалили эту тему"; +"notice_event_redacted_by_you" = " вами"; +"notice_profile_change_redacted_by_you" = "Вы обновили свой профиль %@"; +"notice_room_created_by_you" = "Вы создали и настроили комнату."; +"notice_encryption_enabled_ok_by_you" = "Вы активировали сквозное шифрование."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Вы активировали сквозное шифрование (неопознанный алгоритм %@)."; +"notice_redaction_by_you" = "Вы отредактировали событие (id: %@)"; +"notice_room_history_visible_to_anyone_by_you" = "Вы сделали будущую историю комнаты видимой для всех."; +"notice_room_history_visible_to_members_by_you" = "Вы сделали будущую историю комнаты видимой для всех членов комнаты."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Вы сделали будущую историю комнаты видимой для всех членов комнаты, с того момента, как они приглашены."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Вы сделали будущую историю комнаты видимой для всех членов комнаты, с того момента, как они присоединились."; +// New +"notice_room_join_rule_invite" = "%@ сделал(а) комнату доступной только по приглашению."; +"notice_room_join_rule_invite_by_you" = "Вы сделали комнату только по приглашению."; +"notice_room_join_rule_public" = "%@ сделал(а) комнату публичной."; +"notice_room_join_rule_public_by_you" = "Вы сделали комнату публичной."; +"notice_room_name_removed_for_dm" = "%@ удалил(а) название"; +"notice_room_created_for_dm" = "%@ вошёл(ла)."; +"notice_room_join_rule_invite_for_dm" = "%@ сделал(а) доступ только по приглашению."; +"notice_room_join_rule_invite_by_you_for_dm" = "Вы сделали доступ только по приглашению."; +"notice_room_join_rule_public_for_dm" = "%@ сделал(а) комнату публичной."; +"notice_room_join_rule_public_by_you_for_dm" = "Вы сделали комнату публичной."; +"notice_room_power_level_intro_for_dm" = "Уровень доступа членов комнаты:"; +"notice_room_aliases_for_dm" = "Псевдонимы: %@"; +"notice_room_history_visible_to_members_for_dm" = "%@ сделал(а) будущую историю сообщений видимой всем членам комнаты."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ сделал(а) будущие сообщения видимыми для всех с момента их приглашения."; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ сделал(а) будущие сообщения видимыми для всех с момента их присоединения."; +"room_left_for_dm" = "Вы вышли"; +"notice_room_third_party_invite_for_dm" = "%@ пригласил(а) %@"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ отозвал(а) приглашение %@"; +"notice_room_name_changed_for_dm" = "%@ изменил(а) название на %@."; +"notice_room_third_party_invite_by_you_for_dm" = "Вы пригласили %@"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Вы отозвали приглашение %@"; +"notice_room_name_changed_by_you_for_dm" = "Вы сменили название на %@."; +"notice_room_name_removed_by_you_for_dm" = "Вы удалили название"; +"notice_room_created_by_you_for_dm" = "Вы вошли."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Вы сделали будущие сообщения видимыми для всех участников комнаты."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Вы сделали будущие сообщения видимыми для всех с момента их приглашения."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Вы сделали будущие сообщения видимыми для всех с момента их присоединения."; +"call_more_actions_dialpad" = "Панель набора номера"; +"call_more_actions_transfer" = "Перевод"; +"call_more_actions_audio_use_device" = "Динамик устройства"; +"call_more_actions_audio_use_headset" = "Использовать звук гарнитуры"; +"call_more_actions_change_audio_device" = "Сменить аудиоустройство"; +"call_more_actions_unhold" = "Возобновить"; +"call_more_actions_hold" = "Удерживать"; +"call_holded" = "Вы поставили вызов на удержание"; +"call_remote_holded" = "%@ поставил(а) вызов на удержание"; +"notice_declined_video_call_by_you" = "Вы отменили вызов"; +"notice_declined_video_call" = "%@ отменил(а) этот вызов"; +"resume_call" = "Возобновить"; +"call_transfer_to_user" = "Передача с %@"; +"call_consulting_with_user" = "Консультация с %@"; +"call_video_with_user" = "Видеовызов с %@"; +"call_voice_with_user" = "Голосовой вызов с %@"; +"call_ringing" = "Звонок…"; +"microphone_access_not_granted_for_voice_message" = "Голосовые сообщения требуют доступа к микрофону, но у %@ нет разрешения на его использование"; +"e2e_passphrase_too_short" = "Слишком короткая парольная фраза (Длина парольной фразы должна быть не менее %d символов)"; +"message_reply_to_sender_sent_a_voice_message" = "отправил(а) голосовое сообщение."; +"attachment_large_with_resolution" = "Большой %@ (~%@)"; +"attachment_medium_with_resolution" = "Средний %@ (~%@)"; +"attachment_small_with_resolution" = "Маленький %@ (~%@)"; +"attachment_size_prompt_message" = "Это можно отключить в настройках."; +"attachment_size_prompt_title" = "Подтвердите размер для отправки"; +"room_displayname_all_other_members_left" = "%@ (Вышел)"; +"attachment_unsupported_preview_message" = "Этот тип файла не поддерживается."; +"attachment_unsupported_preview_title" = "Не удалось показать предварительный просмотр"; +"message_reply_to_sender_sent_their_location" = "поделились своим местоположением."; diff --git a/Riot/Assets/si.lproj/Vector.strings b/Riot/Assets/si.lproj/Vector.strings index 59e0d02cf..df21609dc 100644 --- a/Riot/Assets/si.lproj/Vector.strings +++ b/Riot/Assets/si.lproj/Vector.strings @@ -14,3 +14,28 @@ "title_rooms" = "කාමර"; "title_people" = "මිනිසුන්"; "title_favourites" = "ප්‍රියතමයින්"; + + +// MARK: - MatrixKit + + + + +"invite" = "ආරාධනා"; +"settings_title_notifications" = "දැනුම්දීම්"; +"notification_settings_sender_hint" = "@පරිශීලක:වසම.ලංකා"; +"login_password_placeholder" = "මුරපදය"; +"login_leave_fallback" = "අවලංගු කරන්න"; +"login_email_placeholder" = "වි-තැපැල් ලිපිනය"; +"login_identity_server_title" = "අනන්‍යතා සේවාදායකයේ ඒ.ස.නි.:"; +"login_home_server_info" = "ඔබගේ මූලික සේවාදායකය ඔබගේ සියලු සංවාද සහ ගිණුමේ දත්ත ගබඩා කරයි"; +"login_home_server_title" = "මූලික සේවාදායකයේ ඒ.ස.නි.:"; +"login_server_url_placeholder" = "ඒ.ස.නි.(URL) (උදා. https://matrix.org)"; + +// Login Screen +"login_create_account" = "ගිණුම සාදන්න:"; +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "මැට්‍රික්ස්"; diff --git a/Riot/Assets/sk.lproj/Vector.strings b/Riot/Assets/sk.lproj/Vector.strings index 227ca56c1..0d9b39df7 100644 --- a/Riot/Assets/sk.lproj/Vector.strings +++ b/Riot/Assets/sk.lproj/Vector.strings @@ -775,7 +775,7 @@ "key_verification_scan_confirmation_scanning_title" = "Už je to takmer hotové! Čaká sa na potvrdenie…"; "key_verification_verify_qr_code_scan_other_code_success_message" = "QR kód bol úspešne overený."; "key_verification_verify_qr_code_other_scan_my_code_title" = "Naskenoval druhý používateľ QR kód úspešne?"; -"key_verification_verify_qr_code_start_emoji_action" = "Overte pomocou emoji"; +"key_verification_verify_qr_code_start_emoji_action" = "Overte pomocou emotikonov"; "key_verification_verify_qr_code_scan_code_other_device_action" = "Skenovať pomocou tohto zariadenia"; "key_verification_verify_qr_code_scan_code_action" = "Naskenujte ich kód"; "key_verification_verify_qr_code_emoji_information" = "Overenie porovnaním jedinečnej kombinácie emotikonov."; @@ -1116,7 +1116,7 @@ // MARK: Verify -"key_verification_verify_sas_title_emoji" = "Porovnať emoji"; +"key_verification_verify_sas_title_emoji" = "Porovnať emotikony"; "device_verification_self_verify_start_verify_action" = "Spustiť overovanie"; // Recover from passphrase @@ -1416,7 +1416,7 @@ "device_verification_cancelled_by_me" = "Overovanie bolo zrušené. Dôvod: %@"; "device_verification_cancelled" = "Druhá strana zrušila overenie."; "device_verification_security_advice_number" = "Porovnajte čísla a uistite sa, že sú v rovnakom poradí."; -"device_verification_security_advice_emoji" = "Porovnajte jedinečné emoji a uistite sa, že sú zobrazené v rovnakom poradí."; +"device_verification_security_advice_emoji" = "Porovnajte jedinečné emotikony a uistite sa, že sú zobrazené v rovnakom poradí."; "key_verification_this_session_title" = "Overiť túto reláciu"; "key_verification_new_session_title" = "Overte svoju novú reláciu"; @@ -1611,7 +1611,7 @@ "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_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 emotikonov"; "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_show_url_previews_description" = "Náhľady sa zobrazia len v nezašifrovaných miestnostiach."; @@ -1757,3 +1757,566 @@ "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"; +"you" = "Vy"; +"location_sharing_open_open_street_maps" = "Otvoriť v OpenStreetMap"; +"search_filter_placeholder" = "Filter"; +"onboarding_use_case_existing_server_button" = "Pripojiť sa k serveru"; +"onboarding_use_case_existing_server_message" = "Chcete sa pripojiť k existujúcemu serveru?"; +"onboarding_use_case_skip_button" = "preskočiť túto otázku"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Ešte si nie ste istí? Môžete %@"; +"onboarding_use_case_community_messaging" = "Komunity"; +"onboarding_use_case_work_messaging" = "Tímy"; +"onboarding_use_case_personal_messaging" = "Priatelia a rodina"; +"onboarding_use_case_message" = "Pomôžeme vám nadviazať kontakty."; +"onboarding_use_case_title" = "S kým budete komunikovať najčastejšie?"; +"room_message_editing" = "Úprava"; + +// Accessibility +"accessibility_checkbox_label" = "zaškrtávacie políčko"; + + +// MARK: - MatrixKit + + + + +"login_error_login_email_not_yet" = "Zatiaľ ste neklikli na odkaz zaslaný emailom"; +"login_error_user_in_use" = "Toto používateľské meno sa už používa"; +"login_error_limit_exceeded" = "Bol prekročený maximálny počet požiadaviek"; +"room_left_for_dm" = "Odišli ste"; + +// Room creation +"room_creation_name_title" = "Názov miestnosti:"; +"account_msisdn_validation_title" = "Čaká sa na overenie"; +"account_email_validation_title" = "Čaká sa na overenie"; + +// Account +"account_save_changes" = "Uložiť zmeny"; +"room_event_encryption_verify_title" = "Overiť reláciu\n\n"; +"room_event_encryption_info_device_not_verified" = "Neoverené"; +"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_unknown" = "neznáma relácia\n"; +"room_event_encryption_info_event_decryption_error" = "Chyba dešifrovania\n"; +"room_event_encryption_info_event_session_id" = "ID relácie\n"; +"room_event_encryption_info_event_user_id" = "ID používateľa:\n"; +"room_event_encryption_info_event" = "Informácie o udalosti\n"; +"device_details_rename_prompt_title" = "Názov relácie"; +"device_details_last_seen" = "Naposledy videné\n"; +"device_details_name" = "Verejný názov\n"; + +// Devices +"device_details_title" = "Informácie o relácii\n"; +"room_displayname_all_other_members_left" = "%@ (Odišiel)"; + +// room display name +"room_displayname_empty_room" = "Prázdna miestnosť"; +"notice_invalid_attachment" = "neplatná príloha"; +"notice_file_attachment" = "súborová attachment"; +"notice_video_attachment" = "video príloha"; +"notice_audio_attachment" = "zvuková príloha"; +"notice_image_attachment" = "obrázková príloha"; +"notice_encrypted_message" = "Šifrovaná správa"; +"notice_room_created_for_dm" = "%@ sa pripojil/a."; +"end_call" = "Ukončiť hovor"; +"reject_call" = "Odmietnuť hovor"; +"show_details" = "Zobraziť podrobnosti"; +"cancel_download" = "Zrušiť sťahovanie"; +"cancel_upload" = "Zrušiť nahrávanie"; +"select_all" = "Vybrať všetko"; +"start_chat" = "Začať konverzáciu"; +"sign_up" = "Zaregistrovať sa"; +"login_error_resource_limit_exceeded_contact_button" = "Kontaktovať správcu"; +"register_error_title" = "Registrácia zlyhala"; +"login_invalid_param" = "Neplatný parameter"; +"login_error_bad_json" = "Chybné údaje vo formáte JSON"; +"login_error_forbidden" = "Neplatné používateľské meno/heslo"; + +// Room Screen + +// general errors + +// Home Screen + +// Last seen time + +// call events + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /console/src/main/res/values/strings.xml. +*/ + + +// titles + +// button names +"login_error_title" = "Prihlásenie zlyhalo"; +"login_prompt_email_token" = "Zadajte svoj e-mailový overovací token:"; +"login_email_info" = "Zadanie e-mailovej adresy umožní ostatným používateľom ľahšie vás nájsť v službe Matrix a umožní vám v budúcnosti obnoviť heslo."; +"login_display_name_placeholder" = "Zobrazované meno (napr. Fero Novák)"; +"login_user_id_placeholder" = "Matrix ID (napr. @fero:matrix.org alebo fero)"; +"login_identity_server_info" = "Matrix poskytuje servery totožnosti na sledovanie, ktoré e-maily atď. patria k jednotlivým Matrix ID. V súčasnosti existuje iba stránka https://matrix.org."; +"login_home_server_info" = "Váš domovský server ukladá všetky vaše konverzácie a údaje o účte"; +"ssl_fingerprint_hash" = "Odtlačok (%s):"; +"call_more_actions_dialpad" = "Číselník"; +"call_ended" = "Hovor ukončený"; + +// gcm section +"notification_settings_custom_sound" = "Vlastný zvuk"; +"notification_settings_always_notify" = "Vždy oznamovať"; +"notification_settings_never_notify" = "Nikdy neoznamovať"; + +// members list Screen + +// accounts list Screen + +// image size selection + +// invitation members list Screen + +// room creation dialog Screen + +// room info dialog Screen + +// room details dialog screen +"num_members_other" = "%@ používatelia"; +"num_members_one" = "%@ používateľ"; +"create_account" = "Vytvoriť účet"; +"create_room" = "Vytvoriť miestnosť"; +"notice_room_leave_by_you" = "Odišli ste"; +"notice_room_join_by_you" = "Vstúpili ste"; +"notice_room_leave" = "%@ odišiel/a"; +"notice_room_join" = "%@ sa pripojil/a"; +"language_picker_default_language" = "Predvolené (%@)"; +"user_id_placeholder" = "napr.: @fero:domovskyserver"; +"power_level" = "Úroveň právomoci"; + +// Others +"user_id_title" = "ID používateľa:"; +"e2e_passphrase_create" = "Vytvoriť prístupovú frázu"; +"e2e_passphrase_confirm" = "Potvrďte prístupovú frázu"; +"e2e_passphrase_enter" = "Zadajte prístupovú frázu"; + +// Search +"search_no_results" = "Žiadne výsledky"; +"contact_local_contacts" = "Lokálne kontakty"; + +// Contacts +"contact_mx_users" = "Používatelia Matrix"; +"attachment_multiselection_original" = "Aktuálna veľkosť"; +"login_optional_field" = "voliteľné"; +"ssl_remain_offline" = "Ignorovať"; +"ssl_logout_account" = "Odhlásiť sa"; +"call_ringing" = "Vyzváňanie…"; + +// Settings keys + +// call string +"call_connecting" = "Pripájanie…"; +"notification_settings_sender_hint" = "@pouzivatel:domena.sk"; + +// Settings screen +"settings_title_config" = "Nastavenie"; +"unban" = "Zrušiť zákaz"; +"ban" = "Zakázať"; +"kick" = "Odstrániť z konverzácie"; +"membership_ban" = "Vylúčený"; +"membership_invite" = "Pozvaní"; +"login" = "Prihlásiť sa"; + +// actions +"action_logout" = "Odhlásiť sa"; +"delete" = "Vymazať"; +"share" = "Zdieľať"; +"redact" = "Odstrániť"; +"resend" = "Odoslať znovu"; +"copy_button_name" = "Kopírovať"; +"send" = "Odoslať"; +"private" = "Súkromné"; +"public" = "Verejné"; +"default" = "predvolené"; +"error" = "Chyba"; +"unsent" = "Neodoslané"; +"offline" = "nedostupný"; +"e2e_export" = "Exportovať"; +"e2e_import" = "Importovať"; +"format_time_d" = "d"; +"format_time_h" = "h"; +"format_time_m" = "m"; + +// Time +"format_time_s" = "s"; + +// Groups +"attachment_e2e_keys_import" = "Importovať..."; +"room_creation_participants_title" = "Účastníci:"; +"room_event_encryption_verify_ok" = "Overiť"; +"room_event_encryption_info_unverify" = "Zrušiť overenie"; +"room_event_encryption_info_verify" = "Overiť..."; +"room_event_encryption_info_device_blocked" = "Na čiernej listine"; +"room_event_encryption_info_device_verified" = "Overené"; +"room_event_encryption_info_device_verification" = "Overenie\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_event_none" = "žiadne"; +"room_event_encryption_info_event_unencrypted" = "nezašifrované"; +"room_event_encryption_info_event_algorithm" = "Algoritmus\n"; +"device_details_delete_prompt_title" = "Overenie"; +"device_details_identifier" = "ID\n"; + +// Settings +"settings" = "Nastavenia"; +"notice_sticker" = "nálepka"; +"unignore" = "Prestať ignorovať"; +"ignore" = "Ignorovať"; +"mention" = "Zmieniť sa"; +"submit" = "Odoslať"; +"abort" = "Prerušiť"; +"yes" = "Áno"; + +// Action +"no" = "Nie"; +"login_desktop_device" = "Desktop"; +"login_tablet_device" = "Tablet"; +"login_mobile_device" = "Mobil"; +"login_leave_fallback" = "Zrušiť"; +"login_home_server_title" = "URL domovského servera:"; +"login_email_placeholder" = "Emailová adresa"; +"login_password_placeholder" = "Heslo"; +"login_identity_server_title" = "URL adresa servera totožností:"; +"login_server_url_placeholder" = "URL (napr. https://matrix.org)"; + +// Login Screen +"login_create_account" = "Vytvoriť účet:"; +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "Matrix"; +"notification_settings_select_room" = "Vybrať miestnosť"; +"notification_settings_enable_notifications_warning" = "Všetky oznámenia sú v súčasnosti vypnuté pre všetky zariadenia."; +"notification_settings_enable_notifications" = "Povoliť oznámenia"; + +// Notification settings screen +"notification_settings_disable_all" = "Zakázať všetky oznámenia"; +"settings_title_notifications" = "Oznámenia"; +"notification_settings_room_rule_title" = "Miestnosť: '%@'"; +"login_error_must_start_http" = "URL adresa musí začínať http[s]://"; +"notice_unsupported_attachment" = "Nepodporovaná príloha: %@"; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ zapol end-to-end šifrovanie (nerozpoznaný algoritmus %2$@)."; +"notice_encryption_enabled_ok" = "%@ zapol end-to-end šifrovanie."; +"notice_room_related_groups" = "Skupiny pridružené k tejto miestnosti sú: %@"; +"notice_room_aliases_for_dm" = "Aliasy sú: %@"; +"notice_room_aliases" = "Aliasy miestnosti sú: %@"; +"notice_room_power_level_acting_requirement" = "Minimálne úrovne oprávnenia, ktoré musí mať používateľ pred konaním, sú:"; +"notice_room_power_level_intro" = "Úrovne oprávnenia členov miestnosti sú:"; +"notice_room_power_level_intro_for_dm" = "Úrovne oprávnenia členov sú:"; +"notice_room_join_rule_public_by_you_for_dm" = "Zverejnili ste ju."; +"notice_room_join_rule_public_by_you" = "Túto miestnosť ste zverejnili."; +"notification_settings_global_info" = "Nastavenia oznámení sa ukladajú do vášho používateľského účtu a sú zdieľané medzi všetkými klientmi, ktorí ich podporujú (vrátane oznámení na ploche).\n\nPravidlá sa uplatňujú v poradí; prvé pravidlo, ktoré sa zhoduje, určuje výsledok správy.\nTakže: Oznámenia o správe sú dôležitejšie ako oznámenia na miestnosť, ktoré sú dôležitejšie ako oznámenia na odosielateľa.\nPri viacerých pravidlách rovnakého druhu má prednosť to, ktoré sa zhoduje ako prvé v zozname."; + +// contacts list screen +"invitation_message" = "Rád by som sa s vami porozprával pomocou Matrixu. Viac informácií nájdete na webovej stránke http://matrix.org."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Zviditeľnili ste budúcu históriu miestnosti pre všetkých členov miestnosti, od okamihu ich vstupu."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Zviditeľnili ste budúce správy pre všetkých, od okamihu pozvania."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Zviditeľnili ste budúcu históriu miestnosti pre všetkých členov miestnosti, od okamihu pozvania."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Zviditeľnili ste budúce správy pre všetkých členov miestnosti."; +"notice_room_history_visible_to_members_by_you" = "Zviditeľnili ste budúcu históriu miestnosti pre všetkých jej členov."; +"notice_room_history_visible_to_anyone_by_you" = "Sprístupnili ste budúcu históriu miestnosti každému."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Zapli ste end-to-end šifrovanie (nerozpoznaný algoritmus %@)."; +"notice_encryption_enabled_ok_by_you" = "Zapli ste end-to-end šifrovanie."; +"notice_room_created_by_you_for_dm" = "Vstúpili ste."; +"notice_room_created_by_you" = "Vytvorili ste a nastavili ste miestnosť."; +"notice_profile_change_redacted_by_you" = "Aktualizovali ste svoj profil %@"; +"notice_room_topic_removed_by_you" = "Odstránili ste tému"; +"notice_room_name_removed_by_you_for_dm" = "Odstránili ste názov"; +"notice_room_name_removed_by_you" = "Odstránili ste názov miestnosti"; +"notice_conference_call_request_by_you" = "Požiadali ste o VoIP konferenciu"; +"notice_declined_video_call_by_you" = "Odmietli ste hovor"; +"notice_ended_video_call_by_you" = "Ukončili ste hovor"; +"notice_room_name_changed_by_you_for_dm" = "Zmenili ste svoje meno na %@."; +"notice_room_name_changed_by_you" = "Zmenili ste názov miestnosti na %@."; +"notice_topic_changed_by_you" = "Zmenili ste tému na \"%@\"."; +"notice_display_name_removed_by_you" = "Odstránili ste svoje zobrazované meno"; +"notice_display_name_changed_from_by_you" = "Zmenili ste si zobrazované meno z %@ na %@"; +"notice_display_name_set_by_you" = "Nastavili ste si zobrazované meno na %@"; +"notice_avatar_url_changed_by_you" = "Zmenili ste si obrázok v profile"; +"notice_room_withdraw_by_you" = "Odvolali ste pozvánku pre %@"; +"notice_room_ban_by_you" = "Zakázali ste používateľa %@"; +"notice_room_unban_by_you" = "Zrušili ste zákaz pre %@"; +"notice_room_kick_by_you" = "Odstránili ste používateľa %@"; +"notice_room_reject_by_you" = "Odmietli ste pozvanie"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Odvolali ste pozvánku pre %@"; +"notice_room_third_party_revoked_invite_by_you" = "Odvolali ste pozvánku pre %@ do miestnosti"; +"notice_room_third_party_registered_invite_by_you" = "Prijali ste pozvanie do %@"; +"notice_room_third_party_invite_by_you_for_dm" = "Pozvali ste používateľa %@"; +"notice_room_third_party_invite_by_you" = "Odoslali ste pozvánku používateľovi %@ do miestnosti"; +"notice_room_invite_you" = "%@ vás pozval"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "Pozvali ste %@"; +"notice_conference_call_finished" = "Skončila sa VoIP konferencia"; +"notice_conference_call_started" = "Začala sa VoIP konferencia"; +"notice_conference_call_request" = "%@ požiadal/a o VoIP konferenciu"; +"notice_declined_video_call" = "%@ odmietol hovor"; +"notice_ended_video_call" = "%s ukončil/a hovor"; +"notice_room_name_changed_for_dm" = "%@ zmenil/a svoje meno na %@."; +"notice_room_name_changed" = "%@ zmenil názov miestnosti na %@."; +"notice_topic_changed" = "%@ zmenil tému na \"%@\"."; +"notice_display_name_removed" = "%@ odstránil svoje zobrazované meno"; +"notice_display_name_changed_from" = "%@ zmenil/a svoje zobrazované meno z %@ na %@"; +"notice_display_name_set" = "%@ nastavil/a svoje zobrazované meno na %@"; +"notice_avatar_url_changed" = "%@ zmenil/a svoj obrázok"; +"notice_room_reason" = ". Dôvod: %@"; +"notice_room_withdraw" = "%@ odvolal pozvanie od %@"; +"notice_room_ban" = "%@ zakázal používateľa %@"; +"notice_room_unban" = "%@ zrušil zákaz pre %@"; +"notice_room_reject" = "%@ odmietol pozvanie"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ odvolal pozvánku pre %@"; +"notice_room_third_party_revoked_invite" = "%@ odvolal pozvánku pre %@, aby sa pripojil k miestnosti"; +"notice_room_third_party_registered_invite" = "%@ prijal pozvanie do %@"; +"notice_room_third_party_invite_for_dm" = "%@ pozval %@"; +"notice_room_third_party_invite" = "%@ poslal pozvánku %@ do miestnosti"; + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /matrix-sdk/src/main/res/values/strings.xml. +*/ + +"notice_room_invite" = "%@ pozval %@"; + +// Language picker +"language_picker_title" = "Vyberte jazyk"; + +// Country picker +"country_picker_title" = "Vyberte krajnu"; +"microphone_access_not_granted_for_voice_message" = "Hlasové správy vyžadujú prístup k mikrofónu, ale %@ nemá povolenie na jeho používanie"; +"local_contacts_access_discovery_warning" = "Ak chcete vyhľadať kontakty, ktoré už používajú Matrix, %@ môže odoslať e-mailové adresy a telefónne čísla z vášho adresára na zvolený server identity Matrix. Ak je to podporované, osobné údaje sa pred odoslaním zahašujú - ďalšie podrobnosti nájdete v zásadách ochrany osobných údajov vášho servera totožností."; +"local_contacts_access_discovery_warning_title" = "Vyhľadávanie používateľov"; +"local_contacts_access_not_granted" = "Zisťovanie používateľov z lokálnych kontaktov vyžaduje prístup k vašim kontaktom, ale %@ nemá oprávnenie na ich používanie"; +"microphone_access_not_granted_for_call" = "Hovory vyžadujú prístup k mikrofónu, ale %@ nemá povolenie na jeho používanie"; + +// Permissions +"camera_access_not_granted_for_call" = "Videohovory vyžadujú prístup ku kamere, ale %@ nemá povolenie na jej používanie"; +"ssl_homeserver_url" = "URL adresa domovského servera: %@"; +"network_error_not_reachable" = "Skontrolujte prosím pripojenie k sieti"; +"not_supported_yet" = "Zatiaľ nie je podporované"; +"error_common_message" = "Vyskytla sa chyba. Skúste to prosím neskôr."; +"e2e_passphrase_not_match" = "Prístupové frázy sa musia zhodovať"; +"e2e_passphrase_empty" = "Prístupová fráza nesmie byť prázdna"; +"e2e_passphrase_too_short" = "Príliš krátka prístupová fráza (Musí mať minimálne %d znakov)"; +"e2e_export_prompt" = "Tento proces umožňuje exportovať kľúče od správ, ktoré ste prijali v zašifrovaných miestnostiach, do lokálneho súboru. Tento súbor potom budete môcť v budúcnosti importovať do iného klienta Matrix, takže tento klient bude môcť tieto správy tiež dešifrovať.\nExportovaný súbor umožní komukoľvek, kto si ho môže prečítať, dešifrovať všetky zašifrované správy, ktoré vidíte, preto by ste mali dbať na jeho bezpečnosť."; + +// E2E export +"e2e_export_room_keys" = "Exportovať kľúče miestností"; +"e2e_import_prompt" = "Tento proces umožňuje importovať šifrovacie kľúče, ktoré ste predtým exportovali z iného klienta Matrix. Potom budete môcť dešifrovať všetky správy, ktoré mohol dešifrovať iný klient.\nExportovaný súbor je chránený prístupovou frázou. Tu by ste mali zadať prístupovú frázu, aby ste súbor dešifrovali."; + +// E2E import +"e2e_import_room_keys" = "Importovať kľúče miestností"; +"search_searching" = "Prebieha vyhľadávanie..."; +"attachment_unsupported_preview_message" = "Tento typ súboru nie je podporovaný."; +"attachment_unsupported_preview_title" = "Nie je možné zobraziť náhľad"; +"attachment_e2e_keys_file_prompt" = "Tento súbor obsahuje šifrovacie kľúče exportované z klienta Matrix.\nChcete zobraziť obsah súboru alebo importovať kľúče, ktoré obsahuje?"; +"attachment_multiselection_size_prompt" = "Chcete odoslať obrázok ako:"; +"attachment_cancel_upload" = "Zrušiť nahrávanie?"; +"attachment_cancel_download" = "Zrušiť sťahovanie?"; +"attachment_large_with_resolution" = "Veľká %@ (~%@)"; +"attachment_medium_with_resolution" = "Stredná %@ (~%@)"; +"attachment_small_with_resolution" = "Malá %@ (~%@)"; +"attachment_large" = "Veľká (~%@)"; +"attachment_original" = "Skutočná veľkosť (%@)"; +"attachment_size_prompt_message" = "Túto funkciu môžete kedykoľvek vypnúť v nastaveniach."; + +// Attachment +"attachment_size_prompt" = "Chcete odoslať ako:"; +"room_member_power_level_prompt" = "Túto zmenu nebudete môcť vrátiť späť, pretože tomuto používateľovi udeľujete rovnakú úroveň moci, akú máte vy.\nSte si istí?"; + +// Room members +"room_member_ignore_prompt" = "Ste si istí, že chcete skryť všetky správy od tohto používateľa?"; +"message_reply_to_sender_sent_a_file" = "poslal súbor."; +"message_reply_to_sender_sent_a_voice_message" = "poslal/a zvukovú správu."; +"message_reply_to_sender_sent_an_audio_file" = "poslal/a zvukový súbor."; +"message_reply_to_sender_sent_a_video" = "poslal video."; + +// Reply to message +"message_reply_to_sender_sent_an_image" = "poslal obrázok."; +"room_left" = "Opustili ste miestnosť"; +"room_error_timeline_event_not_found" = "Aplikácia sa pokúšala načítať konkrétny bod na časovej osi tejto miestnosti, ale nedokázala ho nájsť"; +"room_error_timeline_event_not_found_title" = "Nepodarilo sa načítať pozíciu na časovej osi"; +"room_error_cannot_load_timeline" = "Nepodarilo sa načítať časovú os"; +"room_error_topic_edition_not_authorized" = "Nie ste oprávnený upraviť tému tejto miestnosti"; +"room_error_name_edition_not_authorized" = "Nemáte oprávnenie upraviť názov tejto miestnosti"; +"room_error_join_failed_empty_room" = "V súčasnosti nie je možné znovu vstúpiť do prázdnej miestnosti."; +"room_error_join_failed_title" = "Nepodarilo sa vstúpiť do miestnosti"; + +// Room +"room_please_select" = "Prosím, vyberte si miestnosť"; +"room_creation_participants_placeholder" = "(napr. @fero:domovskyserver1; @jano:domovskyserver2...)"; +"room_creation_alias_placeholder_with_homeserver" = "(napr. #foo%@)"; +"room_creation_alias_placeholder" = "(napr. #foo:napriklad.sk)"; +"room_creation_alias_title" = "Alias miestnosti:"; +"account_error_push_not_allowed" = "Oznámenia nie sú povolené"; +"account_error_msisdn_wrong_description" = "Zdá sa, že toto nie je platné telefónne číslo"; +"account_error_msisdn_wrong_title" = "Neplatné telefónne číslo"; +"account_error_email_wrong_description" = "Toto nevyzerá ako platná e-mailová adresa"; +"account_error_email_wrong_title" = "Neplatná e-mailová adresa"; +"account_error_matrix_session_is_not_opened" = "Relácia Matrix nie je otvorená"; +"account_error_picture_change_failed" = "Zmena obrázka sa nepodarila"; +"account_error_display_name_change_failed" = "Zmena zobrazovaného mena sa nepodarila"; +"account_msisdn_validation_error" = "Nie je možné overiť telefónne číslo."; +"account_msisdn_validation_message" = "Odoslali sme SMS s aktivačným kódom. Zadajte prosím tento kód nižšie."; +"account_email_validation_error" = "Nie je možné overiť e-mailovú adresu. Skontrolujte svoj e-mail a kliknite na odkaz, ktorý obsahuje. Po vykonaní tohto kroku kliknite na tlačidlo Pokračovať"; +"account_email_validation_message" = "Prosím, skontrolujte svoj e-mail a kliknite na odkaz, ktorý obsahuje. Po dokončení tohto kroku kliknite na tlačidlo Pokračovať."; +"room_event_encryption_verify_message" = "Ak chcete overiť, či je táto relácia dôveryhodná, kontaktujte jej vlastníka iným spôsobom (napr. osobne alebo telefonicky) a opýtajte sa ho, či kľúč, ktorý vidí v nastaveniach používateľa pre túto reláciu, sa zhoduje s nižšie uvedeným kľúčom:\n\n\tNázov relácie: %@\n\tID relácie: %@\n\tKľúč relácie: %@\n\nAk sa zhoduje, stlačte tlačidlo overiť nižšie. Ak nie, potom túto reláciu zachytáva niekto iný a pravdepodobne budete chcieť namiesto toho stlačiť tlačidlo čiernej listiny.\n\nV budúcnosti bude tento proces overovania sofistikovanejší."; +"room_event_encryption_info_block" = "Pridať na čiernu listinu"; +"room_event_encryption_info_unblock" = "Odstrániť z čiernej listiny"; +"room_event_encryption_info_device" = "\nInformácie o relácii odosielateľa\n"; +"room_event_encryption_info_event_identity_key" = "Identifikačný kľúč Curve25519\n"; + +// Encryption information +"room_event_encryption_info_title" = "Informácie o end-to-end šifrovaní\n\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"settings_enable_push_notifications" = "Zapnúť push oznámenia"; +"settings_enable_inapp_notifications" = "Zapnúť oznámenia v aplikácii"; +"room_displayname_more_than_two_members" = "%@ a %@ ďalší"; +"room_displayname_two_members" = "%@ a %@"; +"notice_crypto_error_unknown_inbound_session_id" = "Relácia odosielateľa nám neposlala kľúče pre túto správu."; +"notice_crypto_unable_to_decrypt" = "** Nepodarilo sa dešifrovať: %@ **"; +"notice_room_history_visible_to_members_from_invited_point" = "%@ zviditeľnil/a budúcu históriu miestnosti pre všetkých jej členov od okamihu, keď sú pozvaní."; +"notice_room_history_visible_to_members_for_dm" = "%@ zmenil/a nastavenie, aby budúce správy boli viditeľné pre všetkých členov miestnosti."; +"notice_room_history_visible_to_members" = "%@ zviditeľnil/a budúcu históriu miestnosti pre všetkých členov miestnosti."; +"notice_room_history_visible_to_anyone" = "%@ zviditeľnil/a budúcu históriu miestnosti pre každého."; +"notification_settings_by_default" = "Predvolene..."; +"notification_settings_other_alerts" = "Iné upozornenia"; +"room_creation_name_placeholder" = "(napr. pracovnaSkupina)"; +"message_reply_to_message_to_reply_to_prefix" = "V odpovedi na"; +"notice_in_reply_to" = "V odpovedi na"; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ zviditeľnil budúce správy pre všetkých, od okamihu pripojenia."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ zviditeľnil budúcu históriu miestnosti pre všetkých členov miestnosti, od okamihu ich vstupu."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ zviditeľnil budúce správy pre všetkých, od okamihu pozvania."; +"notice_error_unknown_event_type" = "Neznámy typ udalosti"; +"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" = "%@ zverejnil/a túto miestnosť."; +"notice_room_join_rule_invite_by_you_for_dm" = "Ste ju nastavili len na pozvanie."; +"notice_room_join_rule_invite_for_dm" = "%@ ju nastavil/a len na pozvanie."; +"notice_event_redacted" = ""; +"capture_media" = "Spraviť fotografiu/video"; +"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_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 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_could_not_verify" = "Nepodarilo sa overiť identitu vzdialeného servera."; + +// unrecognized SSL certificate +"ssl_trust" = "Dôverovať"; +"call_video_with_user" = "Videohovor s %@"; +"call_voice_with_user" = "Hlasový hovor s %@"; +"call_more_actions_change_audio_device" = "Zmeniť zvukové zariadenie"; +"call_more_actions_hold" = "Podržať"; +"call_holded" = "Podržali ste hovor"; +"call_remote_holded" = "%@ podržal hovor"; +"incoming_voice_call" = "Prichádzajúci hlasový hovor"; +"incoming_video_call" = "Prichádzajúci videohovor"; +"settings_config_identity_server" = "Server totožností: %@"; +"notification_settings_suppress_from_bots" = "Stlmiť oznámenia od botov"; +"notification_settings_receive_a_call" = "Upozorniť ma, keď mi niekto zavolá"; +"notification_settings_people_join_leave_rooms" = "Upozorniť ma, keď sa ľudia pridajú alebo opustia miestnosti"; +"notification_settings_invite_to_a_new_room" = "Upozorniť ma, keď budem pozvaný do novej miestnosti"; +"notification_settings_just_sent_to_me" = "Upozorniť ma zvukom na správy odoslané len mne"; +"notification_settings_contain_my_display_name" = "Upozorniť ma zvukom na správy, ktoré obsahujú moje zobrazované meno"; +"notification_settings_contain_my_user_name" = "Upozorniť ma zvukom na správy, ktoré obsahujú moje používateľské meno"; +"notification_settings_highlight" = "Zvýrazniť"; + +// Login Screen +"login_error_already_logged_in" = "Už ste prihlásení"; +"message_unsaved_changes" = "Máte neuložené zmeny. Opustením sa zrušia."; +"membership_leave" = "Odišiel"; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Zviditeľnili ste budúce správy pre všetkých, od okamihu pripojenia."; +"notice_room_kick" = "%@ odstránil používateľa %@"; +"attachment_medium" = "Stredná (~%@)"; +"attachment_small" = "Malá (~%@)"; +"room_no_conference_call_in_encrypted_rooms" = "Konferenčné hovory nie sú podporované v šifrovaných miestnostiach"; +"room_no_power_to_create_conference_call" = "Aby ste mohli začať konferenciu, musíte mať právo pozývať používateľov do miestnosti"; +"device_details_delete_prompt_message" = "Táto operácia si vyžaduje dodatočné overenie.\nAk chcete pokračovať, zadajte svoje heslo."; +"device_details_rename_prompt_message" = "Verejný názov relácie je viditeľný pre ľudí, s ktorými komunikujete"; +"settings_enter_validation_token_for" = "Zadajte overovací token pre %@:"; +"notice_error_unexpected_event" = "Neočakávaná udalosť"; +"notice_error_unsupported_event" = "Nepodporovaná udalosť"; +"notice_room_join_rule_invite_by_you" = "Nastavili ste miestnosť len pre pozvaných."; +// New +"notice_room_join_rule_invite" = "%@ nastavil/a miestnosť len na pozvanie."; +// Old +"notice_room_join_rule" = "Pravidlo pripojenia je: %@"; +"notice_room_created" = "%@ vytvoril a nastavil miestnosť."; +"notice_profile_change_redacted" = "%@ aktualizoval svoj profil %@"; +"notice_event_redacted_reason" = " [dôvod: %@]"; +"notice_event_redacted_by" = " používateľom %@"; +"notice_room_topic_removed" = "%@ odstránil tému"; +"notice_room_name_removed_for_dm" = "%@ odstránil názov"; +"notice_room_name_removed" = "%@ odstránil/a názov miestnosti"; + +// Events formatter +"notice_avatar_changed_too" = "(obrázok bol tiež zmenený)"; +"resend_message" = "Znovu odoslať správu"; +"reset_to_default" = "Obnoviť na predvolené"; +"invite_user" = "Pozvať používateľa matrix"; +"attach_media" = "Pripojiť médium z knižnice"; +"select_account" = "Vyberte účet"; +"start_video_call" = "Spustiť videohovor"; +"start_voice_call" = "Spustiť hlasový hovor"; +"set_admin" = "Nastaviť správcu"; +"set_moderator" = "Nastaviť moderátora"; +"set_default_power_level" = "Vynulovať úroveň oprávnenia"; +"set_power_level" = "Nastaviť úroveň oprávnenia"; +"submit_code" = "Odoslať kód"; +"dismiss" = "Odmietnuť"; +"discard" = "Zahodiť"; +"login_error_resource_limit_exceeded_message_contact" = "\n\nAk chcete pokračovať v používaní tejto služby, obráťte sa na správcu služby."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Tento domovský server dosiahol svoj mesačný limit aktívnych používateľov."; +"login_error_resource_limit_exceeded_message_default" = "Tento domovský server prekročil jeden z limitov zdroja."; +"login_error_resource_limit_exceeded_title" = "Prekročený limit zdrojov"; +"login_error_forgot_password_is_not_supported" = "Zabudnuté heslo nie je v súčasnosti podporované"; +"login_error_not_json" = "Neobsahoval platný JSON"; +"login_error_unknown_token" = "Zadaný prístupový token nebol rozpoznaný"; +"login_error_registration_is_not_supported" = "Registrácia nie je v súčasnosti podporovaná"; +"login_error_do_not_support_login_flows" = "V súčasnosti nepodporujeme žiadny alebo všetky prihlasovacie toky definované týmto domovským serverom"; +"login_error_no_login_flow" = "Nepodarilo sa nám získať autentifikačné informácie z tohto domovského servera"; +"call_more_actions_audio_use_device" = "Reproduktor zariadenia"; +"call_more_actions_unhold" = "Pokračovať"; +"call_invite_expired" = "Platnosť pozvánky na hovor vypršala"; +"notification_settings_per_word_info" = "Slová sa porovnávajú bez ohľadu na veľkosť písmen a môžu obsahovať zástupný znak *. Takže:\nfoo zodpovedá reťazcu foo ohraničenému oddeľovačmi slov (napr. interpunkčnými znamienkami a medzerami alebo začiatkom/koncom riadku).\nfoo* zodpovedá každému takému slovu, ktoré začína foo.\n*foo* zodpovedá každému takému slovu, ktoré obsahuje 3 písmená foo."; +"notice_redaction_by_you" = "Upravili ste udalosť (id: %@)"; +"notice_answered_video_call_by_you" = "Prijali ste hovor"; +"notice_placed_video_call_by_you" = "Uskutočnili ste videohovor"; +"notice_placed_voice_call_by_you" = "Uskutočnili ste hlasový hovor"; +"notice_answered_video_call" = "%@ prijal hovor"; +"notice_placed_video_call" = "%@ uskutočnil videohovor"; +"notice_placed_voice_call" = "%@ uskutočnil hlasový hovor"; +"attachment_size_prompt_title" = "Potvrdiť veľkosť na odoslanie"; +"notice_redaction" = "%@ upravil udalosť (id: %@)"; +"notice_feedback" = "Udalosť spätnej väzby (id: %@): %@"; +"resume_call" = "Pokračovať"; +"answer_call" = "Prijať hovor"; +"message_reply_to_sender_sent_their_location" = "zdieľal/a svoju polohu."; +"account_link_email" = "Prepojený email"; +"account_linked_emails" = "Prepojené e-maily"; +"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"; +"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"; +"notification_settings_word_to_match" = "slovo vyhovujúce zhode"; +"notice_event_redacted_by_you" = " vami"; +"home_syncing" = "Synchronizácia"; +"room_participants_leave_success" = "Opustil miestnosť"; diff --git a/Riot/Assets/sq.lproj/Vector.strings b/Riot/Assets/sq.lproj/Vector.strings index 848a9fedb..9c2024b3d 100644 --- a/Riot/Assets/sq.lproj/Vector.strings +++ b/Riot/Assets/sq.lproj/Vector.strings @@ -409,7 +409,7 @@ "room_message_reply_to_short_placeholder" = "Dërgoni një përgjigje…"; "room_resend_unsent_messages" = "Ridërgo mesazhet e padërguara"; "room_event_action_view_decrypted_source" = "Shihni Burim të Shfshehtëzuar"; -"room_event_action_kick_prompt_reason" = "Arsye për përzënien e këtij përdoruesi"; +"room_event_action_kick_prompt_reason" = "Arsye për heqjen e këtij përdoruesi"; "room_event_action_ban_prompt_reason" = "Arsye për dëbimin e këtij përdoruesi"; "room_action_send_photo_or_video" = "Dërgoni foto ose video"; "room_replacement_link" = "Biseda vazhdon këtu."; @@ -1647,3 +1647,480 @@ "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ë"; +"location_sharing_open_open_street_maps" = "Hape në OpenStreetMap"; +"search_filter_placeholder" = "Filtër"; +"onboarding_use_case_existing_server_button" = "Lidhu me shërbyesin"; +"onboarding_use_case_existing_server_message" = "Po shihni për t’u lidhur me një shërbyes ekzistues?"; +"onboarding_use_case_skip_button" = "anashkaloni këtë pyetje"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Ende jo i sigurt? Mundeni të %@"; +"onboarding_use_case_community_messaging" = "Bashkësi"; +"onboarding_use_case_work_messaging" = "Ekipe"; +"onboarding_use_case_personal_messaging" = "Shokë dhe familje"; +"onboarding_use_case_message" = "Do t’ju ndihmojmë të lidheni."; +"onboarding_use_case_title" = "Me kë do të bisedoni më të shumtën?"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Krijo llogari:"; +"login_server_url_placeholder" = "URL (p.sh. https://matrix.org)"; +"login_home_server_title" = "URL Shërbyesi Home:"; +"login_identity_server_title" = "URL Shërbyesi Identitetesh:"; +"login_password_placeholder" = "Fjalëkalim"; +"login_optional_field" = "opsionale"; +"login_email_placeholder" = "Adresë email"; +"login_prompt_email_token" = "Ju lutemi, jepni token-in tuaj të vleftësimit të email-it:"; +"login_error_title" = "Dështoi Hyrja"; +"login_error_registration_is_not_supported" = "Hëpërhë regjistrimet nuk mbulohen"; +"login_error_forbidden" = "Emër përdoruesi/fjalëkalim i pavlefshëm"; +"login_error_unknown_token" = "Token-i i hyrjeve i dhënë nuk u njoh"; +"login_error_bad_json" = "JSON e keqformuar"; +"login_error_not_json" = "S’përmbante JSON të vlefshëm"; +"login_error_user_in_use" = "Ky emër përdoruesi është i përdorur tashmë"; +"login_use_fallback" = "Përdor faqe fallback"; +"login_leave_fallback" = "Anuloje"; +"login_invalid_param" = "Parametër i pavlefshëm"; +"register_error_title" = "Regjistrimi Dështoi"; +"login_error_forgot_password_is_not_supported" = "Harrimi i fjalëkalimeve hëpërhë s’mbulohet"; +"login_mobile_device" = "Celular"; +"login_tablet_device" = "Tablet"; +"login_desktop_device" = "Desktop"; +// Action +"no" = "Jo"; +"yes" = "Po"; +"abort" = "Ndërprite"; +"discard" = "Hidhe Tej"; +"dismiss" = "Mos e merr parasysh"; +"sign_up" = "Regjistrohuni"; +"submit" = "Parashtroje"; +"set_default_power_level" = "Rikthe Shkallët e Pushtetit Te Parazgjedhja"; +"set_moderator" = "Caktojeni Moderator"; +"set_admin" = "Caktojeni Përgjegjës"; +"start_chat" = "Filloni Fjalosje"; +"start_voice_call" = "Nis Thirrje Audio"; +"start_video_call" = "Nis Thirrje Video"; +"mention" = "Përmendje"; +"select_account" = "Përzgjidhni një llogari"; +"attach_media" = "Bashkëngjitni media nga Mediateka"; +"capture_media" = "Bëni Foto/Video"; +"invite_user" = "Ftoni Përdorues matrix"; +"reset_to_default" = "Riktheje te parazgjedhjet"; +"resend_message" = "Ridërgoje mesazhin"; +"select_all" = "Përzgjidhe Krejt"; +"cancel_upload" = "Anuloje Ngarkimin"; +"cancel_download" = "Anuloje Shkarkimin"; +"show_details" = "Shfaq Hollësi"; +"answer_call" = "Përgjigjuni Thirrjes"; +"reject_call" = "Hidhe poshtë Thirrjen"; +"end_call" = "Përfundoje Thirrjen"; +"ignore" = "Shpërfille"; +"unignore" = "Hiqja shpërfilljen"; +// Events formatter +"notice_avatar_changed_too" = "(u ndryshua edhe avatari)"; +"notice_room_name_removed" = "%@ hoqi emrin e dhomës"; +"notice_room_topic_removed" = "%@ hoqi temën"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " nga %@"; +"notice_event_redacted_reason" = " [arsye: %@]"; +"notice_profile_change_redacted" = "%@ përditësoi profilin e vet %@"; +"notice_room_created" = "%@ krijoi dhe formësoi dhomën."; +"notice_room_join_rule" = "Rregulli për pjesëmarrje është: %@"; +"notice_room_power_level_intro" = "Shkallët e pushtetit të anëtarëve të dhomës janë:"; +"notice_room_aliases" = "Aliaset e dhomës janë: %@"; +"notice_room_related_groups" = "Grupet përshoqëruar kësaj dhome janë: %@"; +"notice_encrypted_message" = "Mesazhi i fshehtëzuar"; +"notice_encryption_enabled" = "%@ aktivizoi fshehtëzimin skaj-më-skaj (algoritëm %@)"; +"notice_image_attachment" = "bashkëngjitje figurash"; +"notice_audio_attachment" = "bashkëngjitje audio"; +"notice_video_attachment" = "bashkëngjitje videosh"; +"notice_file_attachment" = "bashkëngjitje kartelash"; +"notice_invalid_attachment" = "bashkëngjitje e pavlefshme"; +"notice_unsupported_attachment" = "Bashkëngjitje e pambuluar: %@"; +"notice_error_unsupported_event" = "Akt i pambuluar"; +"notice_error_unexpected_event" = "Akt i papritur"; +"notice_error_unknown_event_type" = "Lloj i panjohur akti"; +"notice_crypto_unable_to_decrypt" = "** S’arrihet të shfshehtëzohet: %@ **"; +// room display name +"room_displayname_empty_room" = "Dhomë e zbrazët"; +"room_displayname_more_than_two_members" = "%@ dhe %@ të tjerë"; +// Settings +"settings" = "Rregullime"; +"settings_enable_inapp_notifications" = "Aktivizoni njoftime Aplikacioni"; +"settings_enable_push_notifications" = "Aktivizoni njoftime push"; +"settings_enter_validation_token_for" = "Jepni token vleftësimi për %@:"; +"notification_settings_room_rule_title" = "Dhomë: '%@'"; +// Devices +"device_details_title" = "Të dhëna sesioni\n"; +"device_details_name" = "Emër Publik\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Parë së fundi më\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "Emri publik i një sesioni është i dukshëm për persona me të cilët komunikoni"; +"device_details_delete_prompt_title" = "Mirëfilltësim"; +// Encryption information +"room_event_encryption_info_title" = "Të dhëna fshehtëzimi skaj-më-skaj\n\n"; +"room_event_encryption_info_event" = "Të dhëna akti\n"; +"room_event_encryption_info_event_user_id" = "ID Përdoruesi\n"; +"room_event_encryption_info_event_identity_key" = "Kyç identiteti Curve25519\n"; +"room_event_encryption_info_event_algorithm" = "Algoritëm\n"; +"room_event_encryption_info_event_session_id" = "ID sesioni\n"; +"room_event_encryption_info_event_decryption_error" = "Gabim shfshehtëzimi\n"; +"room_event_encryption_info_event_unencrypted" = "të pafshehtëzuara"; +"room_event_encryption_info_event_none" = "asnjë"; +"room_event_encryption_info_device" = "\nTë dhëna sesioni dërguesi\n"; +"room_event_encryption_info_device_unknown" = "sesion i panjohur\n"; +"room_event_encryption_info_device_name" = "Emër Publik\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "Verifikim\n"; +"room_event_encryption_info_device_fingerprint" = "Shenja gishtash Ed25519\n"; +"room_event_encryption_info_device_verified" = "E verifikuar"; +"room_event_encryption_info_device_not_verified" = "JO e verifikuar"; +"room_event_encryption_info_device_blocked" = "Në Listë të Zezë"; +"room_event_encryption_info_verify" = "Verifikoni…"; +"room_event_encryption_info_block" = "Listë e zezë"; +"room_event_encryption_verify_title" = "Verifiko sesionin\n\n"; +"room_event_encryption_verify_ok" = "Verifikoje"; +// Account +"account_save_changes" = "Ruaji ndryshimet"; +"account_link_email" = "Lidhni Email"; +"account_linked_emails" = "Email-e të lidhur"; +"account_email_validation_title" = "Verifikim Në Pritje të Miratimit"; +"account_msisdn_validation_title" = "Verifikim Në Pritje të Miratimit"; +"account_msisdn_validation_error" = "S’arrihet të verifikohet numër telefoni."; +"account_error_display_name_change_failed" = "Ndryshimi i emrit të shfaqjes dështoi"; +"account_error_picture_change_failed" = "Ndryshimi i fotos dështoi"; +"account_error_matrix_session_is_not_opened" = "Sesioni Matrix s’është hapur"; +"account_error_email_wrong_title" = "Adresë Email e Pavlefshme"; +"account_error_email_wrong_description" = "Kjo s’duket se është adresë email e vlefshme"; +"account_error_msisdn_wrong_title" = "Numër Telefoni i Pavlefshëm"; +"account_error_msisdn_wrong_description" = "Ky s’duket të jetë numër telefoni i vlefshëm"; +// Room creation +"room_creation_name_title" = "Emër dhome:"; +"room_creation_name_placeholder" = "(p.sh., Grupiiçajit)"; +"room_creation_alias_title" = "Alias dhome:"; +"room_creation_alias_placeholder" = "(p.sh. #kot:shembull.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(p.sh. #kot%@)"; +"room_creation_participants_title" = "Pjesëmarrës:"; +// Room +"room_please_select" = "Ju lutemi, përzgjidhni një dhomë"; +"room_error_join_failed_title" = "S’u arrit të hyhej në dhomë"; +"room_error_name_edition_not_authorized" = "S’jeni i autorizuar të përpunoni emrin e kësaj dhome"; +"room_error_topic_edition_not_authorized" = "S’jeni i autorizuar ta përpunoni temën e kësaj dhome"; +"room_error_cannot_load_timeline" = "S’u arrit të ngarkohej rrjedha kohore"; +"room_error_timeline_event_not_found_title" = "S’u arrit të ngarkohej pozicion rrjedhe kohore"; +"room_left" = "Dolët prej dhomës"; +// Attachment +"attachment_size_prompt" = "Doni të dërgohet si:"; +"attachment_original" = "Madhësi Faktike (%@)"; +"attachment_small" = "E vogël (~ %@)"; +"attachment_medium" = "Mesatare (~%@)"; +"attachment_large" = "E madhe (~ %@)"; +"attachment_cancel_download" = "Të anulohet shkarkimi?"; +"attachment_cancel_upload" = "Të anulohet ngarkimin?"; +"attachment_multiselection_size_prompt" = "Doni të dërgoni figura si:"; +"attachment_multiselection_original" = "Madhësi Faktike"; +"attachment_e2e_keys_import" = "Importoni…"; +// Contacts +"contact_mx_users" = "Përdorues të Matrix-it"; +"contact_local_contacts" = "Kontakte Vendore"; +// Groups +// Search +"search_no_results" = "S’ka Përfundime"; +"search_searching" = "Kërkim në ecuri e sipër…"; +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "h"; +"format_time_d" = "d"; +// E2E import +"e2e_import_room_keys" = "Importo kyçe dhome"; +"e2e_import" = "Importo"; +"e2e_passphrase_enter" = "Jepni frazëkalimin"; +// E2E export +"e2e_export_room_keys" = "Eksporto kyçe dhome"; +"e2e_export" = "Eksporto"; +"e2e_passphrase_confirm" = "Ripohoni frazëkalimin"; +"e2e_passphrase_empty" = "Frazëkalimi s’duhet të jetë i zbrazët"; +"e2e_passphrase_not_match" = "Frazëkalimet duhet të përputhen"; +// Others +"user_id_title" = "ID Përdoruesi:"; +"offline" = "jo në linjë"; +"error" = "Gabim"; +"not_supported_yet" = "S’mbulohen ende"; +"default" = "parazgjedhje"; +"private" = "Private"; +"public" = "Publike"; +"power_level" = "Shkallë Pushteti"; +"user_id_placeholder" = "p.sh.: @beni:homeserver"; +"ssl_homeserver_url" = "URL Shërbyesi Home: %@"; +"local_contacts_access_discovery_warning_title" = "Zbulim përdoruesish"; +// Country picker +"country_picker_title" = "Zgjidhni një vend"; +// Language picker +"language_picker_title" = "Zgjidhni gjuhë"; +"language_picker_default_language" = "Parazgjedhje (%@)"; +"notice_room_invite" = "%@ ftoi %@"; +"notice_room_third_party_invite" = "%@ dërgoi një ftesë për %@ që të vijë te dhoma"; +"notice_room_third_party_registered_invite" = "%@ e pranoi ftesën për %@"; +"notice_room_join" = "%@ u bë pjesë"; +"notice_room_leave" = "%@ doli"; +"notice_room_reject" = "%@ hodhi tej ftesën"; +"notice_room_kick" = "%@ hoqi %@"; +"notice_room_ban" = "%@ dëboi %@"; +"notice_room_withdraw" = "%@ e tërhoqi ftesën për %@"; +"notice_room_reason" = ". Arsye: %@"; +"notice_avatar_url_changed" = "%@ ndryshoi avatarin e vet"; +"notice_display_name_set" = "%@ caktoi emrin e vet të ekranit si %@"; +"notice_display_name_changed_from" = "%@ ndryshoi emrin e vet të ekranit nga %@ në %@"; +"notice_display_name_removed" = "%@ hoqi emrin e vet të ekranit"; +"notice_topic_changed" = "%@ ndryshoi temën në \"%@\"."; +"notice_room_name_changed" = "%@ ndryshoi emrin e dhomës në %@."; +"notice_placed_voice_call" = "%@ bëri një thirrje zanore"; +"notice_placed_video_call" = "%@ bëri një thirrje video"; +"notice_answered_video_call" = "%@ iu përgjigj thirrjes"; +"notice_ended_video_call" = "%@ e përfundoi thirrjen"; +"notice_conference_call_request" = "%@ kërkoi një konferencë VoIP"; +"notice_conference_call_started" = "Konferenca VoIP filloi"; +"notice_conference_call_finished" = "Konferenca VoIP përfundoi"; +// button names +"send" = "Dërgoje"; +"copy_button_name" = "Kopjoje"; +"resend" = "Ridërgoje"; +"set_power_level" = "Caktoni Shkallë Pushteti"; +"delete" = "Fshije"; +// actions +"action_logout" = "Dalje"; +"create_room" = "Krijo Dhomë"; +"login" = "Hyrje"; +"create_account" = "Krijo Llogari"; +"membership_invite" = "I ftuar"; +"membership_leave" = "I ikur"; +"membership_ban" = "I dëbuar"; +"num_members_one" = "%@ përdorues"; +"num_members_other" = "%@ përdorues"; +"kick" = "Hiqe nga fjalosja"; +"ban" = "Dëboje"; +"unban" = "Hiqja dëbimin"; +"message_unsaved_changes" = "Ka ndryshime të paruajtura. Ikja do të shkaktojë hedhjen tej të tyre."; +// Login Screen +"login_error_already_logged_in" = "Tashmë i futur"; +"login_error_must_start_http" = "URL-ja duhet të fillojë me http[s]://"; +// room details dialog screen +// Settings screen +"settings_title_config" = "Formësim"; +"settings_title_notifications" = "Njoftime"; +// Notification settings screen +"notification_settings_disable_all" = "Çaktivizoji krejt njoftimet"; +"notification_settings_enable_notifications" = "Aktivizo njoftimet"; +"notification_settings_enable_notifications_warning" = "Krejt njoftimet hëpërhë janë çaktivizuar për krejt pajisjet."; +"notification_settings_always_notify" = "Njoftomë përherë"; +"notification_settings_never_notify" = "Mos njofto kurrë"; +"notification_settings_word_to_match" = "fjalë për përputhje"; +"notification_settings_highlight" = "Theksoje"; +"notification_settings_custom_sound" = "Tingull vetjak"; +"notification_settings_sender_hint" = "@përdorues:përkatësi.com"; +"notification_settings_select_room" = "Përzgjidhni një dhomë"; +"notification_settings_other_alerts" = "Sinjalizime të Tjera"; +"notification_settings_contain_my_user_name" = "Njoftomë me tingull mbi mesazhe që përmbajnë emrin tim"; +"notification_settings_contain_my_display_name" = "Njoftomë me tingull mbi mesazhe që përmbajnë emrin tim të shfaqjes"; +"notification_settings_just_sent_to_me" = "Njoftomë me tingull mbi mesazhe dërguar vetëm për mua"; +"notification_settings_suppress_from_bots" = "Ndaloji njoftimet nga robotë"; +"notification_settings_by_default" = "Si parazgjedhje…"; +"notification_settings_notify_all_other" = "Njoftim për krejt mesazhet/dhomat e tjera"; +// gcm section +// call string +"call_waiting" = "Po pritet…"; +"call_ended" = "Thirrja përfundoi"; +"call_ring" = "Po thirret…"; +"incoming_video_call" = "Thirrje Video Ardhëse"; +"incoming_voice_call" = "Thirrje Audio Ardhëse"; +"call_invite_expired" = "Ftesa Për Thirrje Skadoi"; +// unrecognized SSL certificate +"ssl_trust" = "Besoje"; +"ssl_logout_account" = "Dalje"; +"ssl_remain_offline" = "Shpërfille"; +"ssl_fingerprint_hash" = "Shenja Gishtash (%@):"; +"ssl_could_not_verify" = "S’u verifikua dot identiteti i shërbyesit të largët."; +"submit_code" = "Parashtroni kod"; +"notice_location_attachment" = "bashkëngjitje vendndodhjeje"; +"notice_redaction" = "%@ përpunoi një veprimtari (id: %@)"; +"notice_sticker" = "ngjitës"; +"unsent" = "Të padërguar"; +"network_error_not_reachable" = "Ju lutemi, kontrolloni aftësinë e lidhjes në rrjetin tuaj"; +"share" = "Ndajeni me të tjerët"; +"login_home_server_info" = "Shërbyesi juaj home depoziton krejt të dhënat e bisedave dhe llogarive tuaja"; +"login_identity_server_info" = "Matrix ofron shërbyes identiteti për të ndjekur se cilat email-e, etj, u përkasin ID-ve Matrix IDs. Hëpërhë ekziston vetëm https://matrix.org."; +"login_user_id_placeholder" = "ID Matrix (p.sh. @poku:matrix.org ose poku)"; +"login_display_name_placeholder" = "Emër në ekran (p.sh. Mane Trimi)"; +"login_email_info" = "Përcaktimi i një adrese email i lejon përdoruesit e tjerë t’ju gjejnë më lehtë në Matrix, dhe do t’ju japë një rrugë për ricaktimin e fjalëkalimit tuaj në të ardhmen."; +"login_error_no_login_flow" = "Dështuam në marrje të dhënash mirëfilltësimi nga ky Shërbyes Home"; +"login_error_do_not_support_login_flows" = "Hëpërhë nuk mbulojmë ndonjë ose krejt rrjedhat e hyrjeve të përkufizuara nga ky Shërbyes Home"; +"login_error_limit_exceeded" = "Janë dërguar shumë kërkesa"; +"login_error_login_email_not_yet" = "Lidhja email që s’është klikuar ende"; +"notice_room_power_level_acting_requirement" = "Shkallët minimum të pushtetit që duhet të ketë një përdorues përpara se të veprojë, janë:"; +"notice_room_power_level_event_requirement" = "Shkallët minimum të pushtetit që lidhen me aktet janë:"; +"notice_room_history_visible_to_anyone" = "%@ e bëri historikun e ardhshëm të dhomës të dukshëm për këdo."; +"notice_room_history_visible_to_members" = "%@ e bëri historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ e bëri historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës, prej çastit kur janë ftuar."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ e bëri historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës, prej çastit kur morën pjesë."; +"notice_crypto_error_unknown_inbound_session_id" = "Sesioni i dërguesit nuk na ka dërguar kyçet për këtë mesazh."; +"notice_in_reply_to" = "Në përgjigje të"; +"device_details_delete_prompt_message" = "Ky veprim lyp mirëfilltësim shtesë.\nQë të vazhdohet, ju lutemi, jepni fjalëkalimin tuaj."; +"room_event_encryption_info_unverify" = "Hiqi verifikimin"; +"room_event_encryption_info_unblock" = "Hiqe nga listë e zezë"; +"room_event_encryption_verify_message" = "Që të verifikohet se ky sesion mund të besohet, ju lutemi, lidhuni me të zotin e tij duke përdorur ndonjë rrugë tjetër (p.sh., personalisht apo përmes një thirrjeje telefonike) dhe kërkojini nëse kyçi që sheh te Rregullimet e veta të Përdoruesit për këtë sesion përputhet me kyçin më poshtë:\n\n\tEmër sesioni: %@\n\tID sesioni: %@\n\tKyç sesioni: %@\n\nNëse përputhet, shtypni më poshtë butonin e verifikimit. Nëse jo, atëherë dikush tjetër është duke përgjuar këtë pajisje dhe do të donit më mirë të shtypnit butonin e kalimit në listë të zezë.\n\nNë të ardhmen ky proces verifikimi do të jetë më i sofistikuar."; +"account_email_validation_message" = "Ju lutemi, kontrolloni email-in tuaj dhe klikoni mbi lidhjen që përmban. Pasi të jetë bërë kjo, klikoni që të vazhdohet."; +"account_email_validation_error" = "S’arrihet të verifikohet adresë email. Ju lutemi, kontrolloni email-in tuaj dhe klikoni mbi lidhjen që përmban. Pasi të jetë bërë kjo, klikoni që të vazhdohet"; +"account_msisdn_validation_message" = "Kemi dërguar një SMS me një kod aktivizimi. Ju lutemi, jepeni këtë kod më poshtë."; +"room_creation_participants_placeholder" = "(p.sh. @mane:homeserver1; @taku:homeserver2...)"; +"room_error_join_failed_empty_room" = "Hëpërhë s’është e mundur të hyhet në një dhomë të zbrazët."; +"room_error_timeline_event_not_found" = "Aplikacioni u rrek të ngarkonte një pikë të dhënë prej rrjedhës kohore në këtë dhomë, por s’qe në gjendje ta gjente"; +"room_no_power_to_create_conference_call" = "Ju duhen leje për ftesa, që të nisni një konferencë në këtë dhomë"; +"room_no_conference_call_in_encrypted_rooms" = "Thirrjet konferencë nuk mbulohen në dhoma të fshehtëzuara"; +// Room members +"room_member_ignore_prompt" = "Doni të fshihen krejt mesazhet nga ky përdorues?"; +"room_member_power_level_prompt" = "S’do të jeni në gjendje ta zhbëni këtë ndryshim, ngaqë po e promovoni përdoruesin të ketë të njëjtën shkallë pushteti si ju vetë.\nJeni i sigurt?"; +"attachment_e2e_keys_file_prompt" = "Kjo kartelë përmban kyçe fshehtëzimi të eksportur nga një klient Matrix.\nDoni të shihni lëndën e kartelës apo të importoni kyçet që ajo përmban?"; +"e2e_import_prompt" = "Ky proces ju lejon të importoni kyçe fshehtëzimi që keni eksportuar më parë nga një tjetër klient Matrix. Mandej do të jeni në gjendje të shfshehtëzoni çfarëdo mesazhesh që mund të shfshehtëzojë ai klient tjetër.\nKartela e eksportit është e mbrojtur me një frazëkalim. Që të shfshehtëzoni kartelën, duhet ta jepni frazëkalimin këtu."; +"e2e_export_prompt" = "Ky proces ju lejon të eksportoni te një kartelë vendore kyçet për mesazhe që keni marrë në dhoma të fshehtëzuara. Mandej do të jeni në gjendje ta importoni kartelën te një tjetër klient Matrix në të ardhmen, që kështu ai klient të jetë në gjendje t’i fshehtëzojë këto mesazhe.\nKartela e eksportuar do t’i lejojë, cilitdo që mund ta lexojë, të shfshehtëzojë çfarëdo mesazhesh të fshehtëzuar që mund të shihni ju, ndaj duhet të bëni kujdes ta mbani të parrezikuar."; +"error_common_message" = "Ndodhi një gabim. Ju lutemi, riprovoni më vonë."; +// Permissions +"camera_access_not_granted_for_call" = "Thirrjet video lypin përdorim të Kamerës, por %@ s’ka leje për ta përdorur"; +"microphone_access_not_granted_for_call" = "Thirrjet lypin përdorim të Mikrofonit, por %@ s’ka leje ta përdorë atë"; +"local_contacts_access_not_granted" = "Zbulimi i përdoruesve nga kontaktet vendore lyp hyrje te kontaktet tuaja, por %@ s’ka leje t’i përdorë ato"; +"local_contacts_access_discovery_warning" = "Që të mund të zbulojë kontakte që përdorin tashmë Matrix-in, %@ mund të dërgojë adresa email dhe numra telefonash nga libri juaj i adresave te shërbyesi juaj i zgjedhur i identiteteve Matrix. Kur kjo mbulohet, të dhënat personale fshehtëzohen, përpara dërgimit - për më tepër hollësi, ju lutemi kontrolloni rregulla privatësie të shërbyesit tuaj të identiteteve."; +"notice_room_unban" = "%@ i hoqi dëbimin %@"; +"redact" = "Hiqe"; +// contacts list screen +"invitation_message" = "Do të doja të bisedoja me ju me Matrix. Për të pasur më tepër itë dhëna, ju lutem, vizitoni sajtin http://matrix.org."; +"notification_settings_global_info" = "Rregullimet mbi njoftimet ruhen te llogaria juaj e përdoruesit dhe ndahen me krejt klientët që i mbulojnë ato (përfshi njoftimet në desktop).\n\nRregullat zbatohen sipas një radhe; rregulli i parë që ka përputhje përcakton lëndën për mesazhin.\nKështu: njoftimet sipas fjalësh janë më të rëndësishme se njoftimet sipas dhomash të cilat janë më të rëndësishme se njoftimet sipas dërguesish.\nFor multiple rules of the same kind, the first one in the list that matches takes priority."; +"notification_settings_per_word_notifications" = "Njoftime sipas fjale"; +"notification_settings_per_word_info" = "Për fjalët përputhjet gjenden pa marrë parasysh shkrimin me të madhe apo të vogël, dhe mund të përfshijnë një shenjë të gjithëpushtetshme *. Kështu:\nkot përputhet me vargun kot të rrethuar nga përkufizues fjalësh (p.sh. shenja pikësimi apo hapësira, ose fillim/fund rreshti).\nkot* përputhet me çfarëdo fjale që fillon me kot.\n*kot* përputhet me çfarëdo fjale që përfshin 3 shkronjat kot."; +"notification_settings_per_room_notifications" = "Njoftime sipas dhome"; +"notification_settings_per_sender_notifications" = "Njoftime sipas dërguesi"; +"notification_settings_invite_to_a_new_room" = "Njoftomë kur ftohem në një dhomë të re"; +"notification_settings_people_join_leave_rooms" = "Njoftomë kur vijnë ose ikin persona nga dhoma"; +"notification_settings_receive_a_call" = "Njoftomë kur marr një thirrje"; +"call_connecting" = "Po lidhet…"; +"ssl_cert_not_trust" = "Kjo mund të ishte shenjë se dikush po përgjon me dashakeqësi trafikun tuaj, ose se telefoni juaj nuk i beson dëshmisë së furnizuar nga shërbyesi i largët."; +"ssl_cert_new_account_expl" = "Nëse përgjegjësi i shërbyesit ka thënë se kjo është e pritshme, sigurohuni që shenjat e gishtave më poshtë përputhen me shenjat e gishtave të furnizuara prej tyre."; +"ssl_unexpected_existing_expl" = "Dëshmia ka ndryshuar nga ajo që qe besuar nga telefoni juaj. Kjo është SHUMË E PAZAKONTË. Këshillohet që TË MOS E PRANONI këtë dëshmi të re."; +"ssl_expected_existing_expl" = "Dëshmia ka ndryshuar nga një e besueshme dikur në një që nuk besohet. Shërbyesi mund të ketë rinovuar dëshminë e tij. Lidhuni me përgjegjësin e shërbyesit për shenjat e pritshme të gishtave."; +"ssl_only_accept" = "Pranojeni dëshminë VETËM nëse përgjegjësi i shërbyesit ka publikuar shenja gishtash që përputhen me ato më sipër."; +"login_error_resource_limit_exceeded_title" = "U tejkalua Kufi Burimesh"; +"login_error_resource_limit_exceeded_message_default" = "Ky shërbyes home ka tejkaluar një nga kufijtë mbi burimet."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Ky shërbyes home ka tejkaluar kufirin Përdorues Aktivë Mujorë."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nJu lutemi, që të vazhdoni të përdorni këtë shërbim, lidhuni me përgjegjësin e shërbimit tuaj."; +"login_error_resource_limit_exceeded_contact_button" = "Lidhuni Me Përgjegjësin"; +"room_displayname_two_members" = "%@ dhe %@"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "dërgoi një figurë."; +"message_reply_to_sender_sent_a_video" = "dërgoi një video."; +"message_reply_to_sender_sent_an_audio_file" = "dërgoi një kartelë audio."; +"message_reply_to_sender_sent_a_file" = "dërgoi një kartelë."; +"message_reply_to_message_to_reply_to_prefix" = "Në përgjigje të"; +"e2e_passphrase_create" = "Krijoni frazëkalim"; +"room_event_encryption_info_event_fingerprint_key" = "U pretendua për kyç Ed25519 shenjash gishtash\n"; +"notice_feedback" = "Akt dhënieje përshtypjesh (id: %@): %@"; +"account_error_push_not_allowed" = "Nuk lejohen njoftime"; +"notice_room_third_party_revoked_invite" = "%@ shfuqizoi ftesën për pjesëmarrje në dhomë për %@"; +"device_details_rename_prompt_title" = "Emër Sesioni"; +"notice_encryption_enabled_ok" = "%@ aktivizoi fshehtëzimin skaj-më-skaj."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ aktivizoi fshehtëzimin skaj-më-skaj (algoritëm që s’është njohur %2$@)."; +// Notice Events with "You" +"notice_room_invite_by_you" = "Ftuat %@"; +"notice_room_invite_you" = "Ju ftoi %@"; +"notice_room_third_party_invite_by_you" = "I dërguat %@ një ftesë të marrë pjesë te dhoma"; +"notice_room_third_party_registered_invite_by_you" = "Pranuat ftesën nga %@"; +"notice_room_third_party_revoked_invite_by_you" = "Shfuqizuat ftesën për ardhje në dhomë për %@"; +"notice_room_join_by_you" = "Erdhët"; +"notice_room_leave_by_you" = "Ikët"; +"notice_room_reject_by_you" = "Hodhët poshtë ftesën"; +"notice_room_kick_by_you" = "Hoqët %@"; +"notice_room_unban_by_you" = "Hoqët dëbimin për %@"; +"notice_room_ban_by_you" = "Dëbuat %@"; +"notice_room_withdraw_by_you" = "Tërhoqët mbrapsht ftesën për %@"; +"notice_avatar_url_changed_by_you" = "Ndryshuat avatarin tuaj"; +"notice_display_name_set_by_you" = "Caktuat si emrin tuaj në ekran %@"; +"notice_display_name_changed_from_by_you" = "Ndryshuat emrin tuaj në ekran nga %@ në %@"; +"notice_display_name_removed_by_you" = "Hoqët emrin tuaj në ekran"; +"notice_topic_changed_by_you" = "E ndryshuat temën në \"%@\"."; +"notice_room_name_changed_by_you" = "E ndryshuat emrin e dhomës në \"%@\"."; +"notice_placed_voice_call_by_you" = "Bëtë një thirrje zanore"; +"notice_placed_video_call_by_you" = "Bëtë një thirrje video"; +"notice_answered_video_call_by_you" = "Iu përgjigjët thirrjes"; +"notice_ended_video_call_by_you" = "E përfunduat thirrjen"; +"notice_conference_call_request_by_you" = "Kërkuat një konferencë VoIP"; +"notice_room_name_removed_by_you" = "Hoqët emrin e dhomës"; +"notice_room_topic_removed_by_you" = "Hoqët temën"; +"notice_event_redacted_by_you" = " nga ju"; +"notice_profile_change_redacted_by_you" = "Përditësuat profilin tuaj %@"; +"notice_room_created_by_you" = "Krijuat dhe formësuat dhomën."; +"notice_encryption_enabled_ok_by_you" = "Aktivizuat fshehtëzimin skaj-më-skaj."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Aktivizuat fshehtëzim skaj-më-skaj (algoritëm %@ i papranuar)."; +"notice_redaction_by_you" = "Redaktuat një akt (id: %@)"; +"notice_room_history_visible_to_anyone_by_you" = "E bëtë historikun e ardhshëm të dhomës të dukshëm për këdo."; +"notice_room_history_visible_to_members_by_you" = "E bëtë historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "E bëtë historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës, nga çasti që janë ftuar."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "E bëtë historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës, që nga çasti që bëhen pjesë e dhomës."; +// New +"notice_room_join_rule_invite" = "%@ e bëri dhomën vetëm me ftesa."; +"notice_room_join_rule_invite_by_you" = "E bëtë dhomën vetëm me ftesa."; +"notice_room_join_rule_public" = "%@ e bëri dhomën publike."; +"notice_room_join_rule_public_by_you" = "E bëtë dhomën publike."; +"notice_room_name_removed_for_dm" = "%@ hoqi emrin"; +"notice_room_created_for_dm" = "%@ hyri."; +"notice_room_join_rule_invite_for_dm" = "%@ e bëri këtë “vetëm me ftesa”."; +"notice_room_join_rule_invite_by_you_for_dm" = "E bëtë këtë “vetëm me ftesa”."; +"notice_room_join_rule_public_for_dm" = "%@ e bëri këtë publike."; +"notice_room_join_rule_public_by_you_for_dm" = "E bëtë këtë publike."; +"notice_room_power_level_intro_for_dm" = "Shkallë pushteti që kanë anëtarët:"; +"notice_room_aliases_for_dm" = "Aliaset janë: %@"; +"notice_room_history_visible_to_members_for_dm" = "%@ i bëri mesazhet e ardhshëm të dukshëm për krejt anëtarët e dhomës."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ i bëri mesazhet e ardhshëm të dukshëm për këdo, që nga çasti që ftohen."; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ i bëri mesazhet e ardhshëm të dukshëm për këdo, që nga çasti bëhen pjesë e bisedës."; +"room_left_for_dm" = "Dolët"; +"notice_room_third_party_invite_for_dm" = "%@ ftoi %@"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ shfuqizoi ftesën për %@"; +"notice_room_name_changed_for_dm" = "%@ ndryshoi emrin në %@."; +"notice_room_third_party_invite_by_you_for_dm" = "Ftuat %@"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Shfuqizuar ftesën për %@"; +"notice_room_name_changed_by_you_for_dm" = "Ndryshuat emrin në %@."; +"notice_room_name_removed_by_you_for_dm" = "Hoqët emrin"; +"notice_room_created_by_you_for_dm" = "Hytë."; +"notice_room_history_visible_to_members_by_you_for_dm" = "I bëtë mesazhet e ardhshëm të dukshëm për krejt anëtarët e dhomës."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "I bëtë mesazhet e ardhshëm të dukshëm për këdo, nga çasti që ftohen."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "I bëtë mesazhet e ardhshëm të dukshëm për këdo, nga çasti që hyjnë në bisedë."; +"resume_call" = "Rimerre"; +"call_holded" = "E mbajtët pezull thirrjen"; +"notice_declined_video_call" = "%@ e hodhi poshtë thirrjen"; +"notice_declined_video_call_by_you" = "E hodhët poshtë thirrjen"; +"call_remote_holded" = "%@ e mbajti pezull thirrjen"; +"call_more_actions_hold" = "Mbaje pezull"; +"call_more_actions_unhold" = "Rimerre"; +"call_more_actions_change_audio_device" = "Ndryshoni Pajisje Audio"; +"call_more_actions_audio_use_headset" = "Përdorni Kufje dhe Mikrofon"; +"call_more_actions_audio_use_device" = "Altoparlant Pajisjeje"; +"call_more_actions_transfer" = "Shpërngule"; +"call_more_actions_dialpad" = "Tastierë numerike"; +"call_transfer_to_user" = "Shpërngulje te %@"; +"call_consulting_with_user" = "Konsultim me %@"; +"call_video_with_user" = "Thirrje me video me %@"; +"call_voice_with_user" = "Thirrje me zë me %@"; +"call_ringing" = "Po i bihet ziles…"; +"e2e_passphrase_too_short" = "Frazëkalim shumë i shkurtër (Duhet të jetë e pakta %d shenja i gjatë)"; +"microphone_access_not_granted_for_voice_message" = "Mesazhet zanorë lypin përdorim të Mikrofonit, por %@ s’ka leje përdorimi të tij"; +"message_reply_to_sender_sent_a_voice_message" = "dërgoi një mesazh zanor."; +"attachment_large_with_resolution" = "E madhe %@ (~%@)"; +"attachment_medium_with_resolution" = "Mesatare %@ (~%@)"; +"attachment_small_with_resolution" = "E vogël %@ (~%@)"; +"attachment_size_prompt_message" = "Këtë mund ta çaktivizoni te rregullimet."; +"attachment_size_prompt_title" = "Ripohoni madhësi për dërgim"; +"attachment_unsupported_preview_message" = "Ky lloj kartele nuk mbulohet."; +"attachment_unsupported_preview_title" = "S’arrihet të bëhet paraparje"; +"room_displayname_all_other_members_left" = "%@ (Iku)"; +"message_reply_to_sender_sent_their_location" = "ka dhënë vendndodhjen e vet."; diff --git a/Riot/Assets/sv.lproj/Vector.strings b/Riot/Assets/sv.lproj/Vector.strings index 5b2a7675f..0875e55cd 100644 --- a/Riot/Assets/sv.lproj/Vector.strings +++ b/Riot/Assets/sv.lproj/Vector.strings @@ -209,7 +209,7 @@ "room_event_action_view_decrypted_source" = "Visa avkrypterad källa"; "room_event_action_report" = "Rapportera innehåll"; "room_event_action_report_prompt_reason" = "Anledning för att rapportera det här innehållet"; -"room_event_action_kick_prompt_reason" = "Skäl till att kicka den här användaren"; +"room_event_action_kick_prompt_reason" = "Skäl till att ta bort den här användaren"; "room_event_action_ban_prompt_reason" = "Skäl till att banna den här användaren"; "room_event_action_report_prompt_ignore_user" = "Vill du dölja alla meddelanden från den här användaren?"; "room_event_action_save" = "Spara"; @@ -1591,3 +1591,480 @@ "accessibility_button_label" = "knapp"; "ok" = "OK"; "enable" = "Aktivera"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Inte säker än? Du kan %@"; +"onboarding_use_case_community_messaging" = "Gemenskaper"; +"onboarding_use_case_work_messaging" = "Team"; +"onboarding_use_case_personal_messaging" = "Vänner och familj"; +"onboarding_use_case_message" = "Vi kommer hjälpa dig att få kontakt."; +"onboarding_use_case_title" = "Vem vill du chatta med mest?"; +"onboarding_use_case_existing_server_message" = "Vill du gå med i en existerande server?"; +"onboarding_use_case_existing_server_button" = "Anslut till server"; +"search_filter_placeholder" = "Filter"; +"location_sharing_open_open_street_maps" = "Öppna i OpenStreetMap"; +"onboarding_use_case_skip_button" = "hoppa över den här frågan"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Skapa konto:"; +"login_server_url_placeholder" = "URL (t.ex. https://matrix.org)"; +"login_home_server_title" = "Hemserver-URL:"; +"login_home_server_info" = "Din hemserver lagrar alla dina konversationer och din kontodata"; +"login_identity_server_title" = "Identitetsserver-URL:"; +"login_identity_server_info" = "Matrix tillhandahåller identitetsservrar för att spåra vilka e-postadresser o.s.v. som tillhör vilka Matrix-ID:n. Endast https://matrix.org finns för närvarande."; +"login_user_id_placeholder" = "Matrix-ID (t.ex. @bob:matrix.org eller bob)"; +"login_password_placeholder" = "Lösenord"; +"login_optional_field" = "valfritt"; +"login_display_name_placeholder" = "Visningsnamn (t.ex. Sven Svensson)"; +"login_email_info" = "Genom att ange en e-postadress kan andra användare hitta dig på Matrix lättare, och det ger dig ett sätt att återställa ditt lösenord i framtiden."; +"login_email_placeholder" = "E-postadress"; +"login_prompt_email_token" = "Ange din e-postvalideringstoken:"; +"login_error_title" = "Inloggning misslyckades"; +"login_error_no_login_flow" = "Vi misslyckades att hämta autentiseringsinformation från den här hemservern"; +"login_error_do_not_support_login_flows" = "För närvarande stöder vi inte några eller alla inloggningsflöden som har definierats av den här hemservern"; +"login_error_registration_is_not_supported" = "Registrering stöds inte för närvarande"; +"login_error_forbidden" = "Ogiltigt användarnamn eller lösenord"; +"login_error_unknown_token" = "Den åtkomsttoken som specificerades kändes inte igen"; +"login_error_bad_json" = "Felformaterad JSON"; +"login_error_not_json" = "Innehöll inte giltig JSON"; +"login_error_limit_exceeded" = "För många förfrågningar har skickats"; +"login_error_user_in_use" = "Det här användarnamnet har redan använts"; +"login_error_login_email_not_yet" = "E-postlänken har inte klickats än"; +"login_use_fallback" = "Använd reservsida"; +"login_leave_fallback" = "Avbryt"; +"login_invalid_param" = "Ogiltig parameter"; +"register_error_title" = "Registrering misslyckades"; +"login_error_forgot_password_is_not_supported" = "Lösenordsåterställning stöds ännu inte"; +"login_mobile_device" = "Mobil"; +"login_tablet_device" = "Surfplatta"; +"login_desktop_device" = "Skrivbord"; +"login_error_resource_limit_exceeded_title" = "Resursgräns överskriden"; +"login_error_resource_limit_exceeded_message_default" = "Hemservern har överskridit en av sina resursgränser."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Den här hemservern har nått sin gräns för aktiva användare per månad."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nVänligen kontakta din tjänstadministratör för att fortsätta använda den här tjänsten."; +"login_error_resource_limit_exceeded_contact_button" = "Kontakta administratör"; +// Action +"no" = "Nej"; +"yes" = "Ja"; +"abort" = "Avbryt"; +"discard" = "Släng"; +"dismiss" = "Avvisa"; +"sign_up" = "Bli medlem"; +"submit" = "Skicka"; +"submit_code" = "Skicka kod"; +"set_power_level" = "Sätt behörighetsnivå"; +"set_default_power_level" = "Återställ behörighetsnivå"; +"set_moderator" = "Sätt till moderator"; +"set_admin" = "Sätt till administratör"; +"start_chat" = "Starta chatt"; +"start_voice_call" = "Starta röstsamtal"; +"start_video_call" = "Starta videosamtal"; +"mention" = "Nämn"; +"select_account" = "Välj ett konto"; +"attach_media" = "Bifoga media från biblioteket"; +"capture_media" = "Ta bild/video"; +"invite_user" = "Bjud in Matrixanvändare"; +"reset_to_default" = "Återställ till standard"; +"resend_message" = "Skicka meddelandet igen"; +"select_all" = "Välj allt"; +"cancel_upload" = "Avbryt uppladdning"; +"cancel_download" = "Avbryt nedladdning"; +"show_details" = "Visa detaljer"; +"answer_call" = "Svara på samtal"; +"reject_call" = "Avvisa samtal"; +"end_call" = "Avsluta samtal"; +"ignore" = "Ignorera"; +"unignore" = "Avignorera"; +// Events formatter +"notice_avatar_changed_too" = "(avataren byttes också)"; +"notice_room_name_removed" = "%@ tog bort rumsnamnet"; +"notice_room_topic_removed" = "%@ tog bort ämnet"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " av %@"; +"notice_event_redacted_reason" = " [anledning: %@]"; +"notice_profile_change_redacted" = "%@ uppdaterade sin profil %@"; +"notice_room_created" = "%@ skapade och konfigurerade rummet."; +"notice_room_join_rule" = "Regeln för att gå med är: %@"; +"notice_room_power_level_intro" = "Behörighetsnivå för rumsmedlemmar är:"; +"notice_room_power_level_acting_requirement" = "Den minimala behörighetsnivån en användare behöver har innan den kan göra något är:"; +"notice_room_power_level_event_requirement" = "Den minimala behörighetsnivån relaterad till händelser är:"; +"notice_room_aliases" = "Rumsaliasen är: %@"; +"notice_room_related_groups" = "Grupperna associerade med det här rummet är: %@"; +"notice_encrypted_message" = "Krypterat meddelande"; +"notice_encryption_enabled_ok" = "%@ aktiverade totalsträckskryptering."; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ aktiverade totalsträckskryptering (okänd algoritm %2$@)."; +"notice_image_attachment" = "bildbilaga"; +"notice_audio_attachment" = "ljudbilaga"; +"notice_video_attachment" = "videobilaga"; +"notice_location_attachment" = "positionsbilaga"; +"notice_file_attachment" = "filbilaga"; +"notice_invalid_attachment" = "ogiltig bilaga"; +"notice_unsupported_attachment" = "Ostödd bilaga: %@"; +"notice_feedback" = "Återkopplingshändelse (id: %@): %@"; +"notice_redaction" = "%@ dolde en händelse (id: %@)"; +"notice_error_unsupported_event" = "Ostödd händelse"; +"notice_error_unexpected_event" = "Oväntad händelse"; +"notice_error_unknown_event_type" = "Okänd händelsetyp"; +"notice_room_history_visible_to_anyone" = "%@ gjorde framtida rumshistorik synlig för alla."; +"notice_room_history_visible_to_members" = "%@ gjorde framtida rumshistorik synlig för alla rumsmedlemmar."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ gjorde framtida rumshistorik synlig för alla rumsmedlemmar från när de bjöds in."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ gjorde framtida rumshistorik synlig för alla rumsmedlemmar från när de gick med."; +"notice_crypto_unable_to_decrypt" = "** Kunde inte avkryptera: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "Avsändarens session har inte gett oss nycklarna för det här meddelandet."; +"notice_sticker" = "dekal"; +"notice_in_reply_to" = "Svar på"; +// room display name +"room_displayname_empty_room" = "Tomt rum"; +"room_displayname_two_members" = "%@ och %@"; +"room_displayname_more_than_two_members" = "%@ och %@ till"; +// Settings +"settings" = "Inställningar"; +"settings_enable_inapp_notifications" = "Aktivera aviseringar i appen"; +"settings_enable_push_notifications" = "Aktivera pushnotiser"; +"settings_enter_validation_token_for" = "Ange valideringstoken för &@:"; +"notification_settings_room_rule_title" = "Rum: '%@'"; +// Devices +"device_details_title" = "Sessionsinformation\n"; +"device_details_name" = "Offentligt namn\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "Senast sedd\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_title" = "Sessionsnamn"; +"device_details_rename_prompt_message" = "En sessions offentliga namn är synligt för personer du kommunicerar med"; +"device_details_delete_prompt_title" = "Autentisering"; +"device_details_delete_prompt_message" = "Den här handlingen kräver ytterligare autentisering.\nFör att fortsätta, vänligen ange ditt lösenord."; +// Encryption information +"room_event_encryption_info_title" = "Totalsträckskrypteringsinformation\n\n"; +"room_event_encryption_info_event" = "Händelseinformation\n"; +"room_event_encryption_info_event_user_id" = "Användar-ID\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519-identitetsnyckel\n"; +"room_event_encryption_info_event_fingerprint_key" = "Hävdad Ed25519-fingeravtrycksnyckel\n"; +"room_event_encryption_info_event_algorithm" = "Algoritm\n"; +"room_event_encryption_info_event_session_id" = "Sessions-ID\n"; +"room_event_encryption_info_event_decryption_error" = "Avkrypteringsfel\n"; +"room_event_encryption_info_event_unencrypted" = "okrypterad"; +"room_event_encryption_info_event_none" = "ingen"; +"room_event_encryption_info_device" = "\nAvsändarens sessionsinformation\n"; +"room_event_encryption_info_device_unknown" = "Okänd session\n"; +"room_event_encryption_info_device_name" = "Offentligt namn\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "Verifiering\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519-fingeravtryck\n"; +"room_event_encryption_info_device_verified" = "Verifierad"; +"room_event_encryption_info_device_not_verified" = "INTE verifierad"; +"room_event_encryption_info_device_blocked" = "Svartlistad"; +"room_event_encryption_info_verify" = "Verifiera…"; +"room_event_encryption_info_unverify" = "Avverifiera"; +"room_event_encryption_info_block" = "Svartlista"; +"room_event_encryption_info_unblock" = "Avsvartlista"; +"room_event_encryption_verify_title" = "Verifiera session\n\n"; +"room_event_encryption_verify_message" = "För att verifiera att denna session går att lita på, vänligen kontakta ägaren på annat sätt (t.ex. personligen eller med ett telefonsamtal) och fråga dem om nyckeln de ser i sina användarinställningar för den här sessionen matchar nyckeln nedan:\n\n\tSessionsnamn: %@\n\tSessions-ID: %@\n\tSessionsnyckel: %@\n\nOm de matchar, tryck på verifieringsknappen nedan. Om de inte gör det så betyder det att någon annan snappar upp denna session och du vill antagligen trycka på svartlistknappen istället.\n\nI framtiden kommer denna verifieringsprocess att bli mer sofistikerad."; +"room_event_encryption_verify_ok" = "Verifiera"; +// Account +"account_save_changes" = "Spara ändringar"; +"account_link_email" = "Länka e-post"; +"account_linked_emails" = "Länkade e-postadresser"; +"account_email_validation_title" = "Avvaktar verifiering"; +"account_email_validation_message" = "Vänligen kolla din e-post och klicka på länken den innehåller. När detta är klart, klicka fortsätt."; +"account_email_validation_error" = "Kunde inte verifiera e-postadressen. Kontrollera din e-post och klicka på länken den innehåller. När detta är klart, klicka på fortsätt"; +"account_msisdn_validation_title" = "Avvaktar verifiering"; +"account_msisdn_validation_message" = "Vi har skickat ett SMS med en aktiveringskod. Ange den koden nedan."; +"account_msisdn_validation_error" = "Kunde inte verifiera telefonnummer."; +"account_error_display_name_change_failed" = "Byte av visningsnamn misslyckades"; +"account_error_picture_change_failed" = "Byte av bild misslyckades"; +"account_error_matrix_session_is_not_opened" = "Matrixsession har inte öppnats"; +"account_error_email_wrong_title" = "Ogiltig e-postadress"; +"account_error_email_wrong_description" = "Det här ser inte ut som en giltig e-postadress"; +"account_error_msisdn_wrong_title" = "Ogiltigt telefonnummer"; +"account_error_msisdn_wrong_description" = "Det här ser inte ut som ett giltigt telefonnummer"; +"account_error_push_not_allowed" = "Aviseringar tillåts inte"; +// Room creation +"room_creation_name_title" = "Rumsnamn:"; +"room_creation_name_placeholder" = "(t.ex. lunchgrupp)"; +"room_creation_alias_title" = "Rumsalias:"; +"room_creation_alias_placeholder" = "(t.ex. #foo:exempel.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(t.ex. #foo%@)"; +"room_creation_participants_title" = "Deltagare:"; +"room_creation_participants_placeholder" = "(t.ex. @sven:hemserver1; @anna:hemserver2…)"; +// Room +"room_please_select" = "Vänligen välj ett rum"; +"room_error_join_failed_title" = "Misslyckades att gå med i rum"; +"room_error_join_failed_empty_room" = "Det går för närvarande inte att gå med i ett tomt rum."; +"room_error_name_edition_not_authorized" = "Du är inte auktoriserad att redigera det här rummets namn"; +"room_error_topic_edition_not_authorized" = "Du är inte auktoriserad att ändra det här rummets ämne"; +"room_error_cannot_load_timeline" = "Misslyckades att ladda tidslinjen"; +"room_error_timeline_event_not_found_title" = "Misslyckades att ladda position på tidslinjen"; +"room_error_timeline_event_not_found" = "Appen försökte ladda en viss punkt i detta rums tidslinje men kunde inte hitta den"; +"room_left" = "Du lämnade rummet"; +"room_no_power_to_create_conference_call" = "Du behöver behörighet att bjuda in personer för att starta ett gruppsamtal i det här rummet"; +"room_no_conference_call_in_encrypted_rooms" = "Gruppsamtal stöds inte i krypterade rum"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "skickade en bild."; +"message_reply_to_sender_sent_a_video" = "skickade en video."; +"message_reply_to_sender_sent_an_audio_file" = "skickade en ljudfil."; +"message_reply_to_sender_sent_a_file" = "skickade en fil."; +"message_reply_to_message_to_reply_to_prefix" = "Svar på"; +// Room members +"room_member_ignore_prompt" = "Är du säker på att du vill dölja alla meddelande från den här användaren?"; +"room_member_power_level_prompt" = "Du kommer inte att kunna ångra denna ändring eftersom du befordrar användaren till samma behörighetsnivå som dig själv.\nÄr du säker?"; +// Attachment +"attachment_size_prompt" = "Vill du skicka som:"; +"attachment_original" = "Faktisk storlek (%@)"; +"attachment_small" = "Liten (%@)"; +"attachment_medium" = "Mellan (%@)"; +"attachment_large" = "Stor (%@)"; +"attachment_cancel_download" = "Avbryt nedladdningen?"; +"attachment_cancel_upload" = "Avbryt uppladdningen?"; +"attachment_multiselection_size_prompt" = "Vill du skicka bilder som:"; +"attachment_multiselection_original" = "Faktisk storlek"; +"attachment_e2e_keys_file_prompt" = "Den här filen innehåller krypteringsnycklar som har exporteras från en Matrixklient.\nVill du visa filinnehållet eller importera nycklarna som den innehåller?"; +"attachment_e2e_keys_import" = "Importera…"; +// Contacts +"contact_mx_users" = "Matrixanvändare"; +"contact_local_contacts" = "Lokala kontakter"; +// Groups +// Search +"search_no_results" = "Inga resultat"; +"search_searching" = "Sökning pågår…"; +// Time +"format_time_s" = "s"; +"format_time_m" = "m"; +"format_time_h" = "t"; +"format_time_d" = "d"; +// E2E import +"e2e_import_room_keys" = "Importera rumsnycklar"; +"e2e_import_prompt" = "Denna process låter dig importera krypteringsnycklar som du tidigare har exporterat från en annan Matrixklient. Du kommer då kunna avkryptera alla meddelanden som den andra klienten kan avkryptera.\nExportfilen är skyddad med en lösenfras. Du bör ange lösenfrasen här för att avkryptera filen."; +"e2e_import" = "Importera"; +"e2e_passphrase_enter" = "Ange lösenfras"; +// E2E export +"e2e_export_room_keys" = "Exportera rumsnycklar"; +"e2e_export_prompt" = "Denna process låter dig exportera nycklarna för meddelanden som du har fått i krypterade rum till en lokal fil. Du kommer då att kunna importera filen till en annan Matrixklient i framtiden, så att klienten också kan avkryptera dessa meddelanden.\nDen exporterade filen tillåter alla som kan läsa den att avkryptera alla krypterade meddelanden som du kan se, så du bör vara noga med att hålla den säker."; +"e2e_export" = "Exportera"; +"e2e_passphrase_confirm" = "Bekräfta lösenfras"; +"e2e_passphrase_empty" = "Lösenfrasen får inte var tom"; +"e2e_passphrase_not_match" = "Lösenfraserna måste matcha"; +"e2e_passphrase_create" = "Skapa lösenfras"; +// Others +"user_id_title" = "Användar-ID:"; +"offline" = "offline"; +"unsent" = "Oskickad"; +"error" = "Fel"; +"error_common_message" = "Ett fel inträffade. Försök igen senare."; +"not_supported_yet" = "Stöds inte än"; +"default" = "förval"; +"private" = "Privat"; +"public" = "Offentlig"; +"power_level" = "Behörighetsnivå"; +"network_error_not_reachable" = "Vänligen kolla din nätverksuppkoppling"; +"user_id_placeholder" = "t.ex.: @sven:hemserver"; +"ssl_homeserver_url" = "Hemserver-URL: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Videosamtal kräver åtkomst till kameran men %@ är inte behörig att använda den"; +"microphone_access_not_granted_for_call" = "Samtal kräver åtkomst till mikrofonen men %@ är inte behörig att använda den"; +"local_contacts_access_not_granted" = "Upptäckt av användare från lokala kontakter kräver åtkomst till dina kontakter men %@ är inte behörig att komma åt dem"; +"local_contacts_access_discovery_warning_title" = "Användarupptäckt"; +"local_contacts_access_discovery_warning" = "För att upptäcka kontakter som redan använder Matrix kan %@ skicka e-postadresser och telefonnummer i din adressbok till din valda Matrixidentitetsserver. Där det stöds hashas personuppgifter innan de skickas - kontrollera din identitetsservers integritetspolicy för mer information."; +// Country picker +"country_picker_title" = "Välj ett land"; +// Language picker +"language_picker_title" = "Välj ett språk"; +"language_picker_default_language" = "Förval (%@)"; +"notice_room_invite" = "%@ bjöd in %@"; +"notice_room_third_party_invite" = "%@ skickade bjöd in %@ att gå med i rummet"; +"notice_room_third_party_registered_invite" = "%@ accepterade inbjudan för %@"; +"notice_room_third_party_revoked_invite" = "%@ drog tillbaka inbjudan för %@ att gå med i rummet"; +"notice_room_join" = "%@ gick med"; +"notice_room_leave" = "%@ lämnade"; +"notice_room_reject" = "%@ avvisade inbjudan"; +"notice_room_kick" = "%@ tog bort %@"; +"notice_room_unban" = "%@ avbannade %@"; +"notice_room_ban" = "%@ bannade %@"; +"notice_room_withdraw" = "%@ drog tillbaka inbjudan för %@"; +"notice_room_reason" = ". Anledning: %@"; +"notice_avatar_url_changed" = "%@ bytte sin avatar"; +"notice_display_name_set" = "%@ satte sitt visningsnamn till %@"; +"notice_display_name_changed_from" = "%@ bytte sitt visningsnamn från %@ till %@"; +"notice_display_name_removed" = "%@ tog bort sitt visningsnamn"; +"notice_topic_changed" = "%@ bytte ämnet till \"%@\"."; +"notice_room_name_changed" = "%@ bytte rummets namn till %@."; +"notice_placed_voice_call" = "%@ startade ett röstsamtal"; +"notice_placed_video_call" = "%@ startade ett videosamtal"; +"notice_answered_video_call" = "%@ svarade på samtalet"; +"notice_ended_video_call" = "%@ avslutade samtalet"; +"notice_conference_call_request" = "%@ begärde ett VoIP-gruppsamtal"; +"notice_conference_call_started" = "VoIP-gruppsamtal startat"; +"notice_conference_call_finished" = "VoIP-gruppsamtal avslutat"; +// Notice Events with "You" +"notice_room_invite_by_you" = "Du bjöd in %@"; +"notice_room_invite_you" = "%@ bjöd in dig"; +"notice_room_third_party_invite_by_you" = "Du bjöd in %@ att gå med i rummet"; +"notice_room_third_party_registered_invite_by_you" = "Du accepterade inbjudan för %@"; +"notice_room_third_party_revoked_invite_by_you" = "Du drog tillbaka inbjudan för %@ att gå med i rummet"; +"notice_room_join_by_you" = "Du gick med"; +"notice_room_leave_by_you" = "Du lämnade"; +"notice_room_reject_by_you" = "Du avvisade inbjudan"; +"notice_room_kick_by_you" = "Du tog bort %@"; +"notice_room_unban_by_you" = "Du avbannade %@"; +"notice_room_ban_by_you" = "Du bannade %@"; +"notice_room_withdraw_by_you" = "Du drog tillbaka inbjudan för %@"; +"notice_avatar_url_changed_by_you" = "Du bytte din avatar"; +"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_removed_by_you" = "Du tog bort ditt visningsnamn"; +"notice_topic_changed_by_you" = "Du bytte ämnet till \"%@\"."; +"notice_room_name_changed_by_you" = "Du bytte rummets namn till %@."; +"notice_placed_voice_call_by_you" = "Du startade ett röstsamtal"; +"notice_placed_video_call_by_you" = "Du startade ett videosamtal"; +"notice_answered_video_call_by_you" = "Du svarade på samtalet"; +"notice_ended_video_call_by_you" = "Du avslutade samtalet"; +"notice_conference_call_request_by_you" = "Du begärde ett VoIP-gruppsamtal"; +"notice_room_name_removed_by_you" = "Du tog bort rummets namn"; +"notice_room_topic_removed_by_you" = "Du tog bort ämnet"; +"notice_event_redacted_by_you" = " av dig"; +"notice_profile_change_redacted_by_you" = "Du uppdaterade din profil %@"; +"notice_room_created_by_you" = "Du skapade och konfigurerade rummet."; +"notice_encryption_enabled_ok_by_you" = "Du aktiverade totalsträckskryptering."; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Du aktiverade totalsträckskryptering (okänd algoritm %@)."; +"notice_redaction_by_you" = "Du dolde en händelse (id: %@)"; +"notice_room_history_visible_to_anyone_by_you" = "Du gjorde framtida rumshistorik synlig för alla."; +"notice_room_history_visible_to_members_by_you" = "Du gjorde framtida rumshistorik synlig för alla rumsmedlemmar."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Du gjorde framtida rumshistorik synlig för alla rumsmedlemmar från när de bjöds in."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Du gjorde framtida rumshistorik synlig för alla rumsmedlemmar från när de gick med."; +// button names +"send" = "Skicka"; +"copy_button_name" = "Kopiera"; +"resend" = "Skicka igen"; +"redact" = "Ta bort"; +"share" = "Dela"; +"delete" = "Radera"; +// actions +"action_logout" = "Logga ut"; +"create_room" = "Skapa rum"; +"login" = "Logga in"; +"create_account" = "Skapa konto"; +"membership_invite" = "Inbjuden"; +"membership_leave" = "Lämnade"; +"membership_ban" = "Bannade"; +"num_members_one" = "%@ användare"; +"num_members_other" = "%@ användare"; +"kick" = "Ta bort från chatten"; +"ban" = "Banna"; +"unban" = "Avbanna"; +"message_unsaved_changes" = "Det finns osparade ändringar. Att lämna kommer att slänga dem."; +// Login Screen +"login_error_already_logged_in" = "Redan inloggad"; +"login_error_must_start_http" = "URL:en måste börja på http[s]://"; +// room details dialog screen +// contacts list screen +"invitation_message" = "Jag vill chatta med dig på Matrix. Besök sidan https://matrix.org för mer information."; +// Settings screen +"settings_title_config" = "Konfiguration"; +"settings_title_notifications" = "Aviseringar"; +// Notification settings screen +"notification_settings_disable_all" = "Inaktivera alla aviseringar"; +"notification_settings_enable_notifications" = "Aktivera aviseringar"; +"notification_settings_enable_notifications_warning" = "Alla aviseringar är för närvarande inaktiverade för alla enheter."; +"notification_settings_global_info" = "Aviseringsinställningar sparas i ditt användarkonto och delas mellan alla klienter som stöder dem (inklusive skrivbordsaviseringar).\n\nRegler tillämpas i ordning; den första regeln som matchar definierar resultatet för meddelandet.\nSå: Aviseringar per ord är viktigare än aviseringar per rum som är viktigare än aviseringar per avsändare.\nFör flera regler av samma slag prioriteras den första i listan som matchar."; +"notification_settings_per_word_notifications" = "Aviseringar per ord"; +"notification_settings_per_word_info" = "Matchning av ord är inte skiftlägeskänsligt, och kan innehålla ett jokertecken (*). Så:\nfoo matchar strängen foo omgiven av ordavgränsare (t.ex. skiljetecken och mellanslag eller start/slut på rad).\nfoo* matchar alla ord som börjar foo.\n*foo* matchar alla ord som innehåller de tre bokstäverna foo."; +"notification_settings_always_notify" = "Avisera alltid"; +"notification_settings_never_notify" = "Avisera aldrig"; +"notification_settings_word_to_match" = "ord att matcha"; +"notification_settings_highlight" = "Markera"; +"notification_settings_custom_sound" = "Anpassade ljud"; +"notification_settings_per_room_notifications" = "Aviseringar per rum"; +"notification_settings_per_sender_notifications" = "Aviseringar per avsändare"; +"notification_settings_sender_hint" = "@användare:domän.com"; +"notification_settings_select_room" = "Välj ett rum"; +"notification_settings_other_alerts" = "Andra larm"; +"notification_settings_contain_my_user_name" = "Avisera mig med ett ljud om meddelande som innehåller mitt användarnamn"; +"notification_settings_contain_my_display_name" = "Avisera mig med ett ljud om meddelande som innehåller mitt visningsnamn"; +"notification_settings_just_sent_to_me" = "Avisera med ett ljud om meddelanden skickade till bara mig"; +"notification_settings_invite_to_a_new_room" = "Avisera mig när jag bjuds in till ett nytt rum"; +"notification_settings_people_join_leave_rooms" = "Avisera mig när personer går med i eller lämnar rum"; +"notification_settings_receive_a_call" = "Avisera mig när jag får ett samtal"; +"notification_settings_suppress_from_bots" = "Dämpa aviseringar från bottar"; +"notification_settings_by_default" = "Som förval…"; +"notification_settings_notify_all_other" = "Avisera för alla andra meddelanden/rum"; +// gcm section +// call string +"call_waiting" = "Väntar…"; +"call_connecting" = "Ansluter…"; +"call_ended" = "Samtal avslutat"; +"call_ring" = "Ringer…"; +"incoming_video_call" = "Inkommande videosamtal"; +"incoming_voice_call" = "Inkommande röstsamtal"; +"call_invite_expired" = "Samtalsinbjudan har löpt ut"; +// unrecognized SSL certificate +"ssl_trust" = "Lita"; +"ssl_logout_account" = "Logga ut"; +"ssl_remain_offline" = "Ignorera"; +"ssl_fingerprint_hash" = "Fingeravtryck (%@):"; +"ssl_could_not_verify" = "Kunde inte verifiera fjärrserverns identitet."; +"ssl_cert_not_trust" = "Det kan betyda att någon genskjuter din trafik eller att din telefon inte litar på certifikatet från fjärrservern."; +"ssl_cert_new_account_expl" = "Om serveradministratören har sagt att detta förväntas, kolla att fingeravtrycket nedan matchar det fingeravtryck som de tillhandahåller."; +"ssl_unexpected_existing_expl" = "Certifikatet har ändrats från ett som din telefon litade på. Detta är MYCKET OVANLIGT. Det rekommenderas att du INTE ACCEPTERAR detta nya certifikat."; +"ssl_expected_existing_expl" = "Certifikatet har ändrats från ett som din telefon litade på till ett som inte är betrott. Servern kan ha förnyat sitt certifikat. Kontakta serveradministratören för det förväntade fingeravtrycket."; +"ssl_only_accept" = "Acceptera ENDAST certifikatet om serveradministratören har publicerat ett fingeravtryck som matchar ovanstående."; +"notice_room_name_removed_for_dm" = "%@ tog bort namnet"; +"notice_room_created_for_dm" = "%@ gick med."; +// New +"notice_room_join_rule_invite" = "%@ ändrade rummet till endast inbjudna."; +"notice_room_join_rule_invite_for_dm" = "%@ ändrade detta till endast inbjudna."; +"notice_room_join_rule_invite_by_you" = "Du ändrade rummet till endast inbjudna."; +"notice_room_join_rule_invite_by_you_for_dm" = "Du ändrade detta till endast inbjudna."; +"notice_room_join_rule_public" = "%@ gjorde rummet offentligt."; +"notice_room_join_rule_public_for_dm" = "%@ gjorde detta offentligt."; +"notice_room_join_rule_public_by_you" = "Du gjorde rummet offentligt."; +"notice_room_join_rule_public_by_you_for_dm" = "Du gjorde detta offentligt."; +"notice_room_power_level_intro_for_dm" = "Behörighetsnivå för medlemmar är:"; +"notice_room_aliases_for_dm" = "Aliasen är: %@"; +"notice_room_history_visible_to_members_for_dm" = "%@ gjorde framtida meddelanden synliga för alla rumsmedlemmar."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ gjorde framtida meddelanden synliga för alla från när de bjöds in."; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ gjorde framtida meddelanden synliga för alla från när de gick med."; +"room_left_for_dm" = "Du lämnade"; +"notice_room_third_party_invite_for_dm" = "%@ bjöd in %@"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ drog tillbaka inbjudan för %@"; +"notice_room_name_changed_for_dm" = "%@ bytte namnet till %@."; +"notice_room_third_party_invite_by_you_for_dm" = "Du bjöd in %@"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Du drog tillbaka inbjudan för %@"; +"notice_room_name_changed_by_you_for_dm" = "Du bytte namnet till %@."; +"notice_room_name_removed_by_you_for_dm" = "Du tog bort namnet"; +"notice_room_created_by_you_for_dm" = "Du gick med."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Du gjorde framtida meddelanden synliga för alla rumsmedlemmar."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Du gjorde framtida meddelanden synliga för alla från när de bjöds in."; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Du gjorde framtida meddelanden synliga för alla från när de gick med."; +"call_more_actions_dialpad" = "Knappsats"; +"call_more_actions_transfer" = "Överför"; +"call_more_actions_audio_use_device" = "Enhetshögtalare"; +"call_more_actions_audio_use_headset" = "Använd headsetljud"; +"call_more_actions_change_audio_device" = "Byt ljudenhet"; +"call_more_actions_unhold" = "Återuppta"; +"call_more_actions_hold" = "Parkera"; +"call_holded" = "Du parkerade samtalet"; +"call_remote_holded" = "%@ parkerade samtalet"; +"notice_declined_video_call_by_you" = "Du avslog samtalet"; +"notice_declined_video_call" = "%@ avslog samtalet"; +"resume_call" = "Återuppta"; +"call_transfer_to_user" = "Överför till %@"; +"call_consulting_with_user" = "Rådfrågar %@"; +"call_video_with_user" = "Videosamtal med %@"; +"call_voice_with_user" = "Röstsamtal med %@"; +"call_ringing" = "Ringer…"; +"e2e_passphrase_too_short" = "Lösenfras för kort (den måste vara minst %d tecken långt)"; +"microphone_access_not_granted_for_voice_message" = "Röstmeddelanden kräver åtkomst till mikrofonen, men %@ är inte behörig att använda den"; +"message_reply_to_sender_sent_a_voice_message" = "skickade ett röstmeddelande."; +"attachment_large_with_resolution" = "Stor %@ (~%@)"; +"attachment_medium_with_resolution" = "Mellan %@ (~%@)"; +"attachment_small_with_resolution" = "Liten %@ (~%@)"; +"attachment_size_prompt_message" = "Du kan stänga av detta i inställningarna."; +"attachment_size_prompt_title" = "Bekräfta storlek att skicka"; +"room_displayname_all_other_participants_left" = "%@ (Kvar)"; +"attachment_unsupported_preview_message" = "Den här filtypen stöds inte."; +"attachment_unsupported_preview_title" = "Kunde inte förhandsgranska"; +"room_displayname_all_other_members_left" = "%@ (Kvar)"; +"message_reply_to_sender_sent_their_location" = "har delat sin plats."; diff --git a/Riot/Assets/szl.lproj/Vector.strings b/Riot/Assets/szl.lproj/Vector.strings index 8b1378917..e3dbb85af 100644 --- a/Riot/Assets/szl.lproj/Vector.strings +++ b/Riot/Assets/szl.lproj/Vector.strings @@ -1 +1,7 @@ + + +// MARK: - MatrixKit + + + diff --git a/Riot/Assets/tzm.lproj/Vector.strings b/Riot/Assets/tzm.lproj/Vector.strings index 229ee0c32..1845b8c52 100644 --- a/Riot/Assets/tzm.lproj/Vector.strings +++ b/Riot/Assets/tzm.lproj/Vector.strings @@ -12,3 +12,21 @@ "invite" = "Ɣer"; "remove" = "Kkes"; "title_people" = "Midden"; + + +// MARK: - MatrixKit + + + + + +"notice_event_redacted_by" = " Sɣur %@"; +"yes" = "Yah"; + +// Action +"no" = "Uhu"; +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "Matrix"; diff --git a/Riot/Assets/uk.lproj/Vector.strings b/Riot/Assets/uk.lproj/Vector.strings index d3fa52880..dc6711737 100644 --- a/Riot/Assets/uk.lproj/Vector.strings +++ b/Riot/Assets/uk.lproj/Vector.strings @@ -1770,3 +1770,563 @@ "room_event_copy_link_info" = "Посилання скопійовано до буфера обміну."; "room_event_action_reply_in_thread" = "Тред"; "room_event_action_view_in_room" = "Переглянути у кімнаті"; +"location_sharing_open_open_street_maps" = "Відкрити у OpenStreetMap"; +"search_filter_placeholder" = "Фільтр"; +"onboarding_use_case_existing_server_button" = "Під'єднатися до сервера"; +"onboarding_use_case_existing_server_message" = "Бажаєте приєднатися до наявного сервера?"; +"onboarding_use_case_skip_button" = "пропустити це запитання"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Ще не впевнені? Ви можете %@"; +"onboarding_use_case_community_messaging" = "Спільноти"; +"onboarding_use_case_work_messaging" = "Команди"; +"onboarding_use_case_personal_messaging" = "Друзі й родина"; +"onboarding_use_case_message" = "Ми допоможемо вам залишатися на зв'язку."; +"onboarding_use_case_title" = "З ким ви спілкуватиметеся найчастіше?"; + + +// MARK: - MatrixKit + + + + +"resend" = "Повторно надіслати"; +"delete" = "Видалити"; +"share" = "Поділитися"; +"redact" = "Вилучити"; +"copy_button_name" = "Копіювати"; +"send" = "Надіслати"; +"register_error_title" = "Поле реєстрації"; +"login_invalid_param" = "Недійсний параметр"; +"login_leave_fallback" = "Скасувати"; +"submit" = "Надіслати"; +"sign_up" = "Зареєструватися"; +"unban" = "Розблокувати"; +"ban" = "Заблокувати"; +"kick" = "Вилучити з бесіди"; +"discard" = "Відхилити"; +"login_server_url_placeholder" = "URL (наприклад, https://matrix.org)"; + +// Login Screen +"login_create_account" = "Створіть обліковий запис:"; +/* *********************** */ +/* iOS specific */ +/* *********************** */ + +"matrix" = "Matrix"; + +// Events formatter +"notice_avatar_changed_too" = "(аватар теж змінено)"; +"unignore" = "Не нехтувати"; +"ignore" = "Нехтувати"; +"resume_call" = "Продовжити"; +"end_call" = "Завершити виклик"; +"reject_call" = "Відхилити виклик"; +"answer_call" = "Відповісти на виклик"; +"show_details" = "Показати подробиці"; +"cancel_download" = "Скасувати завантаження"; +"cancel_upload" = "Скасувати вивантаження"; +"select_all" = "Вибрати всі"; +"resend_message" = "Повторити надсилання повідомлення"; +"reset_to_default" = "Скинути до типових"; +"invite_user" = "Запросити користувача matrix"; +"capture_media" = "Зробити знімок/зафільмувати"; +"attach_media" = "Долучити медіа з бібліотеки"; +"select_account" = "Вибрати обліковий запис"; +"mention" = "Згадати"; +"start_video_call" = "Розпочати відеовиклик"; +"start_voice_call" = "Розпочати голосовий виклик"; +"start_chat" = "Почати бесіду"; +"set_admin" = "Призначити адміністратора"; +"set_moderator" = "Призначити модератора"; +"set_default_power_level" = "Скинути рівень повноважень"; +"set_power_level" = "Визначити рівень повноважень"; +"submit_code" = "Надіслати код"; +"dismiss" = "Відхилити"; +"abort" = "Перервати"; +"yes" = "Так"; + +// Action +"no" = "Ні"; +"login_error_resource_limit_exceeded_contact_button" = "Зв'язатися з адміністратором"; +"login_error_resource_limit_exceeded_message_contact" = "\n\nЗверніться до адміністратора своєї служби, щоб продовжувати користуватися нею."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Цей домашній сервер досяг свого місячного обмеження активних користувачів."; +"login_error_resource_limit_exceeded_message_default" = "Цей домашній сервер перевищив одне з обмежень ресурсів."; +"login_error_resource_limit_exceeded_title" = "Обмеження ресурсів перевищено"; +"login_desktop_device" = "Комп'ютер"; +"login_tablet_device" = "Планшет"; +"login_mobile_device" = "Мобільний"; +"login_error_forgot_password_is_not_supported" = "Відновлення пароля зараз не підтримується"; +"login_use_fallback" = "Застосувати запасну сторінку"; +"login_error_login_email_not_yet" = "Посилання на електронну адресу, на яке ще не клацнули"; +"login_error_user_in_use" = "Це ім'я користувача вже використовується"; +"login_error_limit_exceeded" = "Було надіслано забагато запитів"; +"login_error_not_json" = "Не містить дійсного JSON"; +"login_error_bad_json" = "Неправильний синтаксис JSON"; +"login_error_unknown_token" = "Вказаний ключ доступу не було розпізнано"; +"login_error_forbidden" = "Не правильне ім'я користувача/пароль"; +"login_error_registration_is_not_supported" = "На цей час реєстрація не підтримується"; +"login_error_no_login_flow" = "Не вдалося отримати дані автентифікації з цього домашнього сервера"; +"login_error_title" = "Не вдалося увійти"; +"login_prompt_email_token" = "Введіть ключ підтвердження електронної пошти:"; +"login_email_placeholder" = "Адреса е-пошти"; +"login_email_info" = "Вкажіть адресу електронної пошти, щоб інші користувачі могли легше знаходити вас на Matrix і надання вам можливості відновити пароль у майбутньому."; +"login_display_name_placeholder" = "Видиме ім'я (наприклад Bob Obson)"; +"login_optional_field" = "необов'язково"; +"login_password_placeholder" = "Пароль"; +"login_user_id_placeholder" = "Ідентифікатор Matrix (наприклад @bob:matrix.org або bob)"; +"login_identity_server_info" = "Matrix забезпечує сервери ідентифікації для відстеження, до яких ідентифікаторів Matrix, які електронні листи належать. Наразі доступно лише для https://matrix.org."; +"login_identity_server_title" = "URL-адреса сервера ідентифікації:"; +"login_home_server_info" = "Ваш домашній сервер зберігає всі ваші розмови та дані облікового запису"; +"login_home_server_title" = "URL-адреса домашнього сервера:"; +"notice_room_power_level_intro_for_dm" = "Рівні повноважень учасників:"; +"notice_room_power_level_intro" = "Рівні повноважень учасників кімнати:"; +"notice_room_join_rule_public_by_you_for_dm" = "Ви дозволяєте доступ всім."; +"notice_room_join_rule_public_by_you" = "Ви дозволяєте доступ до кімнати всім."; +"notice_room_join_rule_public_for_dm" = "%@ дозволяє доступ всім."; +"notice_room_join_rule_public" = "%@ дозволяє доступ до кімнати всім."; +"notice_room_join_rule_invite_by_you_for_dm" = "Ви забороняєте доступ всім, окрім запрошених."; +"notice_room_join_rule_invite_by_you" = "Ви забороняєте доступ до кімнати всім, окрім запрошених."; +// New +"notice_room_join_rule_invite" = "%@ забороняє доступ до кімнати всім, окрім запрошених."; +"notice_room_join_rule_invite_for_dm" = "%@ забороняє доступ всім, окрім запрошених."; +// Old +"notice_room_join_rule" = "Правило приєднання: %@"; +"notice_room_created_for_dm" = "%@ приєднується."; +"notice_room_created" = "%@ створює і налаштовує кімнату."; +"notice_profile_change_redacted" = "%@ оновлює свій профіль %@"; +"notice_event_redacted_reason" = " [причина: %@]"; +"notice_event_redacted_by" = " від %@"; +"notice_event_redacted" = "<змінено%@>"; +"notice_room_topic_removed" = "%@ вилучає тему"; +"notice_room_name_removed_for_dm" = "%@ вилучає назву"; +"notice_room_name_removed" = "%@ вилучає назву кімнати"; +"login_error_do_not_support_login_flows" = "Наразі ми не підтримуємо один або кілька потоків авторизації, визначених цим домашнім сервером"; +"notification_settings_never_notify" = "Ніколи не сповіщати"; +"notification_settings_always_notify" = "Завжди сповіщати"; + +// members list Screen + +// accounts list Screen + +// image size selection + +// invitation members list Screen + +// room creation dialog Screen + +// room info dialog Screen + +// room details dialog screen +"login_error_must_start_http" = "URL-адреса повинна починатися з http[s]://"; +"num_members_other" = "%@ користувачів"; +"num_members_one" = "%@ користувач"; +"membership_invite" = "Запрошено"; +"create_account" = "Створити обліковий запис"; +"login" = "Увійти"; +"create_room" = "Створити кімнату"; +"call_video_with_user" = "Відеовиклик з %@"; +"call_voice_with_user" = "Голосовий виклик з %@"; +"ssl_fingerprint_hash" = "Відбиток (%@):"; +"ssl_remain_offline" = "Нехтувати"; +"ssl_logout_account" = "Вийти"; + +// actions +"action_logout" = "Вийти"; + +// Room Screen + +// general errors + +// Home Screen + +// Last seen time + +// call events + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /console/src/main/res/values/strings.xml. +*/ + + +// titles + +// button names +"notice_declined_video_call_by_you" = "Ви відхилили виклик"; +"notice_ended_video_call_by_you" = "Ви завершили виклик"; +"notice_avatar_url_changed_by_you" = "Ви змінили свій аватар"; +"notice_room_kick_by_you" = "Ви вилучили %@"; +"notice_room_invite_you" = "%@ запрошує вас"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "Ви запросили %@"; +"notice_room_third_party_invite_by_you_for_dm" = "Ви запросили %@"; +"notice_room_reason" = ". Причина: %@"; +"notice_room_third_party_registered_invite" = "%@ приймає запрошення від %@"; +"notice_room_third_party_invite_for_dm" = "%@ запрошує %@"; + +/* -*- + Automatic localization for en + + The following key/value pairs were extracted from the android i18n file: + /matrix-sdk/src/main/res/values/strings.xml. +*/ + +"notice_room_invite" = "%@ запрошує %@"; +"ssl_homeserver_url" = "URL-адреса домашнього сервера: %@"; +"user_id_placeholder" = "наприклад: @bob:homeserver"; +"network_error_not_reachable" = "Перевірте під'єднання до мережі"; +"power_level" = "Рівень повноважень"; +"public" = "Загальнодоступний"; +"private" = "Приватний"; +"default" = "типово"; +"not_supported_yet" = "Поки що не підтримується"; +"error_common_message" = "Сталася помилка. Повторіть спробу пізніше."; +"error" = "Помилка"; +"membership_ban" = "Заблоковано"; +"notice_room_ban_by_you" = "Ви заблокували %@"; +"notice_room_unban_by_you" = "Ви розблокували %@"; +"notice_room_ban" = "%@ блокує %@"; +"notice_room_unban" = "%@ розблоковує %@"; +"call_invite_expired" = "Запрошення на виклик не чинне"; +"incoming_voice_call" = "Вхідний голосовий виклик"; +"incoming_video_call" = "Вхідний відеовиклик"; +"call_ended" = "Виклик завершено"; +"call_ringing" = "Виклик…"; + +// Settings keys + +// call string +"call_connecting" = "З'єднання…"; + +// gcm section +"notification_settings_other_alerts" = "Інші попередження"; +"notification_settings_select_room" = "Вибрати кімнату"; +"notification_settings_sender_hint" = "@user:domain.com"; +"notification_settings_enable_notifications_warning" = "Наразі всі сповіщення вимкнено для всіх пристроїв."; +"notification_settings_enable_notifications" = "Увімкнути сповіщення"; + +// Notification settings screen +"notification_settings_disable_all" = "Вимкнути сповіщення"; +"settings_title_notifications" = "Сповіщення"; + +// Settings +"settings" = "Налаштування"; +"room_displayname_more_than_two_members" = "%@ і %@ інших"; +"room_displayname_two_members" = "%@ і %@"; + +// room display name +"room_displayname_empty_room" = "Порожня кімната"; +"notice_sticker" = "наліпка"; +"notice_unsupported_attachment" = "Непідтримуване вкладення: %@"; +"notice_file_attachment" = "прикріплений файл"; +"notice_location_attachment" = "прикріплене місцеперебування"; +"notice_video_attachment" = "прикріплене відео"; +"notice_audio_attachment" = "прикріплене аудіо"; +"notice_image_attachment" = "прикріплене зображення"; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ вмикає наскрізне шифрування (нерозпізнаний алгоритм %2$@)."; +"notice_encryption_enabled_ok" = "%@ вмикає наскрізне шифрування."; +"notice_encrypted_message" = "Зашифроване повідомлення"; +"notice_avatar_url_changed" = "%@ змінює свій аватар"; + +// Settings screen +"settings_title_config" = "Конфігурація"; + +// Others +"user_id_title" = "ID користувача:"; +"e2e_export" = "Експорт"; +"e2e_import" = "Імпорт"; +"search_searching" = "Триває пошук..."; + +// Search +"search_no_results" = "Немає результатів"; + +// Groups +"contact_local_contacts" = "Локальні контакти"; + +// Contacts +"contact_mx_users" = "Користувачі Matrix"; +"attachment_e2e_keys_import" = "Імпорт..."; +"attachment_multiselection_original" = "Справжній розмір"; +"attachment_multiselection_size_prompt" = "Хочете надіслати зображення як:"; +"attachment_cancel_upload" = "Скасувати вивантаження?"; +"attachment_cancel_download" = "Скасувати завантаження?"; +"attachment_large" = "Великий (~%@)"; +"attachment_medium" = "Середній (~%@)"; +"attachment_small" = "Маленький (~%@)"; +"attachment_original" = "Справжній розмір (%@)"; + +// Attachment +"attachment_size_prompt" = "Бажаєте надіслати:"; +"message_reply_to_sender_sent_a_file" = "надсилає файл."; +"message_reply_to_sender_sent_an_audio_file" = "надсилає звуковий файл."; +"message_reply_to_sender_sent_a_voice_message" = "надсилає голосове повідомлення."; +"message_reply_to_sender_sent_a_video" = "надсилає відео."; + +// Reply to message +"message_reply_to_sender_sent_an_image" = "надсилає зображення."; + +// E2E import +"e2e_import_room_keys" = "Імпорт ключів кімнати"; +"format_time_d" = "д"; +"format_time_h" = "год"; +"format_time_m" = "хв"; + +// Time +"format_time_s" = "с"; +"room_error_join_failed_title" = "Не вдалося приєднатися до кімнати"; + +// Room +"room_please_select" = "Виберіть кімнату"; +"room_creation_participants_placeholder" = "(наприклад @bob:homeserver1; @john:homeserver2...)"; +"room_creation_participants_title" = "Учасники:"; +"room_creation_name_placeholder" = "(наприклад lunchGroup)"; + +// Room creation +"room_creation_name_title" = "Назва кімнати:"; +"room_event_encryption_info_device_fingerprint" = "Відбиток Ed25519\n"; +"room_event_encryption_info_event_unencrypted" = "незашифровано"; +"room_event_encryption_info_event_decryption_error" = "Помилка розшифрування\n"; +"room_event_encryption_info_event_session_id" = "ID сеансу\n"; +"room_event_encryption_info_event_algorithm" = "Алгоритм\n"; +"room_event_encryption_info_event_identity_key" = "Ключ ідентифікації Curve25519\n"; +"room_event_encryption_info_event_user_id" = "ID користувача\n"; +"room_event_encryption_info_event" = "Відомості про подію\n"; + +// Encryption information +"room_event_encryption_info_title" = "Відомості про наскрізне шифрування\n\n"; +"device_details_rename_prompt_title" = "Назва сеансу"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_identifier" = "ID\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_name" = "Загальнодоступна назва\n"; +"device_details_name" = "Загальнодоступна назва\n"; + +// Devices +"device_details_title" = "Відомості про сеанс\n"; +"notification_settings_room_rule_title" = "Кімната: '%@'"; +"notice_in_reply_to" = "У відповідь на"; +"message_reply_to_message_to_reply_to_prefix" = "У відповідь на"; +"notice_crypto_unable_to_decrypt" = "** Не вдалося розшифрувати: %@ **"; +"notice_error_unknown_event_type" = "Невідомий тип події"; +"notice_error_unexpected_event" = "Неочікувана подія"; +"notice_error_unsupported_event" = "Непідтримувана подія"; +"notice_invalid_attachment" = "неприпустиме вкладення"; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ робить майбутню історію повідомлень видимою всім від часу їхнього приєднання."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ робить майбутню історію кімнати видимою всім учасникам кімнати від часу їхнього приєднання."; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ робить майбутню історію повідомлень видимою всім від часу їхнього запрошення."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ робить майбутню історію кімнати видимою усім учасникам кімнати від часу їхнього запрошення."; +"notice_room_history_visible_to_members_for_dm" = "%@ робить майбутню історію повідомлень видимою усім учасникам кімнати."; +"notice_room_history_visible_to_members" = "%@ робить майбутню історію кімнати видимою усім учасникам кімнати."; +"notice_room_history_visible_to_anyone" = "%@ робить майбутню історію кімнати видимою усім."; +"notice_redaction" = "%@ редагує подію (id: %@)"; +"notice_feedback" = "Подія відгуку (id: %@): %@"; +"notice_room_related_groups" = "Групи пов'язані з цією кімнатою: %@"; +"notice_room_power_level_acting_requirement" = "Мінімальний рівень повноважень користувача для виконання дії:"; +"notification_settings_by_default" = "Типово..."; +"membership_leave" = "Виходить"; +"notice_redaction_by_you" = "Ви відредагували подію (id: %@)"; +"notice_encryption_enabled_unknown_algorithm_by_you" = "Ви ввімкнули наскрізне шифрування (нерозпізнаний алгоритм %@)."; +"notice_encryption_enabled_ok_by_you" = "Ви ввімкнули наскрізне шифрування."; +"notice_room_created_by_you_for_dm" = "Ви приєдналися."; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "Ви відкликали запрошення для %@"; +"notice_room_third_party_revoked_invite_by_you" = "Ви відкликали запрошення приєднатися до кімнати для %@"; +"notice_room_third_party_registered_invite_by_you" = "Ви прийняли запрошення для %@"; +"notice_room_withdraw_by_you" = "Ви анулювали запрошення для %@"; +"notice_room_reject_by_you" = "Ви відхилили запрошення"; +"notice_room_third_party_invite_by_you" = "Ви надіслали запрошення приєднатися до кімнати для %@"; +"notice_room_name_changed_for_dm" = "%@ змінює назву на %@."; +"notice_room_name_changed" = "%@ змінює назву кімнати на %@."; +"notice_topic_changed" = "%@ змінює тему на «%@»."; +"notice_display_name_removed" = "%@ вилучає своє показуване ім'я"; +"notice_display_name_changed_from" = "%@ змінює своє показуване ім'я з %@ на %@"; +"notice_display_name_set" = "%@ встановлює своїм показуваним іменем %@"; +"notice_room_withdraw" = "%@ анульовує запрошення для %@"; +"notice_room_kick" = "%@ вилучає %@"; +"notice_room_reject" = "%@ відхиляє запрошення"; +"notice_room_leave" = "%@ виходить"; +"notice_room_join" = "%@ приєднується"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ відкликає запрошення для %@"; +"notice_room_third_party_revoked_invite" = "%@ відкликає запрошення приєднатися до кімнати для %@"; +"notice_room_third_party_invite" = "%@ надсилає запрошення приєднатися до кімнати для %@"; +"microphone_access_not_granted_for_voice_message" = "Для голосових повідомлень потрібен доступ до мікрофона, але %@ не має дозволу на його використання"; +"microphone_access_not_granted_for_call" = "Для викликів потрібен доступ до мікрофона, але %@ не має дозволу на його використання"; + +// Permissions +"camera_access_not_granted_for_call" = "Для відеовикликів потрібен доступ до камери, але %@ не має дозволу на її використання"; +"language_picker_default_language" = "Типово (%@)"; + +// Language picker +"language_picker_title" = "Виберіть мову"; + +// Country picker +"country_picker_title" = "Виберіть країну"; +"notice_room_join_by_you" = "Ви приєдналися"; +"notice_room_leave_by_you" = "Ви вийшли"; +"room_left_for_dm" = "Ви вийшли"; +"room_left" = "Ви вийшли з кімнати"; +"call_more_actions_unhold" = "Продовжити"; +"call_more_actions_change_audio_device" = "Змінити звуковий пристрій"; +"call_more_actions_audio_use_device" = "Гучномовець пристрою"; +"call_more_actions_transfer" = "Переведення"; +"call_more_actions_dialpad" = "Номеронабирач"; +"call_transfer_to_user" = "Передавання до %@"; + +// unrecognized SSL certificate +"ssl_trust" = "Довіряти"; + +// Account +"account_save_changes" = "Зберегти зміни"; +"room_event_encryption_info_unblock" = "Видалити з чорного списку"; +"room_event_encryption_info_block" = "Чорний список"; +"room_event_encryption_info_device_blocked" = "У чорному списку"; +"room_event_encryption_info_device_unknown" = "невідомий сеанс\n"; +"room_event_encryption_info_device" = "\nВідомості про сеанс відправника\n"; +"device_details_delete_prompt_title" = "Автентифікація"; +"settings_enter_validation_token_for" = "Введіть токен підтвердження для %@:"; +"settings_enable_push_notifications" = "Увімкнути push-сповіщення"; +"settings_enable_inapp_notifications" = "Увімкнути сповіщення в застосунку"; +"room_displayname_all_other_participants_left" = "%@ (виходить)"; +"notice_crypto_error_unknown_inbound_session_id" = "Сеанс відправника не надіслав нам ключі для цього повідомлення."; +"notice_room_power_level_event_requirement" = "Найнижчий рівень повноважень пов'язаний з подією:"; +"notification_settings_global_info" = "Налаштування сповіщень зберігаються у вашому обліковому записі й спільні для всіх клієнтів, які їх підтримують (включно зі сповіщеннями стільниці).\n\nПравила застосовуються по черзі; спочатку надсилається повідомлення першого збігу з правилом.\nОтже: сповіщення для кожного слова важливіші за сповіщення для кожної кімнати, які важливіші за сповіщення від кожного відправника.\nДля кількох правил одного виду важливіше перше у списку."; +"notification_settings_per_word_notifications" = "Сповіщення для кожного слова"; +"notification_settings_per_word_info" = "Слова збігу не чутливі до регістру й можуть містити символ *. Так:\nfoo збігається з рядком foo, оточеним роздільниками слів (наприклад, розділовими знаками та пробілами або початком/кінцем рядка).\nfoo* збігається з будь-яким таким словом, яке починається з foo.\n*foo* збігається з будь-яким таким словом, яке містить три букви foo."; +"notification_settings_word_to_match" = "слово збігу"; +"notification_settings_highlight" = "Підсвічування"; +"notification_settings_per_room_notifications" = "Сповіщення від кожної кімнати"; +"notification_settings_per_sender_notifications" = "Сповіщення про кожного відправника"; +"notification_settings_contain_my_user_name" = "Сповіщати звуком про повідомлення, що містять моє ім'я користиувача"; +"notification_settings_contain_my_display_name" = "Сповіщати звуком про повідомлення, що містять моє показуване ім'я"; +"notification_settings_just_sent_to_me" = "Сповіщати звуком про надіслані лише мені повідомлення"; +"notification_settings_invite_to_a_new_room" = "Сповіщати про запрошення до нових кімнат"; +"notification_settings_people_join_leave_rooms" = "Сповіщати, коли люди приєднуються чи виходять з кімнат"; +"notification_settings_receive_a_call" = "Сповіщати про виклики"; +"notification_settings_suppress_from_bots" = "Приховувати сповіщень від ботів"; +"notification_settings_notify_all_other" = "Сповіщати про всі інші повідомлення/кімнати"; +"notification_settings_custom_sound" = "Власний звук"; +"account_error_push_not_allowed" = "Сповіщення не дозволені"; +"account_error_msisdn_wrong_description" = "Це не схоже на правильний номер телефону"; +"account_error_msisdn_wrong_title" = "Неправильний номер телефону"; +"account_error_email_wrong_description" = "Це не схоже на правильну адресу е-пошти"; +"account_error_email_wrong_title" = "Неправильна адреса е-пошти"; +"account_error_matrix_session_is_not_opened" = "Сеанс Matrix не відкрито"; +"account_error_picture_change_failed" = "Не вдалося змінити зображення"; +"account_error_display_name_change_failed" = "Не вдалося змінити показуване ім'я"; +"account_msisdn_validation_error" = "Не вдалося перевірити номер телефону."; +"account_email_validation_title" = "Очікування перевірки"; +"account_msisdn_validation_title" = "Очікування перевірки"; +"account_msisdn_validation_message" = "Ми надіслали СМС із кодом активації. Введіть цей код унизу."; +"account_linked_emails" = "Пов'язані адреси е-пошти"; +"account_link_email" = "Пов'язати е-пошту"; +"room_event_encryption_verify_ok" = "Звірити"; +"room_event_encryption_info_device_not_verified" = "НЕ звірений"; +"room_event_encryption_info_device_verified" = "Звірений"; +"room_event_encryption_verify_title" = "Звірити сеанс\n\n"; +"room_event_encryption_info_unverify" = "Скасувати перевірку"; +"room_event_encryption_info_verify" = "Звірити..."; +"room_event_encryption_info_device_verification" = "Перевірка\n"; +"room_event_encryption_info_event_none" = "нічого"; +"room_event_encryption_info_event_fingerprint_key" = "Потрібен ключ цифрового відбитка Ed25519\n"; +"device_details_delete_prompt_message" = "Виконання цієї дії вимагає додаткової автентифікації.\nЩоб продовжити, введіть свій пароль."; +"device_details_rename_prompt_message" = "Загальнодоступну назву сеансу бачать люди, з якими ви спілкуєтесь"; +"device_details_last_seen" = "Останні відвідини\n"; +"notice_room_aliases_for_dm" = "Псевдоніми: %@"; +"notice_room_aliases" = "Псевдо кімнати: %@"; +"unsent" = "Не надіслано"; +"offline" = "не в мережі"; +"e2e_passphrase_create" = "Створити парольну фразу"; +"e2e_passphrase_not_match" = "Парольні фрази повинні збігатися"; +"e2e_passphrase_too_short" = "Парольна фраза закоротка (Її довжина повинна складати принаймні %d символів)"; + +// E2E export +"e2e_export_room_keys" = "Експорт ключів кімнати"; +"e2e_passphrase_enter" = "Введіть парольну фразу"; +"e2e_passphrase_empty" = "Парольна фраза не повинна бути порожньою"; +"e2e_passphrase_confirm" = "Підтвердити парольну фразу"; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Ви зробили майбутні повідомлення кімнати видимими будь-кому від часу їхнього приєднання."; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "Ви зробили майбутню історію кімнати видимою усім учасникам кімнати від часу їхнього приєднання."; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Ви зробили майбутні повідомлення кімнати видимими будь-кому від часу запрошення їх."; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "Ви зробили майбутню історію кімнати видимою усім учасникам кімнати від часу запрошення їх."; +"notice_room_history_visible_to_members_by_you_for_dm" = "Ви зробили майбутні повідомлення кімнати видимими усім учасникам кімнати."; +"notice_room_history_visible_to_members_by_you" = "Ви зробили майбутню історію кімнати видимою усім учасникам кімнати."; +"notice_room_history_visible_to_anyone_by_you" = "Ви зробили майбутню історію кімнати видимою будь-кому."; +"notice_room_created_by_you" = "Ви створили й сконфігурували кімнату."; +"notice_profile_change_redacted_by_you" = "Ви оновили свій профіль %@"; +"notice_event_redacted_by_you" = " вами"; +"notice_room_topic_removed_by_you" = "Ви вилучили тему"; +"notice_room_name_removed_by_you_for_dm" = "Ви вилучили назву"; +"notice_room_name_removed_by_you" = "Ви вилучили назву кімнати"; +"notice_conference_call_request_by_you" = "Ви запитали VoIP-конференцію"; +"notice_answered_video_call_by_you" = "Ви відповіли на виклик"; +"notice_placed_video_call_by_you" = "Ви розпочали відеовиклик"; +"notice_placed_voice_call_by_you" = "Ви розпочали голосовий виклик"; +"notice_room_name_changed_by_you_for_dm" = "Ви змінили назву на %@."; +"notice_room_name_changed_by_you" = "Ви змінили назву кімнати на %@."; +"notice_topic_changed_by_you" = "Ви змінили тему на «%@»."; +"notice_display_name_removed_by_you" = "Ви вилучили показуване ім'я"; +"notice_display_name_changed_from_by_you" = "Ви змінили показуване ім'я з %@ на %@"; +"notice_display_name_set_by_you" = "Ви вказали показуваним іменем %@"; +"notice_conference_call_finished" = "VoIP-конференція завершилася"; +"notice_conference_call_started" = "VoIP-конференція розпочалася"; +"notice_conference_call_request" = "%@ запитує VoIP-конференцію"; +"notice_declined_video_call" = "%@ відхиляє виклик"; +"notice_ended_video_call" = "%@ завершує виклик"; +"notice_answered_video_call" = "%@ відповідає на виклик"; +"notice_placed_video_call" = "%@ здійснює відеовиклик"; +"notice_placed_voice_call" = "%@ здійснює голосовий виклик"; + +// Room members +"room_member_ignore_prompt" = "Ви впевнені, що хочете сховати всі повідомлення від цього користувача?"; +"room_no_conference_call_in_encrypted_rooms" = "Кімнати з шифруванням не підтримують конференцвиклики"; +"room_error_topic_edition_not_authorized" = "Ви не маєте повноважень змінювати тему цієї кімнати"; +"room_error_name_edition_not_authorized" = "Ви не маєте повноважень змінювати назву цієї кімнати"; +"room_error_join_failed_empty_room" = "На цю мить неможливо приєднатися до порожньої кімнати."; +"room_creation_alias_placeholder_with_homeserver" = "(напр. #foo%@)"; +"room_creation_alias_placeholder" = "(напр. #foo:example.org)"; +"account_email_validation_message" = "Перевірте свою електронну пошту та натисніть на посилання у ній. Після цього натисніть кнопку Продовжити."; +"room_displayname_all_other_members_left" = "%@ (виходять)"; +"room_creation_alias_title" = "Псевдоніми кімнати:"; +"account_email_validation_error" = "Не вдалося перевірити адресу електронної пошти. Перевірте свою електронну пошту та натисніть на посилання в ній. Після цього натисніть продовжити"; +"ssl_could_not_verify" = "Не вдалося перевірити справжність сервера ідентифікації."; +"call_consulting_with_user" = "Консультація з %@"; +"local_contacts_access_discovery_warning_title" = "Виявлення користувачів"; +"attachment_large_with_resolution" = "Великий %@ (~%@)"; +"attachment_medium_with_resolution" = "Середній %@ (~%@)"; +"attachment_small_with_resolution" = "Малий %@ (~%@)"; +"attachment_size_prompt_message" = "Ви можете вимкнути це у налаштуваннях."; +"attachment_size_prompt_title" = "Підтвердити розмір, щоб надіслати"; +"room_no_power_to_create_conference_call" = "Вам потрібен дозвіл, щоб надсилати запрошення, щоб розпочати конференцію в цій кімнаті"; +"room_event_encryption_verify_message" = "Щоб переконатися, що цьому сеансу можна довіряти, зв’яжіться з його власником іншим способом (наприклад, особисто чи телефоном) і запитайте його, чи збігається ключ, який вони бачать у налаштуваннях користувача для цього сеансу, з ключем нижче:\n\nНазва сеансу: %@\nID сеансу: %@\nКлюч сеансу: %@\n\nЯкщо він збігається, натисніть кнопку підтвердження внизу. Якщо ні, значить хтось інший перехоплює цей сеанс, і ви, ймовірно, хочете натиснути кнопку чорного списку.\n\nУ майбутньому цей процес перевірки буде ускладнено."; +"call_more_actions_hold" = "Утримувати"; +"call_holded" = "Ви утримуєте виклик"; +"call_remote_holded" = "%@ утримує виклик"; + +// Login Screen +"login_error_already_logged_in" = "Вже ввійшли"; +"message_unsaved_changes" = "Ви маєте незбережені зміни. Якщо вийдете, їх буде скасовано."; +"attachment_unsupported_preview_message" = "Цей тип файлу не підтримується."; +"attachment_unsupported_preview_title" = "Не вдалося показати попередній перегляд"; +"attachment_e2e_keys_file_prompt" = "Цей файл містить ключі шифрування, експортовані з клієнта Matrix.\nБажаєте переглянути вміст файлу або імпортувати з нього ключі?"; +"room_member_power_level_prompt" = "Ви не зможете скасувати цю зміну, оскільки користувач отримає ті ж повноваження, що й ви.\nВи впевнені?"; +"room_error_timeline_event_not_found" = "Застосунок намагався завантажити певну точку стрічки у цій кімнаті, але не зміг її знайти"; +"room_error_timeline_event_not_found_title" = "Не вдалося завантажити позицію стрічки"; +"room_error_cannot_load_timeline" = "Не вдалося завантажити стрічку"; +"ssl_only_accept" = "Приймайте сертифікат ЛИШЕ якщо адміністратор сервера оприлюднив відбиток, збіжний із наведеним угорі."; +"ssl_expected_existing_expl" = "Сертифікат, якому ви довіряли раніше, змінився на недовірений. Можливо, сервер оновив сертифікат. Запитайте в адміністратора, який відбиток очікуваний."; +"ssl_unexpected_existing_expl" = "Сертифікат відрізняється від довіреного вашим телефоном. Це ВКРАЙ НЕЗВИЧНО. Радимо НЕ ПРИЙМАТИ цей новий сертифікат."; +"ssl_cert_new_account_expl" = "Якщо адміністратор сервера каже, що так має бути, переконайтесь, що відбиток знизу збігається з відбитком адміністратора."; +"ssl_cert_not_trust" = "Це може означати, що хтось зловмисно перехоплює ваш трафік або ваш телефон не довіряє сертифікату, наданому віддаленим сервером."; + +// contacts list screen +"invitation_message" = "Поговорімо в matrix? Сайт https://matrix.org описує, як це зробити."; +"local_contacts_access_discovery_warning" = "Щоб виявляти, які ваші контакти вже в Matrix, %@ може надсилати адреси е-пошти й номери телефонів із вашої адресної книги на обраний сервер ідентифікації Matrix. Особисті дані хешуються перед надсиланням, якщо це підтримується: перегляньте політику приватності свого сервера ідентифікації, щоб дізнатися більше."; +"local_contacts_access_not_granted" = "Для пошуку користувачів серед локальних контактів потрібен доступ до ваших контактів, але %@ не має такого дозволу"; +"e2e_export_prompt" = "Це дає змогу експортувати в локальний файл ключі до повідомлень, отриманих вами в зашифрованих кімнатах. Тоді ви зможете імпортувати файл до іншого клієнта Matrix у майбутньому, і той клієнт також зможе розшифрувати ці повідомлення.\nЕкспортований файл дасть змогу всім, хто його прочитає, розшифрувати всі видимі вам зашифровані повідомлення."; +"e2e_import_prompt" = "Це дає змогу імпортувати ключі шифрування, які ви раніше експортували з іншого клієнта Matrix. Тоді ви зможете розшифрувати всі повідомлення, які міг розшифрувати той клієнт.\nФайл експорту захищений парольною фразою. Введіть парольну фразу сюди, щоб розшифрувати файл."; +"message_reply_to_sender_sent_their_location" = "надсилає дані про своє місцеперебування."; +"home_syncing" = "Синхронізація"; +"room_participants_leave_success" = "Вихід успішний"; +"room_participants_leave_processing" = "Вихід триває"; diff --git a/Riot/Assets/vi.lproj/Vector.strings b/Riot/Assets/vi.lproj/Vector.strings index 0b1c91386..b9b636103 100644 --- a/Riot/Assets/vi.lproj/Vector.strings +++ b/Riot/Assets/vi.lproj/Vector.strings @@ -48,9 +48,9 @@ "auth_optional_phone_placeholder" = "Số điện thoại (không bắt buộc)"; "auth_phone_placeholder" = "Số điện thoại"; "auth_repeat_password_placeholder" = "Nhật lại mật khẩu"; -"auth_repeat_new_password_placeholder" = "Xác nhận mật khẩu mới"; +"auth_repeat_new_password_placeholder" = "Xác nhận mật khẩu mới cho danh khoản Matrix"; "auth_home_server_placeholder" = "URL (ví dụ: https://matrix.org)"; -"auth_identity_server_placeholder" = "URL (ví dụ: https://matrix.org)"; +"auth_identity_server_placeholder" = "URL (vd. https://vector.im)"; "auth_invalid_login_param" = "Tên đăng nhập hoặc mật khẩu không đúng"; "warning" = "Cảnh báo"; "auth_invalid_user_name" = "Tên đăng nhập chỉ được chứa các chữ cái, dấu chấm, dấu gạch ngang và dấu gạch dưới"; @@ -70,7 +70,7 @@ "auth_untrusted_id_server" = "Máy chủ xác thực không được tin cậy"; "auth_password_dont_match" = "Mật khẩu không trùng khớp"; "auth_username_in_use" = "Tên đăng nhập đang được sử dụng"; -"auth_forgot_password" = "Quên mật khẩu?"; +"auth_forgot_password" = "Quên mật khẩu danh khoản Matrix?"; "auth_email_not_found" = "Gửi email thất bại: Địa chỉ email này không thể tìm thấy"; "auth_use_server_options" = "Sử dụng tùy chọn máy chủ tuỳ chỉnh (nâng cao)"; "auth_email_validation_message" = "Vui lòng kiểm tra email của bẹn để tiếp tục đăng kí"; @@ -179,7 +179,7 @@ "room_participants_action_remove" = "Loại bỏ khỏi phòng này"; "room_participants_action_ban" = "Cấm từ phòng này"; "room_participants_action_unban" = "Huỷ cấm"; -"room_participants_action_ignore" = "Dấu tất cả tin nhắn từ người dùng này"; +"room_participants_action_ignore" = "Ẩn tất cả tin nhắn từ người dùng này"; "room_participants_action_unignore" = "Hiển thị tất cả tin nhắn từ người dùng này"; "room_participants_action_set_default_power_level" = "Thiết lập lại về người dùng bình thường"; "room_participants_action_set_moderator" = "Trao quyền người kiểm duyệt"; @@ -700,7 +700,7 @@ "secrets_recovery_with_key_recover_action" = "Sử dụng Khóa"; "secrets_recovery_with_key_recovery_key_placeholder" = "Nhập Khóa Bảo mật"; "user_verification_session_details_information_untrusted_other_user" = " đã đăng ký sử dụng một thiết bị mới:"; -"user_verification_session_details_information_untrusted_current_user" = "Xác minh thiết bị này để đánh dấu nó là tin tưởng & cấp cho nó quyền truy cập vào các tin nhắn mã hóa:"; +"user_verification_session_details_information_untrusted_current_user" = "Xác nhận phiên này để đánh dấu nó là tin cậy & cấp cho nó quyền truy cập vào các tin nhắn mật mã hóa:"; "user_verification_session_details_information_trusted_other_user_part2" = " đã xác minh nó:"; "user_verification_session_details_information_trusted_other_user_part1" = "Thiết bị này được tin tưởng cho việc nhắn tin bảo mật bởi vì "; "user_verification_session_details_information_trusted_current_user" = "Thiết bị này được tin tưởng cho việc nhắn tin bảo mật bởi vì bạn đã xác minh nó:"; @@ -945,8 +945,8 @@ // MARK: Start "device_verification_start_title" = "Xác minh bằng việc so sánh một chuỗi văn bản ngắn"; -"device_verification_incoming_description_2" = "Xác minh thiết bị này sẽ đánh dấu nó là tin cậy, và cũng đánh dấu thiết bị của bạn là tin cậy đối với đối tác."; -"device_verification_incoming_description_1" = "Xác minh thiết bị này để đánh dấu nó là tin cậy. Các thiết bị tin cậy của các đối tác giúp bạn yên tâm thêm khi sử dụng các tin nhắn mã hóa đầu-cuối."; +"device_verification_incoming_description_2" = "Xác nhận phiên này sẽ đánh dấu nó là tin cậy, và cũng đánh dấu phiên của bạn là tin cậy đối với đối tác."; +"device_verification_incoming_description_1" = "Xác nhận phiên này để đánh dấu nó là tin cậy. Việc xác nhận tin cậy các phiên của đối tác giúp bạn yên tâm thêm khi sử dụng các tin nhắn mật mã hoá nối đầu."; // Mark: Incoming "device_verification_incoming_title" = "Yêu cầu xác minh đến"; @@ -1335,7 +1335,7 @@ "security_settings_coming_soon" = "Xin lỗi. Hành động này vẫn chưa có trên %@ iOS. Vui lòng sử dụng client Matrix khác để thiết lập nó. %@ iOS sẽ sử dụng nó."; "security_settings_complete_security_alert_message" = "Bạn nên hoàn thành bảo mật trên thiết bị hiện tại của bạn trước."; "security_settings_complete_security_alert_title" = "Hoàn thành bảo mật"; -"security_settings_blacklist_unverified_devices_description" = "Xác minh tất cả các thiết bị người dùng để đánh dấu chúng là tin cậy và gửi tin nhắn đến chúng"; +"security_settings_blacklist_unverified_devices_description" = "Xác nhận tất cả các phiên của người dùng để đánh dấu chúng là tin cậy và gửi tin nhắn đến chúng."; "security_settings_blacklist_unverified_devices" = "Không bao giờ gửi tin nhắn đến các thiết bị không tin cậy"; "security_settings_advanced" = "Nâng cao"; "security_settings_export_keys_manually" = "Xuất các khóa thủ công"; @@ -1628,3 +1628,377 @@ "store_full_description" = "Element là một loại ứng dụng cộng tác và nhắn tin mới:\n\n1. Đặt bạn kiểm soát để giữ quyền riêng tư của bạn\n2. Cho phép bạn giao tiếp với bất kỳ ai trong mạng Matrix, và thậm chí hơn thế nữa bằng cách tích hợp với các ứng dụng như Slack\n3. Bảo vệ bạn khỏi quảng cáo, datamining, cửa hậu và khu vườn có tường bao quanh\n4. Bảo mật bạn thông qua mã hóa đầu cuối, với việc ký chéo để xác minh người khác\n\nElement hoàn toàn khác với các ứng dụng nhắn tin và cộng tác khác vì nó được phân cấp và nguồn mở.\n\nElement cho phép bạn tự lưu trữ - hoặc chọn máy chủ - để bạn có quyền riêng tư, quyền sở hữu và kiểm soát dữ liệu và cuộc trò chuyện của mình. Nó cho phép bạn truy cập vào một mạng mở; vì vậy, bạn không chỉ bị mắc kẹt khi nói chuyện với những người dùng Element khác. Và nó rất an toàn.\n\nElement có thể làm tất cả điều này bởi vì nó hoạt động trên Matrix - tiêu chuẩn cho giao tiếp mở, phi tập trung. \n\nElement giúp bạn kiểm soát bằng cách cho phép bạn chọn người tổ chức các cuộc trò chuyện của bạn. Từ ứng dụng Element, bạn có thể chọn lưu trữ theo nhiều cách khác nhau:\n\n1. Nhận tài khoản miễn phí trên máy chủ công cộng matrix.org\n2. Tự lưu trữ tài khoản của bạn bằng cách chạy máy chủ trên phần cứng của riêng bạn\n3. Đăng ký tài khoản trên máy chủ tùy chỉnh bằng cách đăng ký vào nền tảng lưu trữ Dịch vụ Element Matrix\n\nTại sao chọn Element?\n\nSở hữu dữ liệu của bạn: Bạn quyết định nơi để giữ dữ liệu và tin nhắn của bạn. Bạn sở hữu nó và kiểm soát nó, không phải một số MEGACORP khai thác dữ liệu của bạn hoặc cho phép truy cập vào bên thứ ba.\n\nTIN NHẮN MỞ VÀ CỘNG TÁC: Bạn có thể trò chuyện với bất kỳ ai khác trong mạng Matrix, cho dù họ đang sử dụng Element hay ứng dụng Matrix khác và ngay cả khi họ đang sử dụng một hệ thống nhắn tin khác như Slack, IRC hoặc XMPP.\n\nSUPER-SECURE: Mã hóa đầu cuối thực sự (chỉ những người trong cuộc trò chuyện mới có thể giải mã tin nhắn) và ký chéo để xác minh các thiết bị của người tham gia hội thoại.\n\nGIAO TIẾP ĐẦY ĐỦ: Nhắn tin, cuộc gọi thoại và video, chia sẻ tệp, chia sẻ màn hình và một loạt các tích hợp, bot và tiện ích. Xây dựng phòng, cộng đồng, giữ liên lạc và hoàn thành công việc.\n\nỞ mọi nơi bạn đang có: Giữ liên lạc bất cứ nơi nào bạn đang có với lịch sử tin nhắn được đồng bộ hóa hoàn toàn trên tất cả các thiết bị của bạn và trên web tại https://element.io/app."; // String for App Store "store_short_description" = "Chat/VoIP bảo mật phi tập trung"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Tạo tài khoản:"; +"login_server_url_placeholder" = "URL (e.g. https://matrix.org)"; +"login_home_server_title" = "Máy chủ nhà:"; +"login_home_server_info" = "Máy chủ nhà của bạn lưu trữ tất cả dữ liệu cần giữ gìn và tài khoản"; +"login_identity_server_title" = "Máy chủ xác thực:"; +"login_identity_server_info" = "Matrix cung cấp máy chủ xác thực để theo dõi email nào thuộc về Matrix IDs nào. Chỉ https://matrix.org hiện đang tồn tại."; +"login_user_id_placeholder" = "Matrix ID (ví dụ: @bob:matrix.org hoặc bob)"; +"login_password_placeholder" = "Mật khẩu"; +"login_optional_field" = "không bắt buộc"; +"login_display_name_placeholder" = "Tên hiển thị (ví dụ: Bob Obson)"; +"login_email_info" = "Định nghĩa địa chỉ email cho phép người dùng khác tìm thấy bạn trên Matrix dễ dàng hơn và giúp bạn đặt lại mật khẩu của bạn sau này."; +"login_email_placeholder" = "Địa chỉ email"; +"login_prompt_email_token" = "Vui lòng nhập mã xác nhận hợp lệ email của bạn:"; +"login_error_title" = "Đăng nhập thất bại"; +"login_error_no_login_flow" = "Chúng tôi không thể truy xuất thông tin xác thực từ Home Server này"; +"login_error_do_not_support_login_flows" = "Hiện tại chúng tôi không hỗ trợ bất cứ luồng đăng nhập được định nghĩa nào từ Home Server này"; +"login_error_registration_is_not_supported" = "Đăng kí hiện đang không được hỗ trợ"; +"login_error_forbidden" = "Sai tên đăng nhập/mật khẩu"; +"login_error_unknown_token" = "Mã truy cập được chỉ định không được công nhận"; +"login_error_bad_json" = "Sai định dạng JSON"; +"login_error_not_json" = "Không chứa một JSON hợp lệ"; +"login_error_limit_exceeded" = "Quá nhiều yêu cầu đã được gửi"; +"login_error_user_in_use" = "Tên đăng nhập này đã được sử dụng"; +"login_error_login_email_not_yet" = "Liên kết email chưa được nhấp vào"; +"login_use_fallback" = "Sử dụng dự phòng"; +"login_leave_fallback" = "Huỷ"; +"login_invalid_param" = "Tham số không hợp lệ"; +"register_error_title" = "Đăng kí thất bại"; +"login_error_forgot_password_is_not_supported" = "Chức năng quên mật khẩu chưa hỗ trợ"; +"login_mobile_device" = "Di động"; +"login_tablet_device" = "Máy tính bảng"; +"login_desktop_device" = "Máy tính bàn"; +// Action +"no" = "Không"; +"yes" = "Có"; +"abort" = "Huỷ bỏ"; +"discard" = "Huỷ bỏ"; +"dismiss" = "Bỏ qua"; +"sign_up" = "Đăng kí"; +"submit" = "Gửi đi"; +"submit_code" = "Gửi mã lên"; +"set_default_power_level" = "Thiết lập lại cấp độ"; +"set_moderator" = "Đặt người kiểm duyệt"; +"set_admin" = "Đặt người quản trị"; +"start_chat" = "Bắt đầu chat"; +"start_voice_call" = "Bắt đầu cuộc gọi thoại"; +"start_video_call" = "Bắt đầu cuộc gọi video"; +"mention" = "Đề cập đến"; +"select_account" = "Chọn một tài khoản"; +"attach_media" = "Đính kèm Media từ thư viện"; +"capture_media" = "Chụp ảnh/quay video"; +"invite_user" = "Mời người dùng Matrix"; +"reset_to_default" = "Thiết lập lại về mặc định"; +"resend_message" = "Gửi lại tin nhắn"; +"select_all" = "Chọn tất cả"; +"cancel_upload" = "Huỷ tải lên"; +"cancel_download" = "Huỷ tải xuống"; +"show_details" = "Xem chi tiết"; +"answer_call" = "Trả lời cuộc gọi"; +"reject_call" = "Từ chối cuộc gọi"; +"end_call" = "Kết thúc cuộc gọi"; +"ignore" = "Bỏ qua"; +"unignore" = "Huỷ bỏ qua"; +// Events formatter +"notice_avatar_changed_too" = "(hình đại diện cũng đã được thay đổi)"; +"notice_room_name_removed" = "%@ bị gỡ bỏ khỏi tên của phòng"; +"notice_room_topic_removed" = "%@ bị gỡ bỏ khỏi chủ đề của phòng"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " bởi %@"; +"notice_event_redacted_reason" = " [lí do: %@]"; +"notice_profile_change_redacted" = "%@ cập nhật hồ sơ của họ %@"; +"notice_room_created" = "%@ đã tạo phòng"; +"notice_room_join_rule" = "Quy tắc tham gia là: %@"; +"notice_room_power_level_intro" = "Công suất của thành viên trong phòng:"; +"notice_room_power_level_acting_requirement" = "Mức công suất tối thiểu mà người dùng phải có trước khi hoạt động là:"; +"notice_room_power_level_event_requirement" = "Mức công suất tối thiểu liên quan đến sự kiện là:"; +"notice_room_aliases" = "Các bí danh phòng là:% @"; +"notice_encrypted_message" = "Tin nhắn đã được mã hoá"; +"notice_encryption_enabled" = "%@ đã bật mã hoá end-to-end (thuật toán %@)"; +"notice_image_attachment" = "hình ảnh đính kèm"; +"notice_audio_attachment" = "âm thanh đính kèm"; +"notice_video_attachment" = "video đính kèm"; +"notice_location_attachment" = "địa điểm đính kèm"; +"notice_file_attachment" = "tập tin đính kèm"; +"notice_invalid_attachment" = "đính kèm không hợp lệ"; +"notice_unsupported_attachment" = "Đính kèm chưa được hỗ trợ: %@"; +"notice_feedback" = "Sự kiện phản hồi (id: %@): %@"; +"notice_redaction" = "%@ đã biên soạn một sự kiện (id: %@)"; +"notice_error_unsupported_event" = "Sự kiện không được hỗ trợ"; +"notice_error_unexpected_event" = "Sự kiện bất ngờ"; +"notice_error_unknown_event_type" = "Loại sự kiện không xác định"; +"notice_room_history_visible_to_anyone" = "%@ làm cho mọi người có thể thấy lịch sử phòng."; +"notice_room_history_visible_to_members" = "%@ làm cho thành viên trong phòng có thể thấy được lịch sử phòng."; +"notice_room_history_visible_to_members_from_invited_point" = "%@ làm cho mọi thành viên có thể thấy được lịch sử phòng từ thời điểm được mời."; +"notice_room_history_visible_to_members_from_joined_point" = "%@ làm cho mọi người có thể thấy lịch sử phòng từ thời điểm họ tham gia."; +"notice_crypto_unable_to_decrypt" = "** Không thể giải mã: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "Thiết bị gửi đi đã không gửi cho chúng ta các khoá giải mã tin nhắn."; +// room display name +"room_displayname_empty_room" = "Phòng trống"; +"room_displayname_two_members" = "%@ và %@"; +"room_displayname_more_than_two_members" = "%@ và %u người khác"; +// Settings +"settings" = "Cài đặt"; +"settings_enable_inapp_notifications" = "Bật thông báo bên trong ứng dụng"; +"settings_enable_push_notifications" = "Bật thông báo"; +"settings_enter_validation_token_for" = "Nhập mã thông báo xác nhận cho %@:"; +"notification_settings_room_rule_title" = "Phòng chat: '%@'"; +// Devices +"device_details_title" = "Thông tin thiết bị\n"; +"device_details_name" = "Tên\n"; +"device_details_identifier" = "ID Thiết bị\n"; +"device_details_last_seen" = "Lần cuối nhìn thấy\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "Tên thiết bị:"; +"device_details_delete_prompt_title" = "Xác thực"; +"device_details_delete_prompt_message" = "Thao tác này yêu cầu xác thực bổ sung.\nĐể tiếp tục, vui lòng nhập mật khẩu của bạn."; +// Encryption information +"room_event_encryption_info_title" = "Thông tin mã hoá end-to-end\n\n"; +"room_event_encryption_info_event" = "Thông tin sự kiện\n"; +"room_event_encryption_info_event_user_id" = "ID Người dùng\n"; +"room_event_encryption_info_event_identity_key" = "Khoá xác thực Curve25519\n"; +"room_event_encryption_info_event_fingerprint_key" = "Chìa khoá vân tay Claimed Ed25519\n"; +"room_event_encryption_info_event_algorithm" = "Thuật toán\n"; +"room_event_encryption_info_event_session_id" = "ID Phiên làm việc\n"; +"room_event_encryption_info_event_decryption_error" = "Lỗi giải mã\n"; +"room_event_encryption_info_event_unencrypted" = "đã giải mã"; +"room_event_encryption_info_event_none" = "không"; +"room_event_encryption_info_device" = "\nThông tin thiết bị gửi đi\n"; +"room_event_encryption_info_device_unknown" = "thiết bị không xác định\n"; +"room_event_encryption_info_device_name" = "Tên\n"; +"room_event_encryption_info_device_id" = "ID Thiết bị\n"; +"room_event_encryption_info_device_verification" = "Xác minh\n"; +"room_event_encryption_info_device_fingerprint" = "Dấu vân tay Claimed Ed25519\n"; +"room_event_encryption_info_device_verified" = "Đã xác thực"; +"room_event_encryption_info_device_not_verified" = "CHƯA xác thực"; +"room_event_encryption_info_device_blocked" = "Danh sách đen"; +"room_event_encryption_info_verify" = "Xác thực..."; +"room_event_encryption_info_unverify" = "Huỷ xác thực"; +"room_event_encryption_info_block" = "Danh sách đen"; +"room_event_encryption_info_unblock" = "Huỷ danh sách đen"; +"room_event_encryption_verify_title" = "Xác minh thiết bị\n\n"; +"room_event_encryption_verify_message" = "Để xác minh rằng thiết bị này có thể tin cậy, vui lòng liên hệ chủ sở hữu bằng cách sử dụng một số phương tiện khác (ví dụ: trực tiếp hoặc qua điện thoại) và yêu cầu họ xem khoá mà họ nhìn thấy trong \"Cài đặt người dùng\" cho thiết bị này có trùng khớp với khoá dưới đây:\n\n\tTên thiết bị: %@\n\tID thiết bị: %@\n\tKhóa thiết bị: %@\n\nNếu nó trùng khớp, nhấn nút xác minh dưới đây. Nếu không, thì ai đó đang chặn thiết bị này và bạn có thể muốn nhấn nút danh sách đen thay vì nhấn nút xác minh.\n\nTrong tương lai quá trình xác minh này sẽ phức tạp hơn."; +"room_event_encryption_verify_ok" = "Xác thực"; +// Account +"account_save_changes" = "Lưu thay đổi"; +"account_link_email" = "Liên kết email"; +"account_linked_emails" = "Email đã được liên kết"; +"account_email_validation_title" = "Xác minh đang chờ xử lí"; +"account_email_validation_message" = "Vui lòng check email của bạn và nhấn vào đường dẫn đính kèm trong đó. Sau khi việc đó hoàn thành, nhấn tiếp tục."; +"account_email_validation_error" = "Không thể xác minh địa chỉ email. Vui lòng kiểm tra email của bạn và nhấn vào liên kết mà nó được đính kèm. Sau khi việc đó hoàn thành, nhất tiếp tục"; +"account_msisdn_validation_title" = "Xác minh đang chờ xử lí"; +"account_msisdn_validation_message" = "Chúng tôi đã gửi mã kích hoạt qua SMS. Vui lòng nhập mã kích hoạt bên dưới."; +"account_msisdn_validation_error" = "Không thể xác thực số điện thoại."; +"account_error_display_name_change_failed" = "Thay đổi tên hiển thị thất bại"; +"account_error_picture_change_failed" = "Thay đổi hình ảnh thất bại"; +"account_error_matrix_session_is_not_opened" = "Phiên làm việc matrix chưa được mở"; +"account_error_email_wrong_title" = "Địa chỉ email không hợp lệ"; +"account_error_email_wrong_description" = "Nó có vẻ không phải là một địa chỉ email hợp lệ"; +"account_error_msisdn_wrong_title" = "Số điện thoại không hợp lệ"; +"account_error_msisdn_wrong_description" = "Nó có vẻ không phải là một số điện thoại hợp lệ"; +// Room creation +"room_creation_name_title" = "Tên phòng:"; +"room_creation_name_placeholder" = "(ví dụ: lunchGroup)"; +"room_creation_alias_title" = "Bí danh phòng:"; +"room_creation_alias_placeholder" = "(ví dụ: #foo:example.org)"; +"room_creation_alias_placeholder_with_homeserver" = "(ví dụ: #foo%@)"; +"room_creation_participants_title" = "Người tham gia:"; +"room_creation_participants_placeholder" = "(ví dụ: @bob:homeserver1; @john:homeserver2...)"; +// Room +"room_please_select" = "Vui lòng chọn một phòng"; +"room_error_join_failed_title" = "Tham gia phòng thất bại"; +"room_error_join_failed_empty_room" = "Hiện tại không thể tham gia lại phòng trống."; +"room_error_name_edition_not_authorized" = "Bạn chưa được uỷ quyền để sửa tên phòng"; +"room_error_topic_edition_not_authorized" = "Bạn chưa được uỷ quyền để sửa chủ đề phòng"; +"room_error_cannot_load_timeline" = "Không tải được dòng thời gian"; +"room_error_timeline_event_not_found_title" = "Không tải được vị trí dòng thời gian"; +"room_error_timeline_event_not_found" = "Ứng dụng đã cố gắng tải một điểm cụ thể trong thời gian của phòng này nhưng không thể tìm thấy nó"; +"room_left" = "Bạn đã rời phòng"; +"room_no_power_to_create_conference_call" = "Bạn cần cấp quyền để mời bắt đầu cuộc gọi hội họp trong phòng này"; +"room_no_conference_call_in_encrypted_rooms" = "Gọi hội họp chưa được hỗ trợ trong các phòng đã mã hoá"; +// Room members +"room_member_ignore_prompt" = "Bạn có chắc chắn muốn ẩn tất cả tin nhắn từ người dùng này?"; +"room_member_power_level_prompt" = "Bạn sẽ không thể hoàn tác thay đổi này khi bạn đang quảng cáo cho người dùng có mức năng lượng như chính bạn.\nBạn có chắc không?"; +// Attachment +"attachment_size_prompt" = "Bạn có muốn gửi dưới dạng:"; +"attachment_original" = "Kích thước thực sự: %@"; +"attachment_small" = "Nhỏ: %@"; +"attachment_medium" = "Trung bình: %@"; +"attachment_large" = "Lớn: %@"; +"attachment_cancel_download" = "Huỷ bỏ tải xuống?"; +"attachment_cancel_upload" = "Huỷ bỏ tải lên?"; +"attachment_multiselection_size_prompt" = "Bạn có muốn gửi hình ảnh dưới dạng:"; +"attachment_multiselection_original" = "Kích thước thực sự"; +"attachment_e2e_keys_file_prompt" = "Tập tin này chứa các khoá mã hoá được xuất từ một máy khách Matrix.\nBạn có muốn xem nội dung tập tin hoặc nhập khẩu các khóa nó chứa?"; +"attachment_e2e_keys_import" = "Nhập..."; +// Contacts +"contact_mx_users" = "Người dùng của Matrix"; +"contact_local_contacts" = "Danh bạ"; +// Search +"search_no_results" = "Không có kết quả"; +"search_searching" = "Đang tìm kiếm..."; +// Time +"format_time_s" = "giây"; +"format_time_m" = "phút"; +"format_time_h" = "giờ"; +"format_time_d" = "ngày"; +// E2E import +"e2e_import_room_keys" = "Nhập khóa phòng"; +"e2e_import_prompt" = "Quá trình này cho phép bạn nhập các khoá mã hoá mà trước đây bạn đã xuất từ một máy khách Matrix khác. Sau đó, bạn sẽ có thể giải mã bất kỳ thư nào mà khách hàng khác có thể giải mã.\nTệp xuất được bảo vệ bằng cụm mật khẩu. Bạn nên nhập cụm từ mật khẩu ở đây, để giải mã tệp."; +"e2e_import" = "Nhập"; +"e2e_passphrase_enter" = "Nhập cụm mật khẩu"; +// E2E export +"e2e_export_room_keys" = "Xuất các khoá của phòng"; +"e2e_export_prompt" = "Quá trình này cho phép bạn xuất khẩu các khoá cho tin nhắn bạn đã nhận được trong các phòng được mã hoá tới một tập tin cục bộ. Sau đó, bạn sẽ có thể nhập tập tin vào máy khách Matrix khác trong tương lai, để khách hàng cũng có thể giải mã các thư này.\nTập tin được xuất sẽ cho phép bất kỳ ai có thể đọc nó để giải mã bất kỳ tin nhắn nào được mã hóa mà bạn có thể thấy, do đó bạn nên cẩn thận để giữ an toàn."; +"e2e_export" = "Xuất"; +"e2e_passphrase_confirm" = "Xác nhận cụm mật khẩu"; +"e2e_passphrase_empty" = "Cụm mật khẩu không được để trống"; +"e2e_passphrase_not_match" = "Cụm mật khẩu phải trùng khớp"; +// Others +"user_id_title" = "ID Người dùng:"; +"offline" = "ngoại tuyến"; +"unsent" = "Chưa được gửi"; +"error" = "Lỗi"; +"not_supported_yet" = "Chưa hỗ trợ"; +"default" = "mặc định"; +"private" = "Riêng tư"; +"public" = "Công khai"; +"power_level" = "Độ nhiệt huyết"; +"network_error_not_reachable" = "Vui lòng kiểm tra kết nối mạng của bạn"; +"user_id_placeholder" = "ví dụ: @bob:homeserver"; +"ssl_homeserver_url" = "Home Server URL: %@"; +// Permissions +"camera_access_not_granted_for_call" = "Cuộc gọi video yêu cầu quyền truy cập tới máy ảnh nhưng %@ chưa có quyền để sử dụng nó"; +"microphone_access_not_granted_for_call" = "Cuộc gọi thoại yêu cầu truy cập tới Microphone nhưng %@ chưa có quyền để sử dụng nó"; +"local_contacts_access_not_granted" = "Người dùng tìm thấy từ địa chỉ liên hệ cục bộ yêu cầu quyền truy cập vào danh sách liên hệ của bạn nhưng %@ không có quyền sử dụng nó"; +"local_contacts_access_discovery_warning_title" = "Quét người dùng"; +"local_contacts_access_discovery_warning" = "%@ muốn tải lên danh sách email và số điện thoại từ danh bạ của bạn để quét người dùng"; +// Country picker +"country_picker_title" = "Chọn một quốc gia"; +// Language picker +"language_picker_title" = "Chọn một ngôn ngữ"; +"language_picker_default_language" = "Mặc định (%@)"; +"notice_room_invite" = "%@ đã mời %@"; +"notice_room_third_party_invite" = "%@ gửi một lời mời tới %@ để tham gia phòng"; +"notice_room_third_party_registered_invite" = "%@ chấp nhận lời mời cho %@"; +"notice_room_join" = "%@ đã tham gia"; +"notice_room_leave" = "%@ đã rời"; +"notice_room_reject" = "%@ từ chối lời yêu cầu"; +"notice_room_kick" = "%@ đã đá %@ ra khỏi phòng"; +"notice_room_unban" = "%@ đã huỷ cấm %@"; +"notice_room_ban" = "%@ đã cấm %@"; +"notice_room_withdraw" = "%@ đã thu hồi lời mời của %@"; +"notice_room_reason" = ". Lý do: %@"; +"notice_avatar_url_changed" = "%@ đã thay đổi ảnh đại diện của họ"; +"notice_display_name_set" = "%@ đặt tên hiển thị của họ thành %@"; +"notice_display_name_changed_from" = "%@ thay đổi tên hiển thị của họ từ %@ thành %@"; +"notice_display_name_removed" = "%@ đã gỡ bỏ tên hiển thị của họ"; +"notice_topic_changed" = "%@ thay đổi chủ đề thành: %@"; +"notice_room_name_changed" = "%@ đã thay đổi tên phòng thành: %@"; +"notice_placed_voice_call" = "%@ tạo một cuộc gọi thoại"; +"notice_placed_video_call" = "%@ tạo một cuộc gọi video"; +"notice_answered_video_call" = "%@ đã trả lời cuộc gọi"; +"notice_ended_video_call" = "%@ kết thúc cuộc gọi"; +"notice_conference_call_request" = "%@ yêu cầu một hội nghị VoIP"; +"notice_conference_call_started" = "Cuộc gọi hội nghị VoIP đã bắt đầu"; +"notice_conference_call_finished" = "Cuộc gọi hội nghị VoIP đã kết thúc"; +// button names +"ok" = "OK"; +"send" = "Gửi"; +"copy_button_name" = "Sao chép"; +"resend" = "Gửi lại"; +"redact" = "Biên tập lại"; +"share" = "Chia sẻ"; +"set_power_level" = "Độ nhiệt huyết"; +"delete" = "Xoá"; +// actions +"action_logout" = "Đăng xuất"; +"create_room" = "Tạo phòng"; +"login" = "Đăng nhập"; +"create_account" = "Tạo tài khoản"; +"membership_invite" = "Đã mời"; +"membership_leave" = "Đã rời"; +"membership_ban" = "Bị cấm"; +"num_members_one" = "%@ người dùng"; +"num_members_other" = "%@ người dùng"; +"kick" = "Đá"; +"ban" = "Cấm"; +"unban" = "Huỷ cấm"; +"message_unsaved_changes" = "Có vài thay đổi chưa được lưu. Rời khỏi sẽ mất những thay đổi này."; +// Login Screen +"login_error_already_logged_in" = "Đã đăng nhập"; +"login_error_must_start_http" = "URL phải bắt đầu với http[s]://"; +// room details dialog screen +// contacts list screen +"invitation_message" = "Tôi muốn trò chuyện với bạn với matrix. Vui lòng truy cập trang web http://matrix.org để biết thêm thông tin."; +// Settings screen +"settings_title_config" = "Cấu hình"; +"settings_title_notifications" = "Thông báo"; +// Notification settings screen +"notification_settings_disable_all" = "Tắt tất cả thông báo"; +"notification_settings_enable_notifications" = "Bật thông báo"; +"notification_settings_enable_notifications_warning" = "Tất cả thông báo hiện tại đang bị vô hiệu hoá cho tất cả thiết bị."; +"notification_settings_global_info" = "Cài đặt thông báo được lưu vào tài khoản người dùng của bạn và được chia sẻ giữa tất cả các máy khách có hỗ trợ chúng (bao gồm thông báo trên máy bàn).\n\nCác quy tắc được áp dụng theo thứ tự; quy tắc đầu tiên khớp với định nghĩa của thông báo đến từ bên ngoài.\nVì vậy: Thông báo mỗi lần quan trọng hơn thông báo cho mỗi phòng điều mà quan trọng hơn thông báo mỗi người gửi.\nĐối với nhiều quy tắc cùng loại, lựa chọn đầu tiên trong danh sách phù hợp sẽ được ưu tiên."; +"notification_settings_per_word_notifications" = "Thông báo mỗi từ"; +"notification_settings_per_word_info" = "Các từ khớp với trường hợp vô nghĩa và có thể bao gồm ký tự đại diện *. Vì thế:\nfoo phù hợp với chuỗi foo bao quanh bởi từ phân cách chữ (ví dụ: chấm câu và khoảng trắng hoặc bắt đầu / kết thúc dòng).\nfoo * khớp với bất kỳ từ nào bắt đầu foo.\n* foo * khớp bất kỳ từ nào trong đó bao gồm 3 chữ foo."; +"notification_settings_always_notify" = "Luôn thông báo"; +"notification_settings_never_notify" = "Không bao giờ thông báo"; +"notification_settings_word_to_match" = "từ để so khớp"; +"notification_settings_highlight" = "Điểm nhấn"; +"notification_settings_custom_sound" = "Âm thanh tuỳ chỉnh"; +"notification_settings_per_room_notifications" = "Thông báo mỗi phòng"; +"notification_settings_per_sender_notifications" = "Thông báo mỗi người gửi"; +"notification_settings_sender_hint" = "@nguoidung:tenmien.com"; +"notification_settings_select_room" = "Chọn một phòng"; +"notification_settings_other_alerts" = "Các thông báo khác"; +"notification_settings_contain_my_user_name" = "Thông báo cho tôi với âm thanh về các tin nhắn chứa tên của tôi"; +"notification_settings_contain_my_display_name" = "Thông báo cho tôi với âm thanh về các tin nhắn chưa tên hiển thị của tôi"; +"notification_settings_just_sent_to_me" = "Thông báo cho tôi với âm thành về các tin nhắn chỉ gửi cho tôi"; +"notification_settings_invite_to_a_new_room" = "Thông báo cho tôi khi tôi được mời vào một phòng mới"; +"notification_settings_people_join_leave_rooms" = "Thông báo cho tôi khi mọi người tham gia hoặc rời các phòng"; +"notification_settings_receive_a_call" = "Thông báo cho tôi khi tôi nhận cuộc gọi"; +"notification_settings_suppress_from_bots" = "Chặn thông báo từ các bot"; +"notification_settings_by_default" = "Theo mặc định..."; +"notification_settings_notify_all_other" = "Thông báo cho tất cả tin nhắn/phòng"; +// gcm section +// call string +"call_waiting" = "Đang đợi..."; +"call_connecting" = "Đang kết nối cuộc gọi..."; +"call_ended" = "Cuộc gọi kết thúc"; +"call_ring" = "Đang gọi..."; +"incoming_video_call" = "Cuộc gọi video tới"; +"incoming_voice_call" = "Cuộc gọi thoại tới"; +"call_invite_expired" = "Lời mời cuộc gọi đã quá hạn"; +// unrecognized SSL certificate +"ssl_trust" = "Tin tưởng"; +"ssl_logout_account" = "Đăng xuất"; +"ssl_remain_offline" = "Bỏ qua"; +"ssl_fingerprint_hash" = "Vân tay (%@):"; +"ssl_could_not_verify" = "Không thể xác minh danh tính của máy chủ từ xa."; +"ssl_cert_not_trust" = "Điều này có thể có nghĩa là ai đó đang ngăn chặn lưu lượng truy cập của bạn, hoặc điện thoại của bạn không tin tưởng vào chứng chỉ được cung cấp bởi máy chủ từ xa."; +"ssl_cert_new_account_expl" = "Nếu quản trị viên máy chủ đã nói rằng điều này được mong đợi, đảm bảo rằng các dấu vân tay dưới đây phù hợp với dấu vân tay được cung cấp bởi chúng."; +"ssl_unexpected_existing_expl" = "Chứng chỉ đã thay đổi từ chứng chỉ mà điện thoại của bạn tin cậy. Điều này là KHÔNG THƯỜNG XUYÊN. Chúng tôi khuyên bạn KHÔNG CHẤP NHẬN chứng chỉ mới này."; +"ssl_expected_existing_expl" = "Chứng chỉ đã thay đổi từ một tài khoản đáng tin cậy trước đó sang chứng chỉ không đáng tin cậy. Máy chủ có thể đã gia hạn chứng chỉ của nó. Liên hệ với quản trị viên máy chủ để lấy dấu vân tay được mong đợi."; +"ssl_only_accept" = "CHỈ chấp nhận chứng chỉ nếu quản trị viên máy chủ đã xuất bản một dấu vân tay phù hợp với bảng trên."; +"onboarding_use_case_existing_server_button" = "Kết nối với máy chủ"; +"onboarding_use_case_existing_server_message" = "Đang muốn tham gia một máy chủ đã có?"; +"onboarding_use_case_skip_button" = "bỏ qua câu hỏi này"; +/* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ +"onboarding_use_case_not_sure_yet" = "Chưa chắc? Bạn có thể %@"; +"onboarding_use_case_community_messaging" = "Cộng đồng"; +"onboarding_use_case_work_messaging" = "Đồng nghiệp"; +"onboarding_use_case_personal_messaging" = "Bạn bè và gia đình"; +"onboarding_use_case_message" = "Chúng tôi sẽ giúp bạn kết nối."; +"onboarding_use_case_title" = "Bạn nói chuyện nhiều nhất với ai?"; +"onboarding_splash_page_4_title_no_pun" = "Chức năng nhắn tin cho đội ngũ của bạn."; +"onboarding_splash_page_3_message" = "Được mật mã hoá nối đầu và không yêu cầu số điện thoại. Không quảng cáo hay thu thập dữ liệu."; +"onboarding_splash_page_1_message" = "Giao tiếp an ninh và độc lập, cho bạn cùng mức độ riêng tư như khi nói chuyện đối diện tại nhà mình."; +"onboarding_splash_page_3_title" = "Nhắn tin an ninh."; +"onboarding_splash_page_2_message" = "Lựa chọn nơi mà các cuộc nói chuyện của bạn được lưu trữ, cho bạn quyền kiểm soát và sự độc lập. Kết nối thông qua Matrix."; +"onboarding_splash_page_2_title" = "Bạn nắm kiểm soát."; +"onboarding_splash_page_1_title" = "Làm chủ các cuộc nói chuyện của bạn."; +"onboarding_splash_login_button_title" = "Tôi đã có danh khoản"; + +// Onboarding +"onboarding_splash_register_button_title" = "Tạo danh khoản"; +"accessibility_button_label" = "nút"; +"enable" = "Bật"; diff --git a/Riot/Assets/vls.lproj/Vector.strings b/Riot/Assets/vls.lproj/Vector.strings index d3fd8dcfd..284b7009f 100644 --- a/Riot/Assets/vls.lproj/Vector.strings +++ b/Riot/Assets/vls.lproj/Vector.strings @@ -95,3 +95,122 @@ "auth_reset_password_success_message" = "Je paswoord is heringesteld gewist.\n\nJe zy nu ip alle toestelln afgemeld en je goa geen pushmeldiengn nie mi ontvangn. Vo meldiengn herin te schoakeln, meld je jen ip ieder toestel heran."; "auth_softlogout_signed_out" = "Je zyt afgemeld"; "auth_softlogout_sign_in" = "Anmeldn"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "Account anmoakn:"; +"login_server_url_placeholder" = "URL (bv. https://matrix.org)"; +"login_home_server_title" = "Thuusserver:"; +"login_home_server_info" = "Je thuusserver sloat al je gespreks- en accountgegeevns ip"; +"login_identity_server_title" = "Identiteitsserver:"; +"login_user_id_placeholder" = "Matrix-ID (bv. @jean:matrix.org of jean)"; +"login_password_placeholder" = "Paswoord"; +"login_optional_field" = "optioneel"; +"login_display_name_placeholder" = "Weergoavenoame (bv. Jean Kieckens)"; +"login_email_info" = "Door een e-mailadresse in te geevn kunn andere gebruukers je gemakkeliker ip Matrix wereviendn, en 't gift jen ook e maniere voor in den toekomst je paswoord te verandern."; +"login_email_placeholder" = "E-mailadresse"; +"login_prompt_email_token" = "Gif jen e-mailadressevalidoatiebewys in:"; +"login_error_title" = "Anmeldn mislukt"; +"login_error_no_login_flow" = "Iphoaln van de authenticoatie-informoatie van dezen thuusserver is mislukt"; +"login_identity_server_info" = "Matrix verstrekt identiteitsservers vo t’achterhoaln wukke e-mailadressn e.d.m. dat der by wukke Matrix-ID’s hoorn. Tot nu toe bestoat alleene mo https://matrix.org."; +"login_error_do_not_support_login_flows" = "Vo de moment biedn we geen oundersteunienge vo sommigste of alle anmeldiengsmethoodn van dezen thuusserver"; +"login_error_registration_is_not_supported" = "Registroasje wor vo de moment nie oundersteund"; +"login_error_forbidden" = "Oungeldig(e) gebrukersnoame/paswoord"; +"login_error_unknown_token" = "’t Ingegeevn toegangsbewys is nie herkend"; +"login_error_bad_json" = "Oungeldigen JSON"; +"login_error_not_json" = "Bevat gene geldigen JSON"; +"login_error_limit_exceeded" = "’t Zyn te vele verzoekn verzonden gewist"; +"login_error_user_in_use" = "Deze gebrukersnoame is al in gebruuk"; +"login_error_login_email_not_yet" = "De koppelienge in den e-mail is nog nie geopend gewist"; +"login_use_fallback" = "Weerevalblad gebruukn"; +"login_leave_fallback" = "Annuleern"; +"login_invalid_param" = "Oungeldige parameter"; +"register_error_title" = "Registroasje mislukt"; +"login_error_forgot_password_is_not_supported" = "Paswoord vergeten wor vo de moment nog nie oundersteund"; +"login_mobile_device" = "Gsm"; +"login_tablet_device" = "Tablet"; +"login_desktop_device" = "Computer"; +"login_error_resource_limit_exceeded_title" = "Bronlimiet overschreedn"; +"login_error_resource_limit_exceeded_message_default" = "Dezen thuusserver èt één of meer van z’n bronlimietn overschreedn."; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "Dezen thuusserver è z’n limiet vo moandeliks actieve gebrukers bereikt."; +"login_error_resource_limit_exceeded_message_contact" = "\n\nContacteert je dienstbeheerder vo deze dienst te bluuvn gebruukn."; +"login_error_resource_limit_exceeded_contact_button" = "Beheerder contacteern"; +// Action +"no" = "Nee"; +"yes" = "Ja"; +"abort" = "Afbreekn"; +"discard" = "Verwerpn"; +"dismiss" = "Sluutn"; +"sign_up" = "Anmeldn"; +"submit" = "Indienn"; +"submit_code" = "Code indienn"; +"set_power_level" = "Machtsniveau instelln"; +"set_default_power_level" = "Machtsniveau herinstelln"; +"set_moderator" = "Benoemn tou moderator"; +"set_admin" = "Benoemn tou beheerder"; +"start_chat" = "Gesprek beginn"; +"start_voice_call" = "Sproakiproep beginn"; +"start_video_call" = "Video-iproep beginn"; +"mention" = "Vermeldn"; +"select_account" = "Selecteert een account"; +"attach_media" = "Media van de bibliotheek byvoegn"; +"capture_media" = "Fotootje/filmtje moakn"; +"invite_user" = "Matrix-gebruker uutnodign"; +"reset_to_default" = "Standoardwoardn herstelln"; +"resend_message" = "Bericht hersteurn"; +"select_all" = "Alles selecteern"; +"cancel_upload" = "Upload annuleern"; +"cancel_download" = "Download annuleern"; +"show_details" = "Details weeregeevn"; +"answer_call" = "Iproep beantwoordn"; +"reject_call" = "Iproep afwyzn"; +"end_call" = "Iphangn"; +"ignore" = "Negeern"; +"unignore" = "Stoppen me negeern"; +// Events formatter +"notice_avatar_changed_too" = "(profielfoto is ook veranderd gewist)"; +"notice_room_name_removed" = "%@ èt de gespreksnoame verwyderd"; +"notice_room_topic_removed" = "%@ è ’t ounderwerp verwyderd"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " deur %@"; +"notice_event_redacted_reason" = " [reden: %@]"; +"notice_profile_change_redacted" = "%@ èt zyn/heur profiel bygewerkt %@"; +"notice_room_created" = "%@ è ’t gesprek angemakt"; +"notice_room_join_rule" = "De toetrediengsregel is: %@"; +"notice_room_power_level_intro" = "’t Machtsniveau van gespreksleden is:"; +"notice_room_power_level_acting_requirement" = "De minimoale machtsniveau waarover dat e gebruker moe beschikkn vooraleer da t’n kut handeln zyn:"; +"notice_room_power_level_event_requirement" = "De minimoale machtsniveaus gerelateerd an gebeurtenissn zyn:"; +"notice_room_aliases" = "De gespreksbynoamn zyn: %@"; +"notice_room_related_groups" = "De groepn da geassocieerd zyn me da gesprek hier zyn: %@"; +"notice_encrypted_message" = "Versleuterd bericht"; +"notice_encryption_enabled" = "%@ èt end-tout-end-versleuterienge angezet (%@-algoritme)"; +"notice_image_attachment" = "fotobylage"; +"notice_audio_attachment" = "geluudsbylage"; +"notice_video_attachment" = "videobylage"; +"notice_location_attachment" = "locoasjebylage"; +"notice_file_attachment" = "bestandsbylage"; +"notice_invalid_attachment" = "oungeldige bylage"; +"notice_unsupported_attachment" = "Nie-oundersteunde bylage: %@"; +"notice_feedback" = "Feedbackgebeurtenisse (id: %@): %@"; +"notice_redaction" = "%@ èt e gebeurtenisse verwyderd (id: %@)"; +"notice_error_unsupported_event" = "Nie-oundersteunde gebeurtenisse"; +"notice_error_unexpected_event" = "Ounverwachte gebeurtenisse"; +"notice_error_unknown_event_type" = "Ounbekend gebeurtenistype"; +"notice_room_history_visible_to_anyone" = "%@ èt de toekomstige gesprekgeschiedenisse voor iedereen zichtboar gemakt."; +"notice_room_history_visible_to_members" = "%@ èt de toekomstige gespreksgeschiedenisse voor alle gespreksleedn zichtboar gemakt ghed."; +"notice_crypto_unable_to_decrypt" = "** Kostege nie ountsleutern: %@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "’t Toestel van den afzender èt uus geen sleuters vo da bericht hier gestuurd ghed."; +"notice_sticker" = "sticker"; +"notice_in_reply_to" = "In antwoord op"; +// room display name +"room_displayname_empty_room" = "Leeg gesprek"; +"room_displayname_two_members" = "%@ en %@"; +"room_displayname_more_than_two_members" = "%@ en %@ anderen"; +// Settings +"settings" = "Instelliengn"; +"settings_enable_inapp_notifications" = "In-app-meldiengn inschoakeln"; +"settings_enable_push_notifications" = "Pushmeldiengn inschoakeln"; diff --git a/Riot/Assets/zh_Hans.lproj/Vector.strings b/Riot/Assets/zh_Hans.lproj/Vector.strings index 181d299c6..110c7814b 100644 --- a/Riot/Assets/zh_Hans.lproj/Vector.strings +++ b/Riot/Assets/zh_Hans.lproj/Vector.strings @@ -1610,3 +1610,470 @@ // Onboarding "onboarding_splash_register_button_title" = "注册"; + + +// MARK: - MatrixKit + + +// room details dialog screen +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "创建账户:"; +"login_server_url_placeholder" = "网址(例如 https://matrix.org)"; +"login_home_server_title" = "主服务器网址:"; +"login_home_server_info" = "您的主服务器存储了您所有的对话和账户数据"; +"login_identity_server_title" = "身份认证服务器网址:"; +"login_identity_server_info" = "Matrix 提供了身份认证服务器以验证邮箱地址等是否属于某个 Matrix ID。目前只有 https://matrix.org 支持。"; +"login_user_id_placeholder" = "Matrix ID(例如 @bob:matrix.org 或 bob)"; +"login_password_placeholder" = "密码"; +"login_optional_field" = "可选"; +"login_display_name_placeholder" = "显示名(例如 Bob Obson)"; +"login_email_placeholder" = "电子邮件地址"; +"login_prompt_email_token" = "请输入您的电子邮件认证令牌:"; +"login_error_title" = "登录失败"; +"login_error_registration_is_not_supported" = "目前不支持注册"; +"login_error_forbidden" = "无效的用户名/密码"; +"login_error_unknown_token" = "不能识别特定访问令牌"; +"login_error_bad_json" = "JSON 格式错误"; +"login_error_not_json" = "不包含有效的 JSON"; +"login_error_limit_exceeded" = "发送了太多的请求"; +"login_error_user_in_use" = "此用户名已占用"; +"login_error_login_email_not_yet" = "此电子邮件链接还没有被点击"; +"login_use_fallback" = "使用备用页面"; +"login_leave_fallback" = "取消"; +"login_invalid_param" = "参数无效"; +"register_error_title" = "注册失败"; +"login_error_forgot_password_is_not_supported" = "当前不支持忘记密码"; +// Action +"no" = "否"; +"yes" = "是"; +"abort" = "中止"; +"discard" = "放弃"; +"dismiss" = "无视"; +"sign_up" = "注册"; +"submit" = "提交"; +"submit_code" = "提交码"; +"set_default_power_level" = "重置权限级别"; +"set_moderator" = "设置主持人"; +"set_admin" = "设置管理员"; +"start_chat" = "启动聊天"; +"start_voice_call" = "启动语音通话"; +"start_video_call" = "启动视频通话"; +"mention" = "提到"; +"select_account" = "选择一个账户"; +"attach_media" = "从库附加媒体"; +"capture_media" = "拍照片/视频"; +"invite_user" = "邀请 Matrix 用户"; +"reset_to_default" = "重置到默认"; +"resend_message" = "重新发送此消息"; +"select_all" = "选择全部"; +"cancel_upload" = "取消上传"; +"cancel_download" = "取消下载"; +"show_details" = "显示详情"; +"answer_call" = "接听通话"; +"reject_call" = "拒绝通话"; +"end_call" = "结束通话"; +"ignore" = "忽略"; +"unignore" = "取消忽略"; +// Events formatter +"notice_avatar_changed_too" = "(头像也已经改变)"; +"notice_room_name_removed" = "%@ 移除了此聊天室的名称"; +"notice_room_topic_removed" = "%@ 移除了话题"; +"notice_event_redacted" = ""; +"notice_event_redacted_by" = " 由 %@"; +"notice_event_redacted_reason" = " [理由:%@]"; +"notice_profile_change_redacted" = "%@ 已经更新了他的个人档案 %@"; +"notice_room_created" = "%@ 创建并配置了此聊天室。"; +"notice_room_join_rule" = "加入规则是:%@"; +"notice_room_power_level_intro" = "此聊天室成员的权限级别是:"; +"notice_room_power_level_acting_requirement" = "要进行此操作,用户必须具备的最低权限级别是 :"; +"notice_room_power_level_event_requirement" = "事件所需的最小权限级别:"; +"notice_room_aliases" = "此聊天室的别名是:%@"; +"notice_encrypted_message" = "已加密消息"; +"notice_encryption_enabled" = "%@ 打开了端对端加密(算法 %@)"; +"notice_image_attachment" = "图片附件"; +"notice_audio_attachment" = "音频附件"; +"notice_video_attachment" = "视频附件"; +"notice_location_attachment" = "位置附件"; +"notice_file_attachment" = "文件附件"; +"notice_invalid_attachment" = "无效附件"; +"notice_unsupported_attachment" = "不支持的附件:%@"; +"login_email_info" = "指定邮箱地址可以让其他 Matrix 用户更容易找到您,并允许您可以在未来重置密码。"; +"login_error_no_login_flow" = "我们未能从此主服务器获取认证信息"; +"login_error_do_not_support_login_flows" = "当前我们不支持此主服务器定义的任何或者所有登录流"; +"notice_feedback" = "反馈事件 (id: %@):%@"; +"notice_redaction" = "%@ 取消了一个事件 (id: %@)"; +"notice_error_unsupported_event" = "不支持的事件"; +"notice_error_unexpected_event" = "意外的事件"; +"notice_error_unknown_event_type" = "未知的事件类型"; +"notice_room_history_visible_to_anyone" = "%@ 将未来的聊天室消息历史设为对所有人可见。"; +"notice_room_history_visible_to_members" = "%@ 将未来的聊天室消息历史设为对所有聊天室成员可见。"; +"notice_room_history_visible_to_members_from_invited_point" = "你将未来的聊天室消息历史设为对所有聊天室成员可见,从他们被邀请时开始。"; +"notice_room_history_visible_to_members_from_joined_point" = "%@ 将未来的聊天室消息历史设为对所有聊天室成员可见,从他们加入时开始。"; +"notice_crypto_unable_to_decrypt" = "** 无法解密:%@ **"; +"notice_crypto_error_unknown_inbound_session_id" = "发送者的会话没有向我们发送此消息的密钥。"; +// room display name +"room_displayname_empty_room" = "空聊天室"; +"room_displayname_two_members" = "%@ 和 %@"; +"room_displayname_more_than_two_members" = "%@ 和 %@ 个其他人"; +// Settings +"settings" = "设置"; +"settings_enable_inapp_notifications" = "启用应用内通知"; +"settings_enable_push_notifications" = "启用推送通知"; +"settings_enter_validation_token_for" = "请输入 %@ 的验证令牌:"; +"notification_settings_room_rule_title" = "聊天室:“%@”"; +// Devices +"device_details_title" = "会话信息\n"; +"device_details_name" = "公开名称\n"; +"device_details_identifier" = "ID\n"; +"device_details_last_seen" = "最近一次上线\n"; +"device_details_last_seen_format" = "%@ @ %@\n"; +"device_details_rename_prompt_message" = "会话的公开名称对与你联络的人可见"; +"device_details_delete_prompt_title" = "认证"; +"device_details_delete_prompt_message" = "此操作需要额外的认证。\n要继续,请输入您的密码。"; +// Encryption information +"room_event_encryption_info_title" = "端对端加密信息\n\n"; +"room_event_encryption_info_event" = "事件信息\n"; +"room_event_encryption_info_event_user_id" = "用户 ID\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519 认证密钥\n"; +"login_mobile_device" = "移动设备"; +"login_tablet_device" = "平板电脑"; +"login_desktop_device" = "桌面设备"; +"notice_room_related_groups" = "和此聊天室关联的社群是:%@"; +"room_event_encryption_info_event_session_id" = "会话 ID\n"; +"room_event_encryption_info_event_decryption_error" = "解密错误\n"; +"room_event_encryption_info_event_unencrypted" = "未加密"; +"room_event_encryption_info_event_none" = "无"; +"room_event_encryption_info_device" = "\n发送者的会话信息\n"; +"room_event_encryption_info_device_unknown" = "未知会话\n"; +"room_event_encryption_info_device_name" = "公开名称\n"; +"room_event_encryption_info_device_id" = "ID\n"; +"room_event_encryption_info_device_verification" = "验证\n"; +"room_event_encryption_info_device_verified" = "已验证"; +"room_event_encryption_info_device_not_verified" = "未验证"; +"room_event_encryption_info_device_blocked" = "已拉黑"; +"room_event_encryption_info_verify" = "验证…"; +"room_event_encryption_info_unverify" = "取消验证"; +"room_event_encryption_verify_title" = "验证会话\n\n"; +"account_error_display_name_change_failed" = "昵称修改失败"; +"account_error_email_wrong_title" = "邮箱地址无效"; +"account_error_msisdn_wrong_title" = "手机号码无效"; +// Room creation +"room_creation_name_title" = "聊天室名称:"; +"room_creation_name_placeholder" = "(例如:今天中午吃啥)"; +// Room +"room_please_select" = "请选择一个聊天室"; +"room_error_join_failed_title" = "加入聊天室失败"; +"room_error_cannot_load_timeline" = "时间线加载失败"; +"room_error_timeline_event_not_found_title" = "时间线位置加载失败"; +"room_left" = "你离开了聊天室"; +"attachment_small" = "小 (~%@)"; +"attachment_medium" = "中 (~%@)"; +"attachment_large" = "大 (~%@)"; +"attachment_cancel_download" = "是否取消下载?"; +"attachment_cancel_upload" = "是否取消上传?"; +"attachment_e2e_keys_import" = "导入…"; +// Search +"search_no_results" = "没有结果"; +"search_searching" = "正在搜索…"; +// Time +"format_time_s" = "秒"; +"format_time_m" = "分钟"; +"format_time_h" = "小时"; +"format_time_d" = "天"; +// E2E import +"e2e_import_room_keys" = "导入聊天室密钥"; +"e2e_import" = "导入"; +"e2e_passphrase_enter" = "输入密码"; +// E2E export +"e2e_export_room_keys" = "导出聊天室密钥"; +"e2e_export" = "导出"; +"e2e_passphrase_empty" = "密码不能为空"; +// Others +"user_id_title" = "用户 ID:"; +"offline" = "离线"; +"unsent" = "取消发送"; +"error" = "错误"; +"default" = "默认"; +"private" = "私人"; +"public" = "公开"; +"power_level" = "权限级别"; +"network_error_not_reachable" = "请检查你的网络连接"; +"user_id_placeholder" = "例如:@bob:homeserver"; +"ssl_homeserver_url" = "主服务器网址:%@"; +// Country picker +"country_picker_title" = "请选择国家"; +// Language picker +"language_picker_title" = "请选择语言"; +"language_picker_default_language" = "默认(%@)"; +"notice_room_invite" = "%@ 邀请了 %@"; +"notice_room_third_party_invite" = "%@ 邀请 %@ 加入聊天室"; +"notice_room_third_party_registered_invite" = "%@ 同意了 %@ 的邀请"; +"notice_room_join" = "%@ 已加入"; +"notice_room_leave" = "%@ 已退出"; +"notice_room_reject" = "%@ 拒绝了邀请"; +"notice_room_kick" = "%@ 移除了 %@"; +"notice_room_unban" = "%@ 解封了 %@"; +"notice_room_ban" = "%@ 封禁了 %@"; +"notice_room_withdraw" = "%@ 撤回了对 %@ 的邀请"; +"notice_room_reason" = "。理由:%@"; +"notice_avatar_url_changed" = "%@ 更换了头像"; +"notice_display_name_set" = "%@ 将自己的昵称设置为 %@"; +"notice_display_name_changed_from" = "%@ 将自己的昵称从 %@ 改成 %@"; +"notice_display_name_removed" = "%@ 删除了自己的昵称"; +"notice_room_name_changed" = "%@ 将聊天室名称修改为 %@。"; +// button names +"ok" = "确定"; +"send" = "发送"; +"copy_button_name" = "复制"; +"resend" = "重新发送"; +"share" = "分享"; +"redact" = "移除"; +"set_power_level" = "设置权限级别"; +"delete" = "删除"; +"create_room" = "创建聊天室"; +"login" = "登录"; +"create_account" = "创建账号"; +"membership_invite" = "邀请"; +"membership_leave" = "退出"; +"membership_ban" = "已被封禁"; +"num_members_one" = "%@ 位用户"; +"num_members_other" = "%@ 位用户"; +"kick" = "移除"; +"ban" = "封禁"; +"unban" = "解封"; +// Login Screen +"login_error_already_logged_in" = "已登录"; +"login_error_must_start_http" = "URL 必须以 http[s]:// 开头"; +// Settings screen +"settings_title_config" = "选项"; +"settings_title_notifications" = "通知"; +// contacts list screen +"invitation_message" = "我想使用 Matrix 和你聊天。请访问 https://martix.org 以了解更多信息。"; +"account_error_matrix_session_is_not_opened" = "没有打开 Matrix 会话"; +"account_error_email_wrong_description" = "此邮箱地址似乎是无效的"; +"account_error_msisdn_wrong_description" = "此手机号码似乎是无效的"; +"room_creation_participants_placeholder" = "(例如:@bob:homeserver1; @john:homeserver2…)"; +"room_creation_participants_title" = "成员:"; +"room_creation_alias_placeholder_with_homeserver" = "(例如:#foo%@)"; +"room_creation_alias_placeholder" = "(例如:#foo:example.org)"; +"room_error_join_failed_empty_room" = "目前无法加入空聊天室。"; +"room_error_name_edition_not_authorized" = "你没有修改聊天室名称所需的权限"; +"room_error_topic_edition_not_authorized" = "你没有修改聊天室话题所需的权限"; +// Room members +"room_member_ignore_prompt" = "你确定要隐藏所有此用户发送的消息吗?"; +// Contacts +"contact_mx_users" = "Matrix 用户"; +"contact_local_contacts" = "本地联系人"; +// Groups +"e2e_passphrase_confirm" = "确认密码"; +"notification_settings_enable_notifications" = "启用通知"; +// Notification settings screen +"notification_settings_disable_all" = "禁用通知"; +"notification_settings_highlight" = "高亮"; +"notification_settings_custom_sound" = "自定义铃声"; +"notification_settings_select_room" = "选择一个聊天室"; +"notification_settings_other_alerts" = "其他警报"; +// gcm section +"call_ended" = "通话结束"; +// unrecognized SSL certificate +"ssl_trust" = "信任"; +"ssl_logout_account" = "登出"; +// actions +"action_logout" = "登出"; +"ssl_remain_offline" = "忽略"; +"message_unsaved_changes" = "尚有未经保存的修改。现在退出将会取消这些修改。"; +"notice_sticker" = "贴纸"; +"ssl_could_not_verify" = "无法验证远程服务器的身份。"; +// Account +"account_save_changes" = "保存更改"; +"account_link_email" = "邮箱地址"; +"account_linked_emails" = "邮箱地址"; +"account_email_validation_title" = "等待验证中"; +"account_msisdn_validation_title" = "等待验证中"; +"account_msisdn_validation_error" = "无法验证此手机号。"; +"account_error_picture_change_failed" = "头像修改失败"; +"e2e_passphrase_not_match" = "密码必须匹配"; +"not_supported_yet" = "尚未支持"; +"local_contacts_access_discovery_warning_title" = "发现用户"; +"notice_topic_changed" = "%@ 将话题修改为 \"%@\"。"; +"notice_placed_voice_call" = "%@ 发起了语音通话"; +"notice_placed_video_call" = "%@ 发起了视频通话"; +"notice_answered_video_call" = "%@ 接听了通话"; +"notice_ended_video_call" = "%@ 结束了通话"; +"notification_settings_always_notify" = "总是通知"; +"notification_settings_never_notify" = "从不通知"; +"notification_settings_sender_hint" = "@user:domain.com"; +// call string +"call_waiting" = "请等待…"; +"call_connecting" = "连接中…"; +"call_ring" = "正在通话…"; +"room_event_encryption_info_event_algorithm" = "算法\n"; +"room_event_encryption_verify_message" = "为验证此会话是否可信,请通过其他方式(例如当面交换或拨打电话)与其拥有者联系,并询问他们该会话的用户设置中的密钥是否与以下密钥匹配:\n\n\t会话名称:%@\n\t会话 ID:%@\n\t会话密钥:%@\n\n如果匹配,请点击下面的按钮。如果不匹配,那么说明有其他人截取了此会话,您可能想点击黑名单按钮。\n\n未来,这个验证过程将会变得更加精致、巧妙一些。"; +"room_event_encryption_info_event_fingerprint_key" = "声称的 Ed25519 指纹密钥\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519 指纹\n"; +"room_event_encryption_verify_ok" = "验证"; +"room_event_encryption_info_block" = "拉黑"; +"room_event_encryption_info_unblock" = "取消拉黑"; +"room_creation_alias_title" = "聊天室别称:"; +"notice_conference_call_started" = "VoIP 会议已开始"; +"notice_conference_call_request" = "%@ 发起了 VoIP 会议"; +"notice_conference_call_finished" = "VoIP 会议已结束"; +"notification_settings_enable_notifications_warning" = "所有设备上的通知都已被禁用。"; +"notice_in_reply_to" = "回复"; +"account_email_validation_message" = "请检查您的电子邮箱并点击邮件中的链接。完成此操作后,点击继续。"; +"account_email_validation_error" = "无法验证邮箱地址。请检查你的电子邮箱并点击邮件中的链接。完成后,请点击继续"; +"login_error_resource_limit_exceeded_title" = "超出资源使用限制"; +"login_error_resource_limit_exceeded_contact_button" = "联系管理员"; +"login_error_resource_limit_exceeded_message_default" = "此主服务器已超出某资源的使用限制。"; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "此主服务器已达到月活跃用户限制。"; +"login_error_resource_limit_exceeded_message_contact" = "\n\n请联系管理员以继续使用本服务。"; +"account_msisdn_validation_message" = "我们通过短信向您发送了一条验证码,请在下方输入它。"; +"room_error_timeline_event_not_found" = "应用程序试图加载此聊天室时间线中的特定点,但无法找到该时间点"; +"room_no_power_to_create_conference_call" = "您需要获得邀请权限才能在此聊天室开始会议"; +"room_no_conference_call_in_encrypted_rooms" = "加密聊天室暂不支持通话会议"; +// Reply to message +"message_reply_to_sender_sent_an_image" = "发送了一张图片。"; +"message_reply_to_sender_sent_an_audio_file" = "发送了一个音频文件。"; +"message_reply_to_sender_sent_a_file" = "发送了一个文件。"; +"message_reply_to_message_to_reply_to_prefix" = "回复"; +"room_member_power_level_prompt" = "该用户将被提升至与您一样的权限级别,所以此操作将无法撤销。\n您确定吗?"; +// Attachment +"attachment_size_prompt" = "发送为:"; +"attachment_original" = "实际大小 (%@)"; +"attachment_multiselection_size_prompt" = "发送图片为:"; +"attachment_multiselection_original" = "实际大小"; +"attachment_e2e_keys_file_prompt" = "此文件含有 Matrix 客户端导出的密钥。\n您想要查看文件内容还是导入密钥?"; +"message_reply_to_sender_sent_a_video" = "发送了一段视频。"; +"call_invite_expired" = "通话邀请已过期"; +"ssl_fingerprint_hash" = "指纹(%@):"; +"e2e_import_prompt" = "此操作允许您导入此前从其他 Matrix 客户端上导出的加密密钥。您将能够解密任何该客户端能解密的消息。\n该导出文件受密码保护。您应在此处输入密码以解密该文件。"; +"e2e_export_prompt" = "此操作允许您将加密聊天室中接收到的消息导出为一个本地文件。您将来可以将此文件导入到其他 Matrix 客户端中去解密这些消息。\n导出的文件将允许任何能够读取它的人解密您可以看到的任何加密消息,因此您应该小心保证其安全。"; +"e2e_passphrase_create" = "创建密码"; +"error_common_message" = "出现错误。请稍后再试。"; +// Permissions +"camera_access_not_granted_for_call" = "视频通话需要摄像头使用权限,但 %@ 无此权限"; +"microphone_access_not_granted_for_call" = "通话需要麦克风使用权限,但 %@ 无此权限"; +"local_contacts_access_not_granted" = "本地通讯录用户查找功能需要通讯录权限,但 %@ 无此权限"; +"local_contacts_access_discovery_warning" = "为了发现已经使用 Matrix 的联系人,%@ 可以把你地址簿里的邮箱地址和电话号码发送给你选定的 Matrix 身份认证服务器。如果支持的话,个人数据会在发送前被哈希——请检查你的身份认证服务器的隐私条款获知更多细节。"; +"notification_settings_global_info" = "通知设置已保存在您的账号中并在所有支持的客户端中共享(包括桌面通知)。\n\n规则会按顺序应用;第一条匹配的规则定义了消息的输出结果。\n因此:按字符规则的通知比按聊天室规则的通知级别更高,而这两者都比按发送者规则的通知级别更高。\n对于同一类型的多条规则,匹配列表中的第一条优先级最高。"; +"notification_settings_per_word_notifications" = "按字符通知"; +"notification_settings_per_word_info" = "单词不区分大小写,并且可能包含 * 通配符。 所以:\nfoo 匹配由单词分隔符包围的字符串 foo(例如标点符号和空格,或一行的开头/结尾)。\nfoo* 匹配任何以 foo 开头的单词。\n*foo* 匹配任何包含3个字母 foo 的单词。"; +"notification_settings_word_to_match" = "匹配的单词"; +"notification_settings_per_room_notifications" = "按聊天室通知"; +"notification_settings_per_sender_notifications" = "按发送者通知"; +"notification_settings_contain_my_user_name" = "有包含我的用户名的消息时用铃声通知"; +"notification_settings_contain_my_display_name" = "有包含我的昵称的消息时用铃声通知"; +"notification_settings_just_sent_to_me" = "有发送给我的消息时用铃声通知"; +"notification_settings_invite_to_a_new_room" = "我被邀请去一个新聊天室时用铃声通知"; +"notification_settings_people_join_leave_rooms" = "有人加入或离开聊天室时发送通知"; +"notification_settings_receive_a_call" = "当我收到通话请求时发送通知"; +"notification_settings_suppress_from_bots" = "取消来自机器人的通知"; +"notification_settings_by_default" = "默认…"; +"notification_settings_notify_all_other" = "为所有其他消息/聊天室发送通知"; +"incoming_video_call" = "视频通话来电"; +"incoming_voice_call" = "语音通话来电"; +"ssl_cert_not_trust" = "这可能意味着有人正在恶意劫持您的流量,或者您的手机不信任远程服务器提供的数字证书。"; +"ssl_cert_new_account_expl" = "如果服务器管理员说这是预期的情况,请确保下面的指纹与管理员提供的指纹相匹配。"; +"ssl_unexpected_existing_expl" = "证书已从一个先前受您的设备信任的证书更改为另一个。这非常反常!建议您 不要 接受此新证书。"; +"ssl_expected_existing_expl" = "证书已从曾受信任的证书更改为不受信任的证书。服务器可能已更新其证书,请联系管理员并核对服务器的指纹。"; +"ssl_only_accept" = "请 仅 在服务器管理员发布了与上述指纹匹配的指纹的情况下接受该证书。"; +"notice_encryption_enabled_ok" = "%@ 启用了端到端加密。"; +"notice_encryption_enabled_unknown_algorithm" = "%1$@ 启用了端到端加密(无法识别的算法 %2$@)。"; +"device_details_rename_prompt_title" = "会话名称"; +"account_error_push_not_allowed" = "未允许通知"; +"notice_room_third_party_revoked_invite" = "%@ 撤回了对 %@ 加入聊天室的邀请"; +"notice_encryption_enabled_ok_by_you" = "你启用了端对端加密。"; +"notice_room_created_by_you_for_dm" = "你加入了。"; +"notice_room_topic_removed_by_you" = "你移除了话题"; +"notice_room_name_removed_by_you_for_dm" = "你移除了名称"; +"notice_room_name_removed_by_you" = "你移除了聊天室名称"; +"notice_conference_call_request_by_you" = "你请求了 VoIP 会议"; +"notice_room_ban_by_you" = "你封禁了 %@"; +"notice_room_unban_by_you" = "你解封了 %@"; +"notice_room_kick_by_you" = "你移除了 %@"; +"notice_room_reject_by_you" = "你拒绝了邀请"; +"notice_room_leave_by_you" = "你退出了"; +"notice_room_join_by_you" = "你加入了"; +"notice_room_third_party_registered_invite_by_you" = "你接受了 %@ 的邀请"; +"notice_room_third_party_invite_by_you_for_dm" = "你邀请了 %@"; +"notice_room_invite_you" = "%@ 邀请了你"; + +// Notice Events with "You" +"notice_room_invite_by_you" = "你邀请了 %@"; +"notice_declined_video_call" = "%@ 拒接了通话"; +"notice_room_name_changed_for_dm" = "%@ 将名称修改为 %@。"; +"notice_room_third_party_revoked_invite_for_dm" = "%@ 撤回了对 %@ 的邀请"; +"notice_room_third_party_invite_for_dm" = "%@ 邀请了 %@"; +"room_left_for_dm" = "你离开了"; +"notice_room_power_level_intro_for_dm" = "成员的权限级别是:"; +"notice_room_aliases_for_dm" = "别名是:%@"; +"notice_room_created_for_dm" = "%@ 已加入。"; +"notice_room_name_removed_for_dm" = "%@ 移除了名称"; +"resume_call" = "恢复"; +"notice_encryption_enabled_unknown_algorithm_by_you" = "你启用了端对端加密(无法识别的算法 %@)。"; +"notice_event_redacted_by_you" = " 被你"; +"notice_room_third_party_revoked_invite_by_you" = "你撤回了对 %@ 加入此聊天室的邀请"; +"notice_room_join_rule_public_by_you_for_dm" = "你将此聊天设为公开。"; +"notice_room_join_rule_public_by_you" = "你将此聊天室设为公开。"; +"notice_room_join_rule_public_for_dm" = "%@ 将此聊天设为公开。"; +"notice_room_join_rule_public" = "%@ 将此聊天室设为公开。"; +"notice_room_join_rule_invite_by_you_for_dm" = "你将此聊天设为仅邀请。"; +"notice_room_join_rule_invite_by_you" = "你将此聊天室设为仅邀请。"; +"notice_room_join_rule_invite_for_dm" = "%@ 将此聊天设为仅邀请。"; +// New +"notice_room_join_rule_invite" = "%@ 将此聊天室设为仅邀请。"; +"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ 将未来的消息设为对所有人可见,从他们被邀请时开始。"; +"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "你将未来的消息设为对所有人可见,从他们被邀请时开始。"; +"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "你将未来的消息设为对所有人可见,从他们加入时开始。"; +"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ 将未来的消息设为对所有人可见,从他们加入时开始。"; +"notice_room_history_visible_to_members_from_joined_point_by_you" = "你将未来的聊天室消息历史设为对所有聊天室成员可见,从他们加入时开始。"; +"notice_room_history_visible_to_members_from_invited_point_by_you" = "你将未来的聊天室消息历史设为对所有聊天室成员可见,从他们被邀请时开始。"; +"notice_room_history_visible_to_members_for_dm" = "%@ 将未来的消息设为对所有聊天室成员可见。"; +"notice_room_third_party_invite_by_you" = "你邀请 %@ 加入此聊天室"; +"notice_room_history_visible_to_members_by_you_for_dm" = "你将未来的消息设为对所有聊天室成员可见。"; +"notice_room_history_visible_to_members_by_you" = "你将未来的聊天室消息历史设为对所有聊天室成员可见。"; +"notice_room_history_visible_to_anyone_by_you" = "你将未来的聊天室消息历史设为对所有人可见。"; +"notice_redaction_by_you" = "你撤回了一个事件(id:%@)"; +"notice_room_withdraw_by_you" = "你撤回了对 %@ 的邀请"; +"notice_room_third_party_revoked_invite_by_you_for_dm" = "你撤回了对 %@ 的邀请"; +"call_more_actions_dialpad" = "拨号键盘"; +"call_more_actions_transfer" = "转移"; +"call_more_actions_audio_use_device" = "设备扬声器"; +"call_more_actions_audio_use_headset" = "使用耳机音频"; +"call_more_actions_change_audio_device" = "更改音频设备"; +"call_more_actions_unhold" = "继续"; +"call_more_actions_hold" = "挂起"; +"call_holded" = "你挂起了通话"; +"call_remote_holded" = "%@ 挂起了通话"; +"notice_room_created_by_you" = "你创建并配置了此聊天室。"; +"notice_profile_change_redacted_by_you" = "你更新了你的资料 %@"; +"notice_declined_video_call_by_you" = "你拒绝了通话"; +"notice_ended_video_call_by_you" = "你挂断了通话"; +"notice_answered_video_call_by_you" = "你接听了通话"; +"notice_placed_video_call_by_you" = "你发起了视频通话"; +"notice_placed_voice_call_by_you" = "你发起了语音通话"; +"notice_room_name_changed_by_you_for_dm" = "你将名称修改为 %@。"; +"notice_room_name_changed_by_you" = "你将聊天室名称修改为 %@。"; +"notice_topic_changed_by_you" = "你将话题修改为 \"%@\"。"; +"notice_display_name_set_by_you" = "你将你的昵称设置为 %@"; +"notice_display_name_changed_from_by_you" = "你将你的昵称从 %@ 更改为 %@"; +"notice_display_name_removed_by_you" = "你移除了你的昵称"; +"notice_avatar_url_changed_by_you" = "你更换了头像"; +"call_transfer_to_user" = "转接到 %@"; +"call_ringing" = "响铃中…"; +"call_consulting_with_user" = "与 %@ 商量"; +"call_video_with_user" = "与 %@ 进行视频通话"; +"call_voice_with_user" = "与 %@ 进行语音通话"; +"e2e_passphrase_too_short" = "密码口令太短 (长度至少为 %d 个字符)"; +"microphone_access_not_granted_for_voice_message" = "语音消息需要访问麦克风,但 %@ 无权使用它"; +"message_reply_to_sender_sent_a_voice_message" = "发送了一条语音消息。"; +"attachment_large_with_resolution" = "大 %@ (~%@)"; +"attachment_medium_with_resolution" = "中等 %@ (~%@)"; +"attachment_small_with_resolution" = "小 %@ (~%@)"; +"attachment_size_prompt_message" = "你可以在设置中关闭这个。"; +"attachment_size_prompt_title" = "确认要发送的大小"; +"room_displayname_all_other_participants_left" = "%@ (离开)"; +"room_displayname_all_other_members_left" = "%@ (离开)"; +"attachment_unsupported_preview_message" = "文件类型不受支持。"; +"attachment_unsupported_preview_title" = "无法预览"; diff --git a/Riot/Assets/zh_Hant.lproj/Vector.strings b/Riot/Assets/zh_Hant.lproj/Vector.strings index 327f1ae02..e0784d095 100644 --- a/Riot/Assets/zh_Hant.lproj/Vector.strings +++ b/Riot/Assets/zh_Hant.lproj/Vector.strings @@ -907,3 +907,244 @@ "callbar_return" = "返回"; "done" = "完成"; "open" = "開啟"; + + +// MARK: - MatrixKit + + +"matrix" = "Matrix"; +// Login Screen +"login_create_account" = "建立帳號:"; +"login_server_url_placeholder" = "URL(如 https://matrix.org)"; +"login_home_server_title" = "主伺服器:"; +"login_home_server_info" = "您的主伺服器會儲存所有的對話紀錄跟帳號資料"; +"login_identity_server_title" = "身份認證伺服器:"; +"login_identity_server_info" = "Matrix 提供身份認證伺服器來追蹤電子郵件信箱與 Matrix ID 的關係。目前只有 https://matrix.org 提供這個服務。"; +"login_user_id_placeholder" = "Matrix ID(如 @bob:matrix.org 或 bob)"; +"login_password_placeholder" = "密碼"; +"login_optional_field" = "選擇性"; +"login_display_name_placeholder" = "顯示名稱(如 Bob Obson)"; +"login_email_placeholder" = "電子郵件地址"; +"login_leave_fallback" = "取消"; +// Encryption information +"room_event_encryption_info_title" = "點對點加密資訊\n\n"; +"room_event_encryption_info_event" = "事件資訊\n"; +"room_event_encryption_info_event_user_id" = "使用者 ID\n"; +"room_event_encryption_info_event_identity_key" = "Curve25519 身份認證金鑰\n"; +"room_event_encryption_info_event_fingerprint_key" = "已聲請之 Ed25519 指紋金鑰\n"; +"room_event_encryption_info_event_algorithm" = "演算法\n"; +"room_event_encryption_info_event_session_id" = "會話 ID\n"; +"room_event_encryption_info_event_decryption_error" = "解密錯誤\n"; +"room_event_encryption_info_event_unencrypted" = "未加密"; +"room_event_encryption_info_event_none" = "無"; +"room_event_encryption_info_device" = "\n發送者的裝置訊息\n"; +"room_event_encryption_info_device_unknown" = "未知的裝置\n"; +"room_event_encryption_info_device_name" = "名稱\n"; +"room_event_encryption_info_device_id" = "裝置 ID\n"; +"room_event_encryption_info_device_verification" = "驗證\n"; +"room_event_encryption_info_device_fingerprint" = "Ed25519 指紋\n"; +"room_event_encryption_info_device_verified" = "已驗證"; +"room_event_encryption_info_device_not_verified" = "未驗證"; +"room_event_encryption_info_device_blocked" = "已列入黑名單"; +"room_event_encryption_info_verify" = "驗證..."; +"room_event_encryption_info_unverify" = "取消驗證"; +"room_event_encryption_info_block" = "黑名單"; +"room_event_encryption_info_unblock" = "解除黑名單"; +"room_event_encryption_verify_title" = "驗證裝置\n\n"; +"room_event_encryption_verify_message" = "若要檢查這個裝置是可被信任的,請透過其他方法聯絡所有者(例如面對面或是在電話中),並詢問在其使用者設定中以下金鑰是否是一致的:\n\n\n\t裝置名稱:%@\n\t裝置 ID:%@\n\t裝置金鑰:%@\n\n若相同,請點選下面的「驗證確認」按鈕。如果不相同,表示有人從中攔截這個裝置,您可能要點選「黑名單」按鈕。\n\n未來驗證手續會更加簡單,若有不便敬請見諒。"; +"room_event_encryption_verify_ok" = "驗證確認"; +// Account +"account_save_changes" = "儲存修改"; +// Groups +// E2E import +"e2e_import_room_keys" = "匯入聊天室金鑰"; +"e2e_import" = "匯入"; +"e2e_passphrase_enter" = "輸入通關密語"; +// E2E export +"e2e_export_room_keys" = "匯出房間金鑰"; +"e2e_export" = "匯出"; +"e2e_passphrase_empty" = "通關密語不能為空"; +"e2e_passphrase_not_match" = "通關密語必須符合"; +// Others +"user_id_title" = "使用者 ID:"; +"offline" = "離線"; +"unsent" = "取消傳送"; +"error" = "錯誤"; +"not_supported_yet" = "尚未支援"; +"default" = "預設"; +"private" = "私密"; +"public" = "公開"; +"power_level" = "權限等級"; +"network_error_not_reachable" = "請檢查您的網路連線"; +"user_id_placeholder" = "例:@bob:homeserver"; +"ssl_homeserver_url" = "家伺服器 URL:%@"; +// Permissions +"camera_access_not_granted_for_call" = "視訊電話需要使用相機權限,但是 %@ 沒有存取權限"; +"microphone_access_not_granted_for_call" = "電話需要使用麥克風權限,但是 %@ 沒有存取權限"; +"local_contacts_access_not_granted" = "從本機的聯絡資訊探索使用者,需要存取聯絡資訊的權限,但是 %@ 沒有存取權限"; +"local_contacts_access_discovery_warning_title" = "使用者探索"; +"local_contacts_access_discovery_warning" = "%@ 要從您的聯絡資訊上傳電子郵件位址跟電話號碼來探索使用者"; +// Country picker +"country_picker_title" = "選擇國家"; +// Language picker +"language_picker_title" = "選擇語言"; +"language_picker_default_language" = "預設 (%@)"; +"notice_room_invite" = "%@ 邀請了 %@"; +"notice_room_third_party_invite" = "%@ 已邀請 %@ 加入聊天室"; +"notice_room_third_party_registered_invite" = "%@ 同意了 %@ 的邀請"; +"notice_room_join" = "%@ 已進入"; +"notice_room_leave" = "%@ 已離開"; +"notice_room_reject" = "%@ 拒絕了邀請"; +"notice_room_kick" = "%@ 踢了 %@"; +"notice_room_unban" = "%@ 解除了 %@ 的封鎖"; +"notice_room_ban" = "%@ 封鎖了 %@"; +"notice_room_withdraw" = "%@ 撤回了 %@ 的邀請"; +"notice_room_reason" = ",原因:%@"; +"notice_avatar_url_changed" = "%@ 變更了頭像"; +"notice_display_name_set" = "%@ 設定了自己的顯示名稱為 %@"; +"notice_display_name_changed_from" = "%@ 將自己的顯示名稱從 %@ 改為 %@"; +"notice_display_name_removed" = "%@ 移除了自己的顯示名稱"; +"notice_topic_changed" = "%@ 已經變更主題為:%@"; +"notice_room_name_changed" = "%@ 將房間名稱變更為 %@"; +"notice_placed_voice_call" = "%@ 開始了語音通話"; +"notice_placed_video_call" = "%@ 開始了視訊通話"; +"notice_answered_video_call" = "%@ 接聽了通話"; +"notice_ended_video_call" = "%@ 結束了通話"; +"notice_conference_call_request" = "%@ 請求了 VoIP 會議"; +"notice_conference_call_started" = "VoIP 會議已開始"; +"notice_conference_call_finished" = "VoIP 會議已結束"; +// button names +"ok" = "好"; +"send" = "傳送"; +"copy_button_name" = "複製"; +"resend" = "重新傳送"; +"redact" = "撤除"; +"share" = "分享"; +"set_power_level" = "權限等級"; +"delete" = "刪除"; +// actions +"action_logout" = "登出"; +"create_room" = "建立聊天室"; +"login" = "登入"; +"create_account" = "建立帳號"; +"membership_invite" = "邀請"; +"membership_leave" = "離開"; +"membership_ban" = "已被封鎖"; +"num_members_one" = "%@ 位使用者"; +"num_members_other" = "%@ 位使用者"; +"kick" = "踢人"; +"ban" = "封鎖"; +"unban" = "解除封鎖"; +// unrecognized SSL certificate +"ssl_trust" = "信任"; +"ssl_logout_account" = "登出"; +"ssl_remain_offline" = "忽略"; +"ssl_fingerprint_hash" = "指紋 (%@):"; +"ssl_could_not_verify" = "無法驗證遠端伺服器的身份。"; +"ssl_cert_not_trust" = "這可能代表有人惡意攔截您的流量,或是裝置無法信任遠端伺服器所提供的憑證。"; +"ssl_cert_new_account_expl" = "如果伺服器管理者表示這是可預期的狀況,請確定以下指紋與管理者提供的一致。"; +"ssl_unexpected_existing_expl" = "這個憑證有別於原本在您裝置所信任的憑證,這個狀況相當不常見。建議您不要信任新的憑證。"; +"ssl_expected_existing_expl" = "這個憑證從原本信任的憑證換成不信任的憑證,可能因為伺服器更新了它的憑證。請聯絡伺服器管理者確認新的指紋一致。"; +"ssl_only_accept" = "只有在伺服器管理者提供的指紋與以上指紋一致時,您才能信任這個憑證。"; +// Devices +"device_details_title" = "裝置資訊\n"; +"login_error_title" = "登入失敗"; +"login_error_no_login_flow" = "無法從該主伺服器取得驗證訊息"; +"login_error_do_not_support_login_flows" = "目前我們不支援任何該主伺服器定義的登入流程"; +"login_error_registration_is_not_supported" = "目前不支援註冊"; +"login_error_forbidden" = "無效的使用者名稱/密碼"; +"login_error_unknown_token" = "不能識別指定的訪問權杖"; +"login_error_bad_json" = "JSON 格式錯誤"; +"login_error_not_json" = "未包含有效的 JSON"; +"login_error_limit_exceeded" = "已傳送過多的請求"; +"login_error_user_in_use" = "該使用者名稱已被使用"; +"login_error_login_email_not_yet" = "該電子郵件連結向未被點擊"; +"login_use_fallback" = "使用備用頁"; +"login_invalid_param" = "無效的參數"; +"register_error_title" = "註冊失敗"; +"login_tablet_device" = "平板電腦"; +// Action +"no" = "否"; +"yes" = "是"; +"abort" = "終止"; +"login_email_info" = "指定一個電子郵件地址可以讓其他 Matirx 用戶更容易找到您,並讓您可以在未來重置密碼。"; +"login_prompt_email_token" = "請輸入您的電子郵件認證權杖:"; +"login_error_forgot_password_is_not_supported" = "目前不支援忘記密碼"; +"login_mobile_device" = "行動裝置"; +"login_desktop_device" = "桌上型電腦"; +"discard" = "放棄"; +"dismiss" = "無視"; +"sign_up" = "註冊"; +"submit" = "送出"; +"submit_code" = "送出碼"; +"set_default_power_level" = "重設權限等級"; +"set_admin" = "設定管理員"; +"set_moderator" = "設定主持人"; +"start_chat" = "開始聊天"; +"start_voice_call" = "開始語音通話"; +"start_video_call" = "開始視訊通話"; +"mention" = "提到"; +"select_account" = "選擇一個帳號"; +"capture_media" = "拍攝照片/影片"; +"invite_user" = "邀請 Matrix 用戶"; +"reset_to_default" = "重置為預設值"; +"attach_media" = "從庫中附加媒體"; +"resend_message" = "重新傳送該訊息"; +"select_all" = "全選"; +"cancel_upload" = "取消上傳"; +"cancel_download" = "取消下載"; +"show_details" = "顯示詳細資料"; +"answer_call" = "接聽來電"; +"reject_call" = "拒絕來電"; +"end_call" = "結束通話"; +"ignore" = "忽略"; +"unignore" = "取消忽略"; +// Events formatter +"notice_avatar_changed_too" = "(頭像也已經改變)"; +"notice_room_name_removed" = "%@ 移除了該聊天室的名字"; +"notice_room_topic_removed" = "%@ 移除了該主題"; +"notice_event_redacted_by" = " 由 %@"; +"notice_event_redacted_reason" = " [理由:%@]"; +"notice_profile_change_redacted" = "%@ 已更新他的個人檔案 %@"; +"notice_room_created" = "%@ 創建了該聊天室"; +"notice_room_join_rule" = "加入規則: %@"; +"notice_room_power_level_intro" = "聊天室成員們的權限级别是:"; +"notice_event_redacted" = "<撤回%@>"; +// room details dialog screen +"notice_encrypted_message" = "已加密的訊息"; +"notice_image_attachment" = "附加圖片"; +"notice_audio_attachment" = "附加音訊"; +"notice_video_attachment" = "附加視訊"; +"notice_location_attachment" = "附加位置資訊"; +"notice_file_attachment" = "附加檔案"; +"notice_invalid_attachment" = "無效的附加資訊"; +"notice_unsupported_attachment" = "未支援的附加資訊:%@"; +"notice_sticker" = "貼圖"; +// room display name +"room_displayname_empty_room" = "空的聊天室"; +"room_displayname_two_members" = "%@ 和 %@"; +"room_displayname_more_than_two_members" = "%@ 和 %u 個其他人"; +// Settings +"settings" = "設定"; +"settings_enable_push_notifications" = "啟用推播通知"; +"device_details_name" = "名稱\n"; +"device_details_identifier" = "裝置代碼\n"; +"device_details_last_seen" = "上次使用\n"; +"device_details_rename_prompt_message" = "裝置名稱:"; +"login_error_resource_limit_exceeded_title" = "超過資源限制"; +"login_error_resource_limit_exceeded_message_default" = "此家伺服器已經超過其中一項資源限制。"; +"login_error_resource_limit_exceeded_message_monthly_active_user" = "此家伺服器已經達到其每月活躍使用者限制。"; +"login_error_resource_limit_exceeded_message_contact" = "\n\n請聯絡您的伺服器管理員以繼續使用其服務。"; +"login_error_resource_limit_exceeded_contact_button" = "聯絡管理員"; +"notice_room_power_level_acting_requirement" = "完成此操作之前使用者必須具有的最小權限級別是:"; +"notice_room_power_level_event_requirement" = "事件相關的最小權限級別是:"; +"notice_room_aliases" = "此聊天室別名是:%@"; +"notice_room_related_groups" = "此聊天室關聯的群組是:%@"; +"notice_encryption_enabled" = "%@ 開啓了端對端加密 (演算法 %@)"; +"notice_feedback" = "回報事件 (id:%@):%@"; +"notice_redaction" = "%@ 取消了一个事件 (id: %@)"; +"notice_error_unsupported_event" = "不支援的事件"; +"notice_error_unexpected_event" = "意外事件"; +"notice_error_unknown_event_type" = "未知的事件類型"; +"notice_room_history_visible_to_anyone" = "%@ 讓任何人都能看到未來的聊天室歷史記錄。"; +"notice_room_history_visible_to_members" = "%@ 讓所有聊天室成員都能看到未來的房間歷史記錄。"; diff --git a/Riot/Categories/UIView+Toast.swift b/Riot/Categories/UIView+Toast.swift index b89d63ac1..1d3205704 100644 --- a/Riot/Categories/UIView+Toast.swift +++ b/Riot/Categories/UIView+Toast.swift @@ -60,7 +60,7 @@ extension UIView { duration: TimeInterval = Constants.defaultDuration, position: ToastPosition = Constants.defaultPosition, additionalMargin: CGFloat = 0.0) { - let view = BasicToastView(withMessage: message, image: image) + let view = RectangleToastView(withMessage: message, image: image) vc_toast(view: view, duration: duration, position: position, additionalMargin: additionalMargin) } diff --git a/Riot/Generated/Images.swift b/Riot/Generated/Images.swift index ee18b509e..65511e31c 100644 --- a/Riot/Generated/Images.swift +++ b/Riot/Generated/Images.swift @@ -123,6 +123,7 @@ internal class Asset: NSObject { internal static let onboardingSplashScreenPage3Dark = ImageAsset(name: "OnboardingSplashScreenPage3Dark") internal static let onboardingSplashScreenPage4 = ImageAsset(name: "OnboardingSplashScreenPage4") internal static let onboardingSplashScreenPage4Dark = ImageAsset(name: "OnboardingSplashScreenPage4Dark") + internal static let onboardingCongratulationsIcon = ImageAsset(name: "onboarding_congratulations_icon") internal static let onboardingUseCaseCommunity = ImageAsset(name: "onboarding_use_case_community") internal static let onboardingUseCaseCommunityDark = ImageAsset(name: "onboarding_use_case_community_dark") internal static let onboardingUseCaseIcon = ImageAsset(name: "onboarding_use_case_icon") diff --git a/Riot/Generated/MatrixKitStrings.swift b/Riot/Generated/MatrixKitStrings.swift deleted file mode 100644 index f59c7d116..000000000 --- a/Riot/Generated/MatrixKitStrings.swift +++ /dev/null @@ -1,1794 +0,0 @@ -// swiftlint:disable all -// Generated using SwiftGen, by O.Halligon — https://github.com/SwiftGen/SwiftGen - -import Foundation - -// swiftlint:disable superfluous_disable_command -// swiftlint:disable file_length - -// MARK: - Strings - -// swiftlint:disable function_parameter_count identifier_name line_length type_body_length -@objcMembers -public class MatrixKitL10n: NSObject { - /// Abort - public static var abort: String { - return MatrixKitL10n.tr("abort") - } - /// Unable to verify email address. Please check your email and click on the link it contains. Once this is done, click continue - public static var accountEmailValidationError: String { - return MatrixKitL10n.tr("account_email_validation_error") - } - /// Please check your email and click on the link it contains. Once this is done, click continue. - public static var accountEmailValidationMessage: String { - return MatrixKitL10n.tr("account_email_validation_message") - } - /// Verification Pending - public static var accountEmailValidationTitle: String { - return MatrixKitL10n.tr("account_email_validation_title") - } - /// Display name change failed - public static var accountErrorDisplayNameChangeFailed: String { - return MatrixKitL10n.tr("account_error_display_name_change_failed") - } - /// This doesn't appear to be a valid email address - public static var accountErrorEmailWrongDescription: String { - return MatrixKitL10n.tr("account_error_email_wrong_description") - } - /// Invalid Email Address - public static var accountErrorEmailWrongTitle: String { - return MatrixKitL10n.tr("account_error_email_wrong_title") - } - /// Matrix session is not opened - public static var accountErrorMatrixSessionIsNotOpened: String { - return MatrixKitL10n.tr("account_error_matrix_session_is_not_opened") - } - /// This doesn't appear to be a valid phone number - public static var accountErrorMsisdnWrongDescription: String { - return MatrixKitL10n.tr("account_error_msisdn_wrong_description") - } - /// Invalid Phone Number - public static var accountErrorMsisdnWrongTitle: String { - return MatrixKitL10n.tr("account_error_msisdn_wrong_title") - } - /// Picture change failed - public static var accountErrorPictureChangeFailed: String { - return MatrixKitL10n.tr("account_error_picture_change_failed") - } - /// Notifications not allowed - public static var accountErrorPushNotAllowed: String { - return MatrixKitL10n.tr("account_error_push_not_allowed") - } - /// Link Email - public static var accountLinkEmail: String { - return MatrixKitL10n.tr("account_link_email") - } - /// Linked emails - public static var accountLinkedEmails: String { - return MatrixKitL10n.tr("account_linked_emails") - } - /// Unable to verify phone number. - public static var accountMsisdnValidationError: String { - return MatrixKitL10n.tr("account_msisdn_validation_error") - } - /// We've sent an SMS with an activation code. Please enter this code below. - public static var accountMsisdnValidationMessage: String { - return MatrixKitL10n.tr("account_msisdn_validation_message") - } - /// Verification Pending - public static var accountMsisdnValidationTitle: String { - return MatrixKitL10n.tr("account_msisdn_validation_title") - } - /// Save changes - public static var accountSaveChanges: String { - return MatrixKitL10n.tr("account_save_changes") - } - /// Logout - public static var actionLogout: String { - return MatrixKitL10n.tr("action_logout") - } - /// Answer Call - public static var answerCall: String { - return MatrixKitL10n.tr("answer_call") - } - /// Attach Media from Library - public static var attachMedia: String { - return MatrixKitL10n.tr("attach_media") - } - /// Cancel the download? - public static var attachmentCancelDownload: String { - return MatrixKitL10n.tr("attachment_cancel_download") - } - /// Cancel the upload? - public static var attachmentCancelUpload: String { - return MatrixKitL10n.tr("attachment_cancel_upload") - } - /// This file contains encryption keys exported from a Matrix client.\nDo you want to view the file content or import the keys it contains? - public static var attachmentE2eKeysFilePrompt: String { - return MatrixKitL10n.tr("attachment_e2e_keys_file_prompt") - } - /// Import... - public static var attachmentE2eKeysImport: String { - return MatrixKitL10n.tr("attachment_e2e_keys_import") - } - /// Large (~%@) - public static func attachmentLarge(_ p1: String) -> String { - return MatrixKitL10n.tr("attachment_large", p1) - } - /// Large %@ (~%@) - public static func attachmentLargeWithResolution(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("attachment_large_with_resolution", p1, p2) - } - /// Medium (~%@) - public static func attachmentMedium(_ p1: String) -> String { - return MatrixKitL10n.tr("attachment_medium", p1) - } - /// Medium %@ (~%@) - public static func attachmentMediumWithResolution(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("attachment_medium_with_resolution", p1, p2) - } - /// Actual Size - public static var attachmentMultiselectionOriginal: String { - return MatrixKitL10n.tr("attachment_multiselection_original") - } - /// Do you want to send images as: - public static var attachmentMultiselectionSizePrompt: String { - return MatrixKitL10n.tr("attachment_multiselection_size_prompt") - } - /// Actual Size (%@) - public static func attachmentOriginal(_ p1: String) -> String { - return MatrixKitL10n.tr("attachment_original", p1) - } - /// Do you want to send as: - public static var attachmentSizePrompt: String { - return MatrixKitL10n.tr("attachment_size_prompt") - } - /// You can turn this off in settings. - public static var attachmentSizePromptMessage: String { - return MatrixKitL10n.tr("attachment_size_prompt_message") - } - /// Confirm size to send - public static var attachmentSizePromptTitle: String { - return MatrixKitL10n.tr("attachment_size_prompt_title") - } - /// Small (~%@) - public static func attachmentSmall(_ p1: String) -> String { - return MatrixKitL10n.tr("attachment_small", p1) - } - /// Small %@ (~%@) - public static func attachmentSmallWithResolution(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("attachment_small_with_resolution", p1, p2) - } - /// This file type is not supported. - public static var attachmentUnsupportedPreviewMessage: String { - return MatrixKitL10n.tr("attachment_unsupported_preview_message") - } - /// Unable to preview - public static var attachmentUnsupportedPreviewTitle: String { - return MatrixKitL10n.tr("attachment_unsupported_preview_title") - } - /// Invalid username - public static var authInvalidUserName: String { - return MatrixKitL10n.tr("auth_invalid_user_name") - } - /// Not found - public static var authResetPasswordErrorNotFound: String { - return MatrixKitL10n.tr("auth_reset_password_error_not_found") - } - /// Unauthorized - public static var authResetPasswordErrorUnauthorized: String { - return MatrixKitL10n.tr("auth_reset_password_error_unauthorized") - } - /// Username in use - public static var authUsernameInUse: String { - return MatrixKitL10n.tr("auth_username_in_use") - } - /// Back - public static var back: String { - return MatrixKitL10n.tr("back") - } - /// Ban - public static var ban: String { - return MatrixKitL10n.tr("ban") - } - /// Connecting… - public static var callConnecting: String { - return MatrixKitL10n.tr("call_connecting") - } - /// Consulting with %@ - public static func callConsultingWithUser(_ p1: String) -> String { - return MatrixKitL10n.tr("call_consulting_with_user", p1) - } - /// Call ended - public static var callEnded: String { - return MatrixKitL10n.tr("call_ended") - } - /// You held the call - public static var callHolded: String { - return MatrixKitL10n.tr("call_holded") - } - /// Call Invite Expired - public static var callInviteExpired: String { - return MatrixKitL10n.tr("call_invite_expired") - } - /// Device Speaker - public static var callMoreActionsAudioUseDevice: String { - return MatrixKitL10n.tr("call_more_actions_audio_use_device") - } - /// Change Audio Device - public static var callMoreActionsChangeAudioDevice: String { - return MatrixKitL10n.tr("call_more_actions_change_audio_device") - } - /// Dial pad - public static var callMoreActionsDialpad: String { - return MatrixKitL10n.tr("call_more_actions_dialpad") - } - /// Hold - public static var callMoreActionsHold: String { - return MatrixKitL10n.tr("call_more_actions_hold") - } - /// Transfer - public static var callMoreActionsTransfer: String { - return MatrixKitL10n.tr("call_more_actions_transfer") - } - /// Resume - public static var callMoreActionsUnhold: String { - return MatrixKitL10n.tr("call_more_actions_unhold") - } - /// %@ held the call - public static func callRemoteHolded(_ p1: String) -> String { - return MatrixKitL10n.tr("call_remote_holded", p1) - } - /// Ringing… - public static var callRinging: String { - return MatrixKitL10n.tr("call_ringing") - } - /// Transfer to %@ - public static func callTransferToUser(_ p1: String) -> String { - return MatrixKitL10n.tr("call_transfer_to_user", p1) - } - /// Video call with %@ - public static func callVideoWithUser(_ p1: String) -> String { - return MatrixKitL10n.tr("call_video_with_user", p1) - } - /// Voice call with %@ - public static func callVoiceWithUser(_ p1: String) -> String { - return MatrixKitL10n.tr("call_voice_with_user", p1) - } - /// Video calls require access to the Camera but %@ doesn't have permission to use it - public static func cameraAccessNotGrantedForCall(_ p1: String) -> String { - return MatrixKitL10n.tr("camera_access_not_granted_for_call", p1) - } - /// Cancel - public static var cancel: String { - return MatrixKitL10n.tr("cancel") - } - /// Cancel Download - public static var cancelDownload: String { - return MatrixKitL10n.tr("cancel_download") - } - /// Cancel Upload - public static var cancelUpload: String { - return MatrixKitL10n.tr("cancel_upload") - } - /// Take Photo/Video - public static var captureMedia: String { - return MatrixKitL10n.tr("capture_media") - } - /// Close - public static var close: String { - return MatrixKitL10n.tr("close") - } - /// Local Contacts - public static var contactLocalContacts: String { - return MatrixKitL10n.tr("contact_local_contacts") - } - /// Matrix Users - public static var contactMxUsers: String { - return MatrixKitL10n.tr("contact_mx_users") - } - /// Continue - public static var `continue`: String { - return MatrixKitL10n.tr("continue") - } - /// Copy - public static var copyButtonName: String { - return MatrixKitL10n.tr("copy_button_name") - } - /// Choose a country - public static var countryPickerTitle: String { - return MatrixKitL10n.tr("country_picker_title") - } - /// Create Account - public static var createAccount: String { - return MatrixKitL10n.tr("create_account") - } - /// Create Room - public static var createRoom: String { - return MatrixKitL10n.tr("create_room") - } - /// default - public static var `default`: String { - return MatrixKitL10n.tr("default") - } - /// Delete - public static var delete: String { - return MatrixKitL10n.tr("delete") - } - /// This operation requires additional authentication.\nTo continue, please enter your password. - public static var deviceDetailsDeletePromptMessage: String { - return MatrixKitL10n.tr("device_details_delete_prompt_message") - } - /// Authentication - public static var deviceDetailsDeletePromptTitle: String { - return MatrixKitL10n.tr("device_details_delete_prompt_title") - } - /// ID\n - public static var deviceDetailsIdentifier: String { - return MatrixKitL10n.tr("device_details_identifier") - } - /// Last seen\n - public static var deviceDetailsLastSeen: String { - return MatrixKitL10n.tr("device_details_last_seen") - } - /// %@ @ %@\n - public static func deviceDetailsLastSeenFormat(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("device_details_last_seen_format", p1, p2) - } - /// Public Name\n - public static var deviceDetailsName: String { - return MatrixKitL10n.tr("device_details_name") - } - /// A session's public name is visible to people you communicate with - public static var deviceDetailsRenamePromptMessage: String { - return MatrixKitL10n.tr("device_details_rename_prompt_message") - } - /// Session Name - public static var deviceDetailsRenamePromptTitle: String { - return MatrixKitL10n.tr("device_details_rename_prompt_title") - } - /// Session information\n - public static var deviceDetailsTitle: String { - return MatrixKitL10n.tr("device_details_title") - } - /// Discard - public static var discard: String { - return MatrixKitL10n.tr("discard") - } - /// Dismiss - public static var dismiss: String { - return MatrixKitL10n.tr("dismiss") - } - /// Export - public static var e2eExport: String { - return MatrixKitL10n.tr("e2e_export") - } - /// This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.\nThe exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. - public static var e2eExportPrompt: String { - return MatrixKitL10n.tr("e2e_export_prompt") - } - /// Export room keys - public static var e2eExportRoomKeys: String { - return MatrixKitL10n.tr("e2e_export_room_keys") - } - /// Import - public static var e2eImport: String { - return MatrixKitL10n.tr("e2e_import") - } - /// This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.\nThe export file is protected with a passphrase. You should enter the passphrase here, to decrypt the file. - public static var e2eImportPrompt: String { - return MatrixKitL10n.tr("e2e_import_prompt") - } - /// Import room keys - public static var e2eImportRoomKeys: String { - return MatrixKitL10n.tr("e2e_import_room_keys") - } - /// Confirm passphrase - public static var e2ePassphraseConfirm: String { - return MatrixKitL10n.tr("e2e_passphrase_confirm") - } - /// Create passphrase - public static var e2ePassphraseCreate: String { - return MatrixKitL10n.tr("e2e_passphrase_create") - } - /// Passphrase must not be empty - public static var e2ePassphraseEmpty: String { - return MatrixKitL10n.tr("e2e_passphrase_empty") - } - /// Enter passphrase - public static var e2ePassphraseEnter: String { - return MatrixKitL10n.tr("e2e_passphrase_enter") - } - /// Passphrases must match - public static var e2ePassphraseNotMatch: String { - return MatrixKitL10n.tr("e2e_passphrase_not_match") - } - /// Passphrase too short (It must be at a minimum %d characters in length) - public static func e2ePassphraseTooShort(_ p1: Int) -> String { - return MatrixKitL10n.tr("e2e_passphrase_too_short", p1) - } - /// End Call - public static var endCall: String { - return MatrixKitL10n.tr("end_call") - } - /// Error - public static var error: String { - return MatrixKitL10n.tr("error") - } - /// An error occured. Please try again later. - public static var errorCommonMessage: String { - return MatrixKitL10n.tr("error_common_message") - } - /// d - public static var formatTimeD: String { - return MatrixKitL10n.tr("format_time_d") - } - /// h - public static var formatTimeH: String { - return MatrixKitL10n.tr("format_time_h") - } - /// m - public static var formatTimeM: String { - return MatrixKitL10n.tr("format_time_m") - } - /// s - public static var formatTimeS: String { - return MatrixKitL10n.tr("format_time_s") - } - /// Invites - public static var groupInviteSection: String { - return MatrixKitL10n.tr("group_invite_section") - } - /// Groups - public static var groupSection: String { - return MatrixKitL10n.tr("group_section") - } - /// Ignore - public static var ignore: String { - return MatrixKitL10n.tr("ignore") - } - /// Incoming Video Call - public static var incomingVideoCall: String { - return MatrixKitL10n.tr("incoming_video_call") - } - /// Incoming Voice Call - public static var incomingVoiceCall: String { - return MatrixKitL10n.tr("incoming_voice_call") - } - /// I'd like to chat with you with matrix. Please, visit the website http://matrix.org to have more information. - public static var invitationMessage: String { - return MatrixKitL10n.tr("invitation_message") - } - /// Invite - public static var invite: String { - return MatrixKitL10n.tr("invite") - } - /// Invite matrix User - public static var inviteUser: String { - return MatrixKitL10n.tr("invite_user") - } - /// Remove from chat - public static var kick: String { - return MatrixKitL10n.tr("kick") - } - /// Default (%@) - public static func languagePickerDefaultLanguage(_ p1: String) -> String { - return MatrixKitL10n.tr("language_picker_default_language", p1) - } - /// Choose a language - public static var languagePickerTitle: String { - return MatrixKitL10n.tr("language_picker_title") - } - /// Leave - public static var leave: String { - return MatrixKitL10n.tr("leave") - } - /// To discover contacts already using Matrix, %@ can send email addresses and phone numbers in your address book to your chosen Matrix identity server. Where supported, personal data is hashed before sending - please check your identity server's privacy policy for more details. - public static func localContactsAccessDiscoveryWarning(_ p1: String) -> String { - return MatrixKitL10n.tr("local_contacts_access_discovery_warning", p1) - } - /// Users discovery - public static var localContactsAccessDiscoveryWarningTitle: String { - return MatrixKitL10n.tr("local_contacts_access_discovery_warning_title") - } - /// Users discovery from local contacts requires access to you contacts but %@ doesn't have permission to use it - public static func localContactsAccessNotGranted(_ p1: String) -> String { - return MatrixKitL10n.tr("local_contacts_access_not_granted", p1) - } - /// Login - public static var login: String { - return MatrixKitL10n.tr("login") - } - /// Create account: - public static var loginCreateAccount: String { - return MatrixKitL10n.tr("login_create_account") - } - /// Desktop - public static var loginDesktopDevice: String { - return MatrixKitL10n.tr("login_desktop_device") - } - /// Display name (e.g. Bob Obson) - public static var loginDisplayNamePlaceholder: String { - return MatrixKitL10n.tr("login_display_name_placeholder") - } - /// Specify an email address lets other users find you on Matrix more easily, and will give you a way to reset your password in the future. - public static var loginEmailInfo: String { - return MatrixKitL10n.tr("login_email_info") - } - /// Email address - public static var loginEmailPlaceholder: String { - return MatrixKitL10n.tr("login_email_placeholder") - } - /// Already logged in - public static var loginErrorAlreadyLoggedIn: String { - return MatrixKitL10n.tr("login_error_already_logged_in") - } - /// Malformed JSON - public static var loginErrorBadJson: String { - return MatrixKitL10n.tr("login_error_bad_json") - } - /// Currently we do not support any or all login flows defined by this homeserver - public static var loginErrorDoNotSupportLoginFlows: String { - return MatrixKitL10n.tr("login_error_do_not_support_login_flows") - } - /// Invalid username/password - public static var loginErrorForbidden: String { - return MatrixKitL10n.tr("login_error_forbidden") - } - /// Forgot password is not currently supported - public static var loginErrorForgotPasswordIsNotSupported: String { - return MatrixKitL10n.tr("login_error_forgot_password_is_not_supported") - } - /// Too many requests have been sent - public static var loginErrorLimitExceeded: String { - return MatrixKitL10n.tr("login_error_limit_exceeded") - } - /// The email link which has not been clicked yet - public static var loginErrorLoginEmailNotYet: String { - return MatrixKitL10n.tr("login_error_login_email_not_yet") - } - /// URL must start with http[s]:// - public static var loginErrorMustStartHttp: String { - return MatrixKitL10n.tr("login_error_must_start_http") - } - /// We failed to retrieve authentication information from this homeserver - public static var loginErrorNoLoginFlow: String { - return MatrixKitL10n.tr("login_error_no_login_flow") - } - /// Did not contain valid JSON - public static var loginErrorNotJson: String { - return MatrixKitL10n.tr("login_error_not_json") - } - /// Registration is not currently supported - public static var loginErrorRegistrationIsNotSupported: String { - return MatrixKitL10n.tr("login_error_registration_is_not_supported") - } - /// Contact Administrator - public static var loginErrorResourceLimitExceededContactButton: String { - return MatrixKitL10n.tr("login_error_resource_limit_exceeded_contact_button") - } - /// \n\nPlease contact your service administrator to continue using this service. - public static var loginErrorResourceLimitExceededMessageContact: String { - return MatrixKitL10n.tr("login_error_resource_limit_exceeded_message_contact") - } - /// This homeserver has exceeded one of its resource limits. - public static var loginErrorResourceLimitExceededMessageDefault: String { - return MatrixKitL10n.tr("login_error_resource_limit_exceeded_message_default") - } - /// This homeserver has hit its Monthly Active User limit. - public static var loginErrorResourceLimitExceededMessageMonthlyActiveUser: String { - return MatrixKitL10n.tr("login_error_resource_limit_exceeded_message_monthly_active_user") - } - /// Resource Limit Exceeded - public static var loginErrorResourceLimitExceededTitle: String { - return MatrixKitL10n.tr("login_error_resource_limit_exceeded_title") - } - /// Login Failed - public static var loginErrorTitle: String { - return MatrixKitL10n.tr("login_error_title") - } - /// The access token specified was not recognised - public static var loginErrorUnknownToken: String { - return MatrixKitL10n.tr("login_error_unknown_token") - } - /// This user name is already used - public static var loginErrorUserInUse: String { - return MatrixKitL10n.tr("login_error_user_in_use") - } - /// Your homeserver stores all your conversations and account data - public static var loginHomeServerInfo: String { - return MatrixKitL10n.tr("login_home_server_info") - } - /// Homeserver URL: - public static var loginHomeServerTitle: String { - return MatrixKitL10n.tr("login_home_server_title") - } - /// Matrix provides identity servers to track which emails etc. belong to which Matrix IDs. Only https://matrix.org currently exists. - public static var loginIdentityServerInfo: String { - return MatrixKitL10n.tr("login_identity_server_info") - } - /// Identity server URL: - public static var loginIdentityServerTitle: String { - return MatrixKitL10n.tr("login_identity_server_title") - } - /// Invalid parameter - public static var loginInvalidParam: String { - return MatrixKitL10n.tr("login_invalid_param") - } - /// Cancel - public static var loginLeaveFallback: String { - return MatrixKitL10n.tr("login_leave_fallback") - } - /// Mobile - public static var loginMobileDevice: String { - return MatrixKitL10n.tr("login_mobile_device") - } - /// optional - public static var loginOptionalField: String { - return MatrixKitL10n.tr("login_optional_field") - } - /// Password - public static var loginPasswordPlaceholder: String { - return MatrixKitL10n.tr("login_password_placeholder") - } - /// Please enter your email validation token: - public static var loginPromptEmailToken: String { - return MatrixKitL10n.tr("login_prompt_email_token") - } - /// URL (e.g. https://matrix.org) - public static var loginServerUrlPlaceholder: String { - return MatrixKitL10n.tr("login_server_url_placeholder") - } - /// Tablet - public static var loginTabletDevice: String { - return MatrixKitL10n.tr("login_tablet_device") - } - /// Use fallback page - public static var loginUseFallback: String { - return MatrixKitL10n.tr("login_use_fallback") - } - /// Matrix ID (e.g. @bob:matrix.org or bob) - public static var loginUserIdPlaceholder: String { - return MatrixKitL10n.tr("login_user_id_placeholder") - } - /// Matrix - public static var matrix: String { - return MatrixKitL10n.tr("matrix") - } - /// Banned - public static var membershipBan: String { - return MatrixKitL10n.tr("membership_ban") - } - /// Invited - public static var membershipInvite: String { - return MatrixKitL10n.tr("membership_invite") - } - /// Left - public static var membershipLeave: String { - return MatrixKitL10n.tr("membership_leave") - } - /// Mention - public static var mention: String { - return MatrixKitL10n.tr("mention") - } - /// In reply to - public static var messageReplyToMessageToReplyToPrefix: String { - return MatrixKitL10n.tr("message_reply_to_message_to_reply_to_prefix") - } - /// sent a file. - public static var messageReplyToSenderSentAFile: String { - return MatrixKitL10n.tr("message_reply_to_sender_sent_a_file") - } - /// sent a video. - public static var messageReplyToSenderSentAVideo: String { - return MatrixKitL10n.tr("message_reply_to_sender_sent_a_video") - } - /// sent a voice message. - public static var messageReplyToSenderSentAVoiceMessage: String { - return MatrixKitL10n.tr("message_reply_to_sender_sent_a_voice_message") - } - /// sent an audio file. - public static var messageReplyToSenderSentAnAudioFile: String { - return MatrixKitL10n.tr("message_reply_to_sender_sent_an_audio_file") - } - /// sent an image. - public static var messageReplyToSenderSentAnImage: String { - return MatrixKitL10n.tr("message_reply_to_sender_sent_an_image") - } - /// has shared their location. - public static var messageReplyToSenderSentTheirLocation: String { - return MatrixKitL10n.tr("message_reply_to_sender_sent_their_location") - } - /// There are unsaved changes. Leaving will discard them. - public static var messageUnsavedChanges: String { - return MatrixKitL10n.tr("message_unsaved_changes") - } - /// Calls require access to the Microphone but %@ doesn't have permission to use it - public static func microphoneAccessNotGrantedForCall(_ p1: String) -> String { - return MatrixKitL10n.tr("microphone_access_not_granted_for_call", p1) - } - /// Voice messages require access to the Microphone but %@ doesn't have permission to use it - public static func microphoneAccessNotGrantedForVoiceMessage(_ p1: String) -> String { - return MatrixKitL10n.tr("microphone_access_not_granted_for_voice_message", p1) - } - /// Please check your network connectivity - public static var networkErrorNotReachable: String { - return MatrixKitL10n.tr("network_error_not_reachable") - } - /// No - public static var no: String { - return MatrixKitL10n.tr("no") - } - /// Not supported yet - public static var notSupportedYet: String { - return MatrixKitL10n.tr("not_supported_yet") - } - /// %@ answered the call - public static func noticeAnsweredVideoCall(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_answered_video_call", p1) - } - /// You answered the call - public static var noticeAnsweredVideoCallByYou: String { - return MatrixKitL10n.tr("notice_answered_video_call_by_you") - } - /// audio attachment - public static var noticeAudioAttachment: String { - return MatrixKitL10n.tr("notice_audio_attachment") - } - /// (avatar was changed too) - public static var noticeAvatarChangedToo: String { - return MatrixKitL10n.tr("notice_avatar_changed_too") - } - /// %@ changed their avatar - public static func noticeAvatarUrlChanged(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_avatar_url_changed", p1) - } - /// You changed your avatar - public static var noticeAvatarUrlChangedByYou: String { - return MatrixKitL10n.tr("notice_avatar_url_changed_by_you") - } - /// VoIP conference finished - public static var noticeConferenceCallFinished: String { - return MatrixKitL10n.tr("notice_conference_call_finished") - } - /// %@ requested a VoIP conference - public static func noticeConferenceCallRequest(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_conference_call_request", p1) - } - /// You requested a VoIP conference - public static var noticeConferenceCallRequestByYou: String { - return MatrixKitL10n.tr("notice_conference_call_request_by_you") - } - /// VoIP conference started - public static var noticeConferenceCallStarted: String { - return MatrixKitL10n.tr("notice_conference_call_started") - } - /// The sender's session has not sent us the keys for this message. - public static var noticeCryptoErrorUnknownInboundSessionId: String { - return MatrixKitL10n.tr("notice_crypto_error_unknown_inbound_session_id") - } - /// ** Unable to decrypt: %@ ** - public static func noticeCryptoUnableToDecrypt(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_crypto_unable_to_decrypt", p1) - } - /// %@ declined the call - public static func noticeDeclinedVideoCall(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_declined_video_call", p1) - } - /// You declined the call - public static var noticeDeclinedVideoCallByYou: String { - return MatrixKitL10n.tr("notice_declined_video_call_by_you") - } - /// %@ changed their display name from %@ to %@ - public static func noticeDisplayNameChangedFrom(_ p1: String, _ p2: String, _ p3: String) -> String { - return MatrixKitL10n.tr("notice_display_name_changed_from", p1, p2, p3) - } - /// You changed your display name from %@ to %@ - public static func noticeDisplayNameChangedFromByYou(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_display_name_changed_from_by_you", p1, p2) - } - /// %@ removed their display name - public static func noticeDisplayNameRemoved(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_display_name_removed", p1) - } - /// You removed your display name - public static var noticeDisplayNameRemovedByYou: String { - return MatrixKitL10n.tr("notice_display_name_removed_by_you") - } - /// %@ set their display name to %@ - public static func noticeDisplayNameSet(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_display_name_set", p1, p2) - } - /// You set your display name to %@ - public static func noticeDisplayNameSetByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_display_name_set_by_you", p1) - } - /// Encrypted message - public static var noticeEncryptedMessage: String { - return MatrixKitL10n.tr("notice_encrypted_message") - } - /// %@ turned on end-to-end encryption. - public static func noticeEncryptionEnabledOk(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_encryption_enabled_ok", p1) - } - /// You turned on end-to-end encryption. - public static var noticeEncryptionEnabledOkByYou: String { - return MatrixKitL10n.tr("notice_encryption_enabled_ok_by_you") - } - /// %1$@ turned on end-to-end encryption (unrecognised algorithm %2$@). - public static func noticeEncryptionEnabledUnknownAlgorithm(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_encryption_enabled_unknown_algorithm", p1, p2) - } - /// You turned on end-to-end encryption (unrecognised algorithm %@). - public static func noticeEncryptionEnabledUnknownAlgorithmByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_encryption_enabled_unknown_algorithm_by_you", p1) - } - /// %@ ended the call - public static func noticeEndedVideoCall(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_ended_video_call", p1) - } - /// You ended the call - public static var noticeEndedVideoCallByYou: String { - return MatrixKitL10n.tr("notice_ended_video_call_by_you") - } - /// Unexpected event - public static var noticeErrorUnexpectedEvent: String { - return MatrixKitL10n.tr("notice_error_unexpected_event") - } - /// Unknown event type - public static var noticeErrorUnknownEventType: String { - return MatrixKitL10n.tr("notice_error_unknown_event_type") - } - /// Unsupported event - public static var noticeErrorUnsupportedEvent: String { - return MatrixKitL10n.tr("notice_error_unsupported_event") - } - /// - public static func noticeEventRedacted(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_event_redacted", p1) - } - /// by %@ - public static func noticeEventRedactedBy(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_event_redacted_by", p1) - } - /// by you - public static var noticeEventRedactedByYou: String { - return MatrixKitL10n.tr("notice_event_redacted_by_you") - } - /// [reason: %@] - public static func noticeEventRedactedReason(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_event_redacted_reason", p1) - } - /// Feedback event (id: %@): %@ - public static func noticeFeedback(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_feedback", p1, p2) - } - /// file attachment - public static var noticeFileAttachment: String { - return MatrixKitL10n.tr("notice_file_attachment") - } - /// image attachment - public static var noticeImageAttachment: String { - return MatrixKitL10n.tr("notice_image_attachment") - } - /// In reply to - public static var noticeInReplyTo: String { - return MatrixKitL10n.tr("notice_in_reply_to") - } - /// invalid attachment - public static var noticeInvalidAttachment: String { - return MatrixKitL10n.tr("notice_invalid_attachment") - } - /// location attachment - public static var noticeLocationAttachment: String { - return MatrixKitL10n.tr("notice_location_attachment") - } - /// %@ placed a video call - public static func noticePlacedVideoCall(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_placed_video_call", p1) - } - /// You placed a video call - public static var noticePlacedVideoCallByYou: String { - return MatrixKitL10n.tr("notice_placed_video_call_by_you") - } - /// %@ placed a voice call - public static func noticePlacedVoiceCall(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_placed_voice_call", p1) - } - /// You placed a voice call - public static var noticePlacedVoiceCallByYou: String { - return MatrixKitL10n.tr("notice_placed_voice_call_by_you") - } - /// %@ updated their profile %@ - public static func noticeProfileChangeRedacted(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_profile_change_redacted", p1, p2) - } - /// You updated your profile %@ - public static func noticeProfileChangeRedactedByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_profile_change_redacted_by_you", p1) - } - /// %@ redacted an event (id: %@) - public static func noticeRedaction(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_redaction", p1, p2) - } - /// You redacted an event (id: %@) - public static func noticeRedactionByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_redaction_by_you", p1) - } - /// The room aliases are: %@ - public static func noticeRoomAliases(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_aliases", p1) - } - /// The aliases are: %@ - public static func noticeRoomAliasesForDm(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_aliases_for_dm", p1) - } - /// %@ banned %@ - public static func noticeRoomBan(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_ban", p1, p2) - } - /// You banned %@ - public static func noticeRoomBanByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_ban_by_you", p1) - } - /// %@ created and configured the room. - public static func noticeRoomCreated(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_created", p1) - } - /// You created and configured the room. - public static var noticeRoomCreatedByYou: String { - return MatrixKitL10n.tr("notice_room_created_by_you") - } - /// You joined. - public static var noticeRoomCreatedByYouForDm: String { - return MatrixKitL10n.tr("notice_room_created_by_you_for_dm") - } - /// %@ joined. - public static func noticeRoomCreatedForDm(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_created_for_dm", p1) - } - /// %@ made future room history visible to anyone. - public static func noticeRoomHistoryVisibleToAnyone(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_history_visible_to_anyone", p1) - } - /// You made future room history visible to anyone. - public static var noticeRoomHistoryVisibleToAnyoneByYou: String { - return MatrixKitL10n.tr("notice_room_history_visible_to_anyone_by_you") - } - /// %@ made future room history visible to all room members. - public static func noticeRoomHistoryVisibleToMembers(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members", p1) - } - /// You made future room history visible to all room members. - public static var noticeRoomHistoryVisibleToMembersByYou: String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members_by_you") - } - /// You made future messages visible to all room members. - public static var noticeRoomHistoryVisibleToMembersByYouForDm: String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members_by_you_for_dm") - } - /// %@ made future messages visible to all room members. - public static func noticeRoomHistoryVisibleToMembersForDm(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members_for_dm", p1) - } - /// %@ made future room history visible to all room members, from the point they are invited. - public static func noticeRoomHistoryVisibleToMembersFromInvitedPoint(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members_from_invited_point", p1) - } - /// You made future room history visible to all room members, from the point they are invited. - public static var noticeRoomHistoryVisibleToMembersFromInvitedPointByYou: String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members_from_invited_point_by_you") - } - /// You made future messages visible to everyone, from when they get invited. - public static var noticeRoomHistoryVisibleToMembersFromInvitedPointByYouForDm: String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members_from_invited_point_by_you_for_dm") - } - /// %@ made future messages visible to everyone, from when they get invited. - public static func noticeRoomHistoryVisibleToMembersFromInvitedPointForDm(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members_from_invited_point_for_dm", p1) - } - /// %@ made future room history visible to all room members, from the point they joined. - public static func noticeRoomHistoryVisibleToMembersFromJoinedPoint(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members_from_joined_point", p1) - } - /// You made future room history visible to all room members, from the point they joined. - public static var noticeRoomHistoryVisibleToMembersFromJoinedPointByYou: String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members_from_joined_point_by_you") - } - /// You made future messages visible to everyone, from when they joined. - public static var noticeRoomHistoryVisibleToMembersFromJoinedPointByYouForDm: String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members_from_joined_point_by_you_for_dm") - } - /// %@ made future messages visible to everyone, from when they joined. - public static func noticeRoomHistoryVisibleToMembersFromJoinedPointForDm(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_history_visible_to_members_from_joined_point_for_dm", p1) - } - /// %@ invited %@ - public static func noticeRoomInvite(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_invite", p1, p2) - } - /// You invited %@ - public static func noticeRoomInviteByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_invite_by_you", p1) - } - /// %@ invited you - public static func noticeRoomInviteYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_invite_you", p1) - } - /// %@ joined - public static func noticeRoomJoin(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_join", p1) - } - /// You joined - public static var noticeRoomJoinByYou: String { - return MatrixKitL10n.tr("notice_room_join_by_you") - } - /// The join rule is: %@ - public static func noticeRoomJoinRule(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_join_rule", p1) - } - /// %@ made the room invite only. - public static func noticeRoomJoinRuleInvite(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_join_rule_invite", p1) - } - /// You made the room invite only. - public static var noticeRoomJoinRuleInviteByYou: String { - return MatrixKitL10n.tr("notice_room_join_rule_invite_by_you") - } - /// You made this invite only. - public static var noticeRoomJoinRuleInviteByYouForDm: String { - return MatrixKitL10n.tr("notice_room_join_rule_invite_by_you_for_dm") - } - /// %@ made this invite only. - public static func noticeRoomJoinRuleInviteForDm(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_join_rule_invite_for_dm", p1) - } - /// %@ made the room public. - public static func noticeRoomJoinRulePublic(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_join_rule_public", p1) - } - /// You made the room public. - public static var noticeRoomJoinRulePublicByYou: String { - return MatrixKitL10n.tr("notice_room_join_rule_public_by_you") - } - /// You made this public. - public static var noticeRoomJoinRulePublicByYouForDm: String { - return MatrixKitL10n.tr("notice_room_join_rule_public_by_you_for_dm") - } - /// %@ made this public. - public static func noticeRoomJoinRulePublicForDm(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_join_rule_public_for_dm", p1) - } - /// %@ removed %@ - public static func noticeRoomKick(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_kick", p1, p2) - } - /// You removed %@ - public static func noticeRoomKickByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_kick_by_you", p1) - } - /// %@ left - public static func noticeRoomLeave(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_leave", p1) - } - /// You left - public static var noticeRoomLeaveByYou: String { - return MatrixKitL10n.tr("notice_room_leave_by_you") - } - /// %@ changed the room name to %@. - public static func noticeRoomNameChanged(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_name_changed", p1, p2) - } - /// You changed the room name to %@. - public static func noticeRoomNameChangedByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_name_changed_by_you", p1) - } - /// You changed the name to %@. - public static func noticeRoomNameChangedByYouForDm(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_name_changed_by_you_for_dm", p1) - } - /// %@ changed the name to %@. - public static func noticeRoomNameChangedForDm(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_name_changed_for_dm", p1, p2) - } - /// %@ removed the room name - public static func noticeRoomNameRemoved(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_name_removed", p1) - } - /// You removed the room name - public static var noticeRoomNameRemovedByYou: String { - return MatrixKitL10n.tr("notice_room_name_removed_by_you") - } - /// You removed the name - public static var noticeRoomNameRemovedByYouForDm: String { - return MatrixKitL10n.tr("notice_room_name_removed_by_you_for_dm") - } - /// %@ removed the name - public static func noticeRoomNameRemovedForDm(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_name_removed_for_dm", p1) - } - /// The minimum power levels that a user must have before acting are: - public static var noticeRoomPowerLevelActingRequirement: String { - return MatrixKitL10n.tr("notice_room_power_level_acting_requirement") - } - /// The minimum power levels related to events are: - public static var noticeRoomPowerLevelEventRequirement: String { - return MatrixKitL10n.tr("notice_room_power_level_event_requirement") - } - /// The power level of room members are: - public static var noticeRoomPowerLevelIntro: String { - return MatrixKitL10n.tr("notice_room_power_level_intro") - } - /// The power level of members are: - public static var noticeRoomPowerLevelIntroForDm: String { - return MatrixKitL10n.tr("notice_room_power_level_intro_for_dm") - } - /// . Reason: %@ - public static func noticeRoomReason(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_reason", p1) - } - /// %@ rejected the invitation - public static func noticeRoomReject(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_reject", p1) - } - /// You rejected the invitation - public static var noticeRoomRejectByYou: String { - return MatrixKitL10n.tr("notice_room_reject_by_you") - } - /// The groups associated with this room are: %@ - public static func noticeRoomRelatedGroups(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_related_groups", p1) - } - /// %@ sent an invitation to %@ to join the room - public static func noticeRoomThirdPartyInvite(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_third_party_invite", p1, p2) - } - /// You sent an invitation to %@ to join the room - public static func noticeRoomThirdPartyInviteByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_third_party_invite_by_you", p1) - } - /// You invited %@ - public static func noticeRoomThirdPartyInviteByYouForDm(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_third_party_invite_by_you_for_dm", p1) - } - /// %@ invited %@ - public static func noticeRoomThirdPartyInviteForDm(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_third_party_invite_for_dm", p1, p2) - } - /// %@ accepted the invitation for %@ - public static func noticeRoomThirdPartyRegisteredInvite(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_third_party_registered_invite", p1, p2) - } - /// You accepted the invitation for %@ - public static func noticeRoomThirdPartyRegisteredInviteByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_third_party_registered_invite_by_you", p1) - } - /// %@ revoked the invitation for %@ to join the room - public static func noticeRoomThirdPartyRevokedInvite(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_third_party_revoked_invite", p1, p2) - } - /// You revoked the invitation for %@ to join the room - public static func noticeRoomThirdPartyRevokedInviteByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_third_party_revoked_invite_by_you", p1) - } - /// You revoked %@'s invitation - public static func noticeRoomThirdPartyRevokedInviteByYouForDm(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_third_party_revoked_invite_by_you_for_dm", p1) - } - /// %@ revoked %@'s invitation - public static func noticeRoomThirdPartyRevokedInviteForDm(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_third_party_revoked_invite_for_dm", p1, p2) - } - /// %@ removed the topic - public static func noticeRoomTopicRemoved(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_topic_removed", p1) - } - /// You removed the topic - public static var noticeRoomTopicRemovedByYou: String { - return MatrixKitL10n.tr("notice_room_topic_removed_by_you") - } - /// %@ unbanned %@ - public static func noticeRoomUnban(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_unban", p1, p2) - } - /// You unbanned %@ - public static func noticeRoomUnbanByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_unban_by_you", p1) - } - /// %@ withdrew %@'s invitation - public static func noticeRoomWithdraw(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_room_withdraw", p1, p2) - } - /// You withdrew %@'s invitation - public static func noticeRoomWithdrawByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_room_withdraw_by_you", p1) - } - /// sticker - public static var noticeSticker: String { - return MatrixKitL10n.tr("notice_sticker") - } - /// %@ changed the topic to "%@". - public static func noticeTopicChanged(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("notice_topic_changed", p1, p2) - } - /// You changed the topic to "%@". - public static func noticeTopicChangedByYou(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_topic_changed_by_you", p1) - } - /// Unsupported attachment: %@ - public static func noticeUnsupportedAttachment(_ p1: String) -> String { - return MatrixKitL10n.tr("notice_unsupported_attachment", p1) - } - /// video attachment - public static var noticeVideoAttachment: String { - return MatrixKitL10n.tr("notice_video_attachment") - } - /// Always notify - public static var notificationSettingsAlwaysNotify: String { - return MatrixKitL10n.tr("notification_settings_always_notify") - } - /// By default... - public static var notificationSettingsByDefault: String { - return MatrixKitL10n.tr("notification_settings_by_default") - } - /// Notify me with sound about messages that contain my display name - public static var notificationSettingsContainMyDisplayName: String { - return MatrixKitL10n.tr("notification_settings_contain_my_display_name") - } - /// Notify me with sound about messages that contain my user name - public static var notificationSettingsContainMyUserName: String { - return MatrixKitL10n.tr("notification_settings_contain_my_user_name") - } - /// Custom sound - public static var notificationSettingsCustomSound: String { - return MatrixKitL10n.tr("notification_settings_custom_sound") - } - /// Disable all notifications - public static var notificationSettingsDisableAll: String { - return MatrixKitL10n.tr("notification_settings_disable_all") - } - /// Enable notifications - public static var notificationSettingsEnableNotifications: String { - return MatrixKitL10n.tr("notification_settings_enable_notifications") - } - /// All notifications are currently disabled for all devices. - public static var notificationSettingsEnableNotificationsWarning: String { - return MatrixKitL10n.tr("notification_settings_enable_notifications_warning") - } - /// Notification settings are saved to your user account and are shared between all clients which support them (including desktop notifications).\n\nRules are applied in order; the first rule which matches defines the outcome for the message.\nSo: Per-word notifications are more important than per-room notifications which are more important than per-sender notifications.\nFor multiple rules of the same kind, the first one in the list that matches takes priority. - public static var notificationSettingsGlobalInfo: String { - return MatrixKitL10n.tr("notification_settings_global_info") - } - /// Highlight - public static var notificationSettingsHighlight: String { - return MatrixKitL10n.tr("notification_settings_highlight") - } - /// Notify me when I am invited to a new room - public static var notificationSettingsInviteToANewRoom: String { - return MatrixKitL10n.tr("notification_settings_invite_to_a_new_room") - } - /// Notify me with sound about messages sent just to me - public static var notificationSettingsJustSentToMe: String { - return MatrixKitL10n.tr("notification_settings_just_sent_to_me") - } - /// Never notify - public static var notificationSettingsNeverNotify: String { - return MatrixKitL10n.tr("notification_settings_never_notify") - } - /// Notify for all other messages/rooms - public static var notificationSettingsNotifyAllOther: String { - return MatrixKitL10n.tr("notification_settings_notify_all_other") - } - /// Other Alerts - public static var notificationSettingsOtherAlerts: String { - return MatrixKitL10n.tr("notification_settings_other_alerts") - } - /// Notify me when people join or leave rooms - public static var notificationSettingsPeopleJoinLeaveRooms: String { - return MatrixKitL10n.tr("notification_settings_people_join_leave_rooms") - } - /// Per-room notifications - public static var notificationSettingsPerRoomNotifications: String { - return MatrixKitL10n.tr("notification_settings_per_room_notifications") - } - /// Per-sender notifications - public static var notificationSettingsPerSenderNotifications: String { - return MatrixKitL10n.tr("notification_settings_per_sender_notifications") - } - /// Words match case insensitively, and may include a * wildcard. So:\nfoo matches the string foo surrounded by word delimiters (e.g. punctuation and whitespace or start/end of line).\nfoo* matches any such word that begins foo.\n*foo* matches any such word which includes the 3 letters foo. - public static var notificationSettingsPerWordInfo: String { - return MatrixKitL10n.tr("notification_settings_per_word_info") - } - /// Per-word notifications - public static var notificationSettingsPerWordNotifications: String { - return MatrixKitL10n.tr("notification_settings_per_word_notifications") - } - /// Notify me when I receive a call - public static var notificationSettingsReceiveACall: String { - return MatrixKitL10n.tr("notification_settings_receive_a_call") - } - /// Room: '%@' - public static func notificationSettingsRoomRuleTitle(_ p1: String) -> String { - return MatrixKitL10n.tr("notification_settings_room_rule_title", p1) - } - /// Select a room - public static var notificationSettingsSelectRoom: String { - return MatrixKitL10n.tr("notification_settings_select_room") - } - /// @user:domain.com - public static var notificationSettingsSenderHint: String { - return MatrixKitL10n.tr("notification_settings_sender_hint") - } - /// Suppress notifications from bots - public static var notificationSettingsSuppressFromBots: String { - return MatrixKitL10n.tr("notification_settings_suppress_from_bots") - } - /// word to match - public static var notificationSettingsWordToMatch: String { - return MatrixKitL10n.tr("notification_settings_word_to_match") - } - /// %@ user - public static func numMembersOne(_ p1: String) -> String { - return MatrixKitL10n.tr("num_members_one", p1) - } - /// %@ users - public static func numMembersOther(_ p1: String) -> String { - return MatrixKitL10n.tr("num_members_other", p1) - } - /// offline - public static var offline: String { - return MatrixKitL10n.tr("offline") - } - /// OK - public static var ok: String { - return MatrixKitL10n.tr("ok") - } - /// Power Level - public static var powerLevel: String { - return MatrixKitL10n.tr("power_level") - } - /// Private - public static var `private`: String { - return MatrixKitL10n.tr("private") - } - /// Public - public static var `public`: String { - return MatrixKitL10n.tr("public") - } - /// Remove - public static var redact: String { - return MatrixKitL10n.tr("redact") - } - /// Registration Failed - public static var registerErrorTitle: String { - return MatrixKitL10n.tr("register_error_title") - } - /// Reject Call - public static var rejectCall: String { - return MatrixKitL10n.tr("reject_call") - } - /// Rename - public static var rename: String { - return MatrixKitL10n.tr("rename") - } - /// Resend - public static var resend: String { - return MatrixKitL10n.tr("resend") - } - /// Resend the message - public static var resendMessage: String { - return MatrixKitL10n.tr("resend_message") - } - /// Reset to default - public static var resetToDefault: String { - return MatrixKitL10n.tr("reset_to_default") - } - /// Resume - public static var resumeCall: String { - return MatrixKitL10n.tr("resume_call") - } - /// Retry - public static var retry: String { - return MatrixKitL10n.tr("retry") - } - /// (e.g. #foo:example.org) - public static var roomCreationAliasPlaceholder: String { - return MatrixKitL10n.tr("room_creation_alias_placeholder") - } - /// (e.g. #foo%@) - public static func roomCreationAliasPlaceholderWithHomeserver(_ p1: String) -> String { - return MatrixKitL10n.tr("room_creation_alias_placeholder_with_homeserver", p1) - } - /// Room alias: - public static var roomCreationAliasTitle: String { - return MatrixKitL10n.tr("room_creation_alias_title") - } - /// (e.g. lunchGroup) - public static var roomCreationNamePlaceholder: String { - return MatrixKitL10n.tr("room_creation_name_placeholder") - } - /// Room name: - public static var roomCreationNameTitle: String { - return MatrixKitL10n.tr("room_creation_name_title") - } - /// (e.g. @bob:homeserver1; @john:homeserver2...) - public static var roomCreationParticipantsPlaceholder: String { - return MatrixKitL10n.tr("room_creation_participants_placeholder") - } - /// Participants: - public static var roomCreationParticipantsTitle: String { - return MatrixKitL10n.tr("room_creation_participants_title") - } - /// Room Details - public static var roomDetailsTitle: String { - return MatrixKitL10n.tr("room_details_title") - } - /// %@ (Left) - public static func roomDisplaynameAllOtherMembersLeft(_ p1: String) -> String { - return MatrixKitL10n.tr("room_displayname_all_other_members_left", p1) - } - /// Empty room - public static var roomDisplaynameEmptyRoom: String { - return MatrixKitL10n.tr("room_displayname_empty_room") - } - /// %@ and %@ others - public static func roomDisplaynameMoreThanTwoMembers(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("room_displayname_more_than_two_members", p1, p2) - } - /// %@ and %@ - public static func roomDisplaynameTwoMembers(_ p1: String, _ p2: String) -> String { - return MatrixKitL10n.tr("room_displayname_two_members", p1, p2) - } - /// Failed to load timeline - public static var roomErrorCannotLoadTimeline: String { - return MatrixKitL10n.tr("room_error_cannot_load_timeline") - } - /// It is not currently possible to join an empty room. - public static var roomErrorJoinFailedEmptyRoom: String { - return MatrixKitL10n.tr("room_error_join_failed_empty_room") - } - /// Failed to join room - public static var roomErrorJoinFailedTitle: String { - return MatrixKitL10n.tr("room_error_join_failed_title") - } - /// You are not authorized to edit this room name - public static var roomErrorNameEditionNotAuthorized: String { - return MatrixKitL10n.tr("room_error_name_edition_not_authorized") - } - /// The application was trying to load a specific point in this room's timeline but was unable to find it - public static var roomErrorTimelineEventNotFound: String { - return MatrixKitL10n.tr("room_error_timeline_event_not_found") - } - /// Failed to load timeline position - public static var roomErrorTimelineEventNotFoundTitle: String { - return MatrixKitL10n.tr("room_error_timeline_event_not_found_title") - } - /// You are not authorized to edit this room topic - public static var roomErrorTopicEditionNotAuthorized: String { - return MatrixKitL10n.tr("room_error_topic_edition_not_authorized") - } - /// Blacklist - public static var roomEventEncryptionInfoBlock: String { - return MatrixKitL10n.tr("room_event_encryption_info_block") - } - /// \nSender session information\n - public static var roomEventEncryptionInfoDevice: String { - return MatrixKitL10n.tr("room_event_encryption_info_device") - } - /// Blacklisted - public static var roomEventEncryptionInfoDeviceBlocked: String { - return MatrixKitL10n.tr("room_event_encryption_info_device_blocked") - } - /// Ed25519 fingerprint\n - public static var roomEventEncryptionInfoDeviceFingerprint: String { - return MatrixKitL10n.tr("room_event_encryption_info_device_fingerprint") - } - /// ID\n - public static var roomEventEncryptionInfoDeviceId: String { - return MatrixKitL10n.tr("room_event_encryption_info_device_id") - } - /// Public Name\n - public static var roomEventEncryptionInfoDeviceName: String { - return MatrixKitL10n.tr("room_event_encryption_info_device_name") - } - /// NOT verified - public static var roomEventEncryptionInfoDeviceNotVerified: String { - return MatrixKitL10n.tr("room_event_encryption_info_device_not_verified") - } - /// unknown session\n - public static var roomEventEncryptionInfoDeviceUnknown: String { - return MatrixKitL10n.tr("room_event_encryption_info_device_unknown") - } - /// Verification\n - public static var roomEventEncryptionInfoDeviceVerification: String { - return MatrixKitL10n.tr("room_event_encryption_info_device_verification") - } - /// Verified - public static var roomEventEncryptionInfoDeviceVerified: String { - return MatrixKitL10n.tr("room_event_encryption_info_device_verified") - } - /// Event information\n - public static var roomEventEncryptionInfoEvent: String { - return MatrixKitL10n.tr("room_event_encryption_info_event") - } - /// Algorithm\n - public static var roomEventEncryptionInfoEventAlgorithm: String { - return MatrixKitL10n.tr("room_event_encryption_info_event_algorithm") - } - /// Decryption error\n - public static var roomEventEncryptionInfoEventDecryptionError: String { - return MatrixKitL10n.tr("room_event_encryption_info_event_decryption_error") - } - /// Claimed Ed25519 fingerprint key\n - public static var roomEventEncryptionInfoEventFingerprintKey: String { - return MatrixKitL10n.tr("room_event_encryption_info_event_fingerprint_key") - } - /// Curve25519 identity key\n - public static var roomEventEncryptionInfoEventIdentityKey: String { - return MatrixKitL10n.tr("room_event_encryption_info_event_identity_key") - } - /// none - public static var roomEventEncryptionInfoEventNone: String { - return MatrixKitL10n.tr("room_event_encryption_info_event_none") - } - /// Session ID\n - public static var roomEventEncryptionInfoEventSessionId: String { - return MatrixKitL10n.tr("room_event_encryption_info_event_session_id") - } - /// unencrypted - public static var roomEventEncryptionInfoEventUnencrypted: String { - return MatrixKitL10n.tr("room_event_encryption_info_event_unencrypted") - } - /// User ID\n - public static var roomEventEncryptionInfoEventUserId: String { - return MatrixKitL10n.tr("room_event_encryption_info_event_user_id") - } - /// End-to-end encryption information\n\n - public static var roomEventEncryptionInfoTitle: String { - return MatrixKitL10n.tr("room_event_encryption_info_title") - } - /// Unblacklist - public static var roomEventEncryptionInfoUnblock: String { - return MatrixKitL10n.tr("room_event_encryption_info_unblock") - } - /// Unverify - public static var roomEventEncryptionInfoUnverify: String { - return MatrixKitL10n.tr("room_event_encryption_info_unverify") - } - /// Verify... - public static var roomEventEncryptionInfoVerify: String { - return MatrixKitL10n.tr("room_event_encryption_info_verify") - } - /// To verify that this session can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this session matches the key below:\n\n Session name: %@\n Session ID: %@\n Session key: %@\n\nIf it matches, press the verify button below. If it doesnt, then someone else is intercepting this session and you probably want to press the blacklist button instead.\n\nIn future this verification process will be more sophisticated. - public static func roomEventEncryptionVerifyMessage(_ p1: String, _ p2: String, _ p3: String) -> String { - return MatrixKitL10n.tr("room_event_encryption_verify_message", p1, p2, p3) - } - /// Verify - public static var roomEventEncryptionVerifyOk: String { - return MatrixKitL10n.tr("room_event_encryption_verify_ok") - } - /// Verify session\n\n - public static var roomEventEncryptionVerifyTitle: String { - return MatrixKitL10n.tr("room_event_encryption_verify_title") - } - /// You left the room - public static var roomLeft: String { - return MatrixKitL10n.tr("room_left") - } - /// You left - public static var roomLeftForDm: String { - return MatrixKitL10n.tr("room_left_for_dm") - } - /// Are you sure you want to hide all messages from this user? - public static var roomMemberIgnorePrompt: String { - return MatrixKitL10n.tr("room_member_ignore_prompt") - } - /// You will not be able to undo this change as you are promoting the user to have the same power level as yourself.\nAre you sure? - public static var roomMemberPowerLevelPrompt: String { - return MatrixKitL10n.tr("room_member_power_level_prompt") - } - /// Conference calls are not supported in encrypted rooms - public static var roomNoConferenceCallInEncryptedRooms: String { - return MatrixKitL10n.tr("room_no_conference_call_in_encrypted_rooms") - } - /// You need permission to invite to start a conference in this room - public static var roomNoPowerToCreateConferenceCall: String { - return MatrixKitL10n.tr("room_no_power_to_create_conference_call") - } - /// Please select a room - public static var roomPleaseSelect: String { - return MatrixKitL10n.tr("room_please_select") - } - /// Save - public static var save: String { - return MatrixKitL10n.tr("save") - } - /// No Results - public static var searchNoResults: String { - return MatrixKitL10n.tr("search_no_results") - } - /// Search in progress... - public static var searchSearching: String { - return MatrixKitL10n.tr("search_searching") - } - /// Select an account - public static var selectAccount: String { - return MatrixKitL10n.tr("select_account") - } - /// Select All - public static var selectAll: String { - return MatrixKitL10n.tr("select_all") - } - /// Send - public static var send: String { - return MatrixKitL10n.tr("send") - } - /// Set Admin - public static var setAdmin: String { - return MatrixKitL10n.tr("set_admin") - } - /// Reset Power Level - public static var setDefaultPowerLevel: String { - return MatrixKitL10n.tr("set_default_power_level") - } - /// Set Moderator - public static var setModerator: String { - return MatrixKitL10n.tr("set_moderator") - } - /// Set Power Level - public static var setPowerLevel: String { - return MatrixKitL10n.tr("set_power_level") - } - /// Settings - public static var settings: String { - return MatrixKitL10n.tr("settings") - } - /// Homeserver: %@ - public static func settingsConfigHomeServer(_ p1: String) -> String { - return MatrixKitL10n.tr("settings_config_home_server", p1) - } - /// Identity server: %@ - public static func settingsConfigIdentityServer(_ p1: String) -> String { - return MatrixKitL10n.tr("settings_config_identity_server", p1) - } - /// User ID: %@ - public static func settingsConfigUserId(_ p1: String) -> String { - return MatrixKitL10n.tr("settings_config_user_id", p1) - } - /// Enable In-App notifications - public static var settingsEnableInappNotifications: String { - return MatrixKitL10n.tr("settings_enable_inapp_notifications") - } - /// Enable push notifications - public static var settingsEnablePushNotifications: String { - return MatrixKitL10n.tr("settings_enable_push_notifications") - } - /// Enter validation token for %@: - public static func settingsEnterValidationTokenFor(_ p1: String) -> String { - return MatrixKitL10n.tr("settings_enter_validation_token_for", p1) - } - /// Configuration - public static var settingsTitleConfig: String { - return MatrixKitL10n.tr("settings_title_config") - } - /// Notifications - public static var settingsTitleNotifications: String { - return MatrixKitL10n.tr("settings_title_notifications") - } - /// Share - public static var share: String { - return MatrixKitL10n.tr("share") - } - /// Show Details - public static var showDetails: String { - return MatrixKitL10n.tr("show_details") - } - /// Sign up - public static var signUp: String { - return MatrixKitL10n.tr("sign_up") - } - /// If the server administrator has said that this is expected, ensure that the fingerprint below matches the fingerprint provided by them. - public static var sslCertNewAccountExpl: String { - return MatrixKitL10n.tr("ssl_cert_new_account_expl") - } - /// This could mean that someone is maliciously intercepting your traffic, or that your phone does not trust the certificate provided by the remote server. - public static var sslCertNotTrust: String { - return MatrixKitL10n.tr("ssl_cert_not_trust") - } - /// Could not verify identity of remote server. - public static var sslCouldNotVerify: String { - return MatrixKitL10n.tr("ssl_could_not_verify") - } - /// The certificate has changed from a previously trusted one to one that is not trusted. The server may have renewed its certificate. Contact the server administrator for the expected fingerprint. - public static var sslExpectedExistingExpl: String { - return MatrixKitL10n.tr("ssl_expected_existing_expl") - } - /// Fingerprint (%@): - public static func sslFingerprintHash(_ p1: String) -> String { - return MatrixKitL10n.tr("ssl_fingerprint_hash", p1) - } - /// Homeserver URL: %@ - public static func sslHomeserverUrl(_ p1: String) -> String { - return MatrixKitL10n.tr("ssl_homeserver_url", p1) - } - /// Logout - public static var sslLogoutAccount: String { - return MatrixKitL10n.tr("ssl_logout_account") - } - /// ONLY accept the certificate if the server administrator has published a fingerprint that matches the one above. - public static var sslOnlyAccept: String { - return MatrixKitL10n.tr("ssl_only_accept") - } - /// Ignore - public static var sslRemainOffline: String { - return MatrixKitL10n.tr("ssl_remain_offline") - } - /// Trust - public static var sslTrust: String { - return MatrixKitL10n.tr("ssl_trust") - } - /// The certificate has changed from one that was trusted by your phone. This is HIGHLY UNUSUAL. It is recommended that you DO NOT ACCEPT this new certificate. - public static var sslUnexpectedExistingExpl: String { - return MatrixKitL10n.tr("ssl_unexpected_existing_expl") - } - /// Start Chat - public static var startChat: String { - return MatrixKitL10n.tr("start_chat") - } - /// Start Video Call - public static var startVideoCall: String { - return MatrixKitL10n.tr("start_video_call") - } - /// Start Voice Call - public static var startVoiceCall: String { - return MatrixKitL10n.tr("start_voice_call") - } - /// Submit - public static var submit: String { - return MatrixKitL10n.tr("submit") - } - /// Submit code - public static var submitCode: String { - return MatrixKitL10n.tr("submit_code") - } - /// Un-ban - public static var unban: String { - return MatrixKitL10n.tr("unban") - } - /// Unignore - public static var unignore: String { - return MatrixKitL10n.tr("unignore") - } - /// Unsent - public static var unsent: String { - return MatrixKitL10n.tr("unsent") - } - /// ex: @bob:homeserver - public static var userIdPlaceholder: String { - return MatrixKitL10n.tr("user_id_placeholder") - } - /// User ID: - public static var userIdTitle: String { - return MatrixKitL10n.tr("user_id_title") - } - /// View - public static var view: String { - return MatrixKitL10n.tr("view") - } - /// Yes - public static var yes: String { - return MatrixKitL10n.tr("yes") - } -} -// swiftlint:enable function_parameter_count identifier_name line_length type_body_length - -// MARK: - Implementation Details - -extension MatrixKitL10n { - static func tr(_ key: String, _ args: CVarArg...) -> String { - let format = Bundle.mxk_localizedString(forKey: key)! - return String(format: format, arguments: args) - } -} - -private final class BundleToken {} diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 84b6970a6..755555512 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -11,6 +11,10 @@ import Foundation // swiftlint:disable function_parameter_count identifier_name line_length type_body_length @objcMembers public class VectorL10n: NSObject { + /// Abort + public static var abort: String { + return VectorL10n.tr("Vector", "abort") + } /// Accept public static var accept: String { return VectorL10n.tr("Vector", "accept") @@ -23,10 +27,82 @@ public class VectorL10n: NSObject { public static var accessibilityCheckboxLabel: String { return VectorL10n.tr("Vector", "accessibility_checkbox_label") } + /// Unable to verify email address. Please check your email and click on the link it contains. Once this is done, click continue + public static var accountEmailValidationError: String { + return VectorL10n.tr("Vector", "account_email_validation_error") + } + /// Please check your email and click on the link it contains. Once this is done, click continue. + public static var accountEmailValidationMessage: String { + return VectorL10n.tr("Vector", "account_email_validation_message") + } + /// Verification Pending + public static var accountEmailValidationTitle: String { + return VectorL10n.tr("Vector", "account_email_validation_title") + } + /// Display name change failed + public static var accountErrorDisplayNameChangeFailed: String { + return VectorL10n.tr("Vector", "account_error_display_name_change_failed") + } + /// This doesn't appear to be a valid email address + public static var accountErrorEmailWrongDescription: String { + return VectorL10n.tr("Vector", "account_error_email_wrong_description") + } + /// Invalid Email Address + public static var accountErrorEmailWrongTitle: String { + return VectorL10n.tr("Vector", "account_error_email_wrong_title") + } + /// Matrix session is not opened + public static var accountErrorMatrixSessionIsNotOpened: String { + return VectorL10n.tr("Vector", "account_error_matrix_session_is_not_opened") + } + /// This doesn't appear to be a valid phone number + public static var accountErrorMsisdnWrongDescription: String { + return VectorL10n.tr("Vector", "account_error_msisdn_wrong_description") + } + /// Invalid Phone Number + public static var accountErrorMsisdnWrongTitle: String { + return VectorL10n.tr("Vector", "account_error_msisdn_wrong_title") + } + /// Picture change failed + public static var accountErrorPictureChangeFailed: String { + return VectorL10n.tr("Vector", "account_error_picture_change_failed") + } + /// Notifications not allowed + public static var accountErrorPushNotAllowed: String { + return VectorL10n.tr("Vector", "account_error_push_not_allowed") + } + /// Link Email + public static var accountLinkEmail: String { + return VectorL10n.tr("Vector", "account_link_email") + } + /// Linked emails + public static var accountLinkedEmails: String { + return VectorL10n.tr("Vector", "account_linked_emails") + } /// Logout all accounts public static var accountLogoutAll: String { return VectorL10n.tr("Vector", "account_logout_all") } + /// Unable to verify phone number. + public static var accountMsisdnValidationError: String { + return VectorL10n.tr("Vector", "account_msisdn_validation_error") + } + /// We've sent an SMS with an activation code. Please enter this code below. + public static var accountMsisdnValidationMessage: String { + return VectorL10n.tr("Vector", "account_msisdn_validation_message") + } + /// Verification Pending + public static var accountMsisdnValidationTitle: String { + return VectorL10n.tr("Vector", "account_msisdn_validation_title") + } + /// Save changes + public static var accountSaveChanges: String { + return VectorL10n.tr("Vector", "account_save_changes") + } + /// Logout + public static var actionLogout: String { + return VectorL10n.tr("Vector", "action_logout") + } /// Active Call public static var activeCall: String { return VectorL10n.tr("Vector", "active_call") @@ -87,6 +163,86 @@ public class VectorL10n: NSObject { public static var analyticsPromptYes: String { return VectorL10n.tr("Vector", "analytics_prompt_yes") } + /// Answer Call + public static var answerCall: String { + return VectorL10n.tr("Vector", "answer_call") + } + /// Attach Media from Library + public static var attachMedia: String { + return VectorL10n.tr("Vector", "attach_media") + } + /// Cancel the download? + public static var attachmentCancelDownload: String { + return VectorL10n.tr("Vector", "attachment_cancel_download") + } + /// Cancel the upload? + public static var attachmentCancelUpload: String { + return VectorL10n.tr("Vector", "attachment_cancel_upload") + } + /// This file contains encryption keys exported from a Matrix client.\nDo you want to view the file content or import the keys it contains? + public static var attachmentE2eKeysFilePrompt: String { + return VectorL10n.tr("Vector", "attachment_e2e_keys_file_prompt") + } + /// Import... + public static var attachmentE2eKeysImport: String { + return VectorL10n.tr("Vector", "attachment_e2e_keys_import") + } + /// Large (~%@) + public static func attachmentLarge(_ p1: String) -> String { + return VectorL10n.tr("Vector", "attachment_large", p1) + } + /// Large %@ (~%@) + public static func attachmentLargeWithResolution(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "attachment_large_with_resolution", p1, p2) + } + /// Medium (~%@) + public static func attachmentMedium(_ p1: String) -> String { + return VectorL10n.tr("Vector", "attachment_medium", p1) + } + /// Medium %@ (~%@) + public static func attachmentMediumWithResolution(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "attachment_medium_with_resolution", p1, p2) + } + /// Actual Size + public static var attachmentMultiselectionOriginal: String { + return VectorL10n.tr("Vector", "attachment_multiselection_original") + } + /// Do you want to send images as: + public static var attachmentMultiselectionSizePrompt: String { + return VectorL10n.tr("Vector", "attachment_multiselection_size_prompt") + } + /// Actual Size (%@) + public static func attachmentOriginal(_ p1: String) -> String { + return VectorL10n.tr("Vector", "attachment_original", p1) + } + /// Do you want to send as: + public static var attachmentSizePrompt: String { + return VectorL10n.tr("Vector", "attachment_size_prompt") + } + /// You can turn this off in settings. + public static var attachmentSizePromptMessage: String { + return VectorL10n.tr("Vector", "attachment_size_prompt_message") + } + /// Confirm size to send + public static var attachmentSizePromptTitle: String { + return VectorL10n.tr("Vector", "attachment_size_prompt_title") + } + /// Small (~%@) + public static func attachmentSmall(_ p1: String) -> String { + return VectorL10n.tr("Vector", "attachment_small", p1) + } + /// Small %@ (~%@) + public static func attachmentSmallWithResolution(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "attachment_small_with_resolution", p1, p2) + } + /// This file type is not supported. + public static var attachmentUnsupportedPreviewMessage: String { + return VectorL10n.tr("Vector", "attachment_unsupported_preview_message") + } + /// Unable to preview + public static var attachmentUnsupportedPreviewTitle: String { + return VectorL10n.tr("Vector", "attachment_unsupported_preview_title") + } /// Please review and accept the policies of this homeserver: public static var authAcceptPolicies: String { return VectorL10n.tr("Vector", "auth_accept_policies") @@ -375,6 +531,10 @@ public class VectorL10n: NSObject { public static var back: String { return VectorL10n.tr("Vector", "back") } + /// Ban + public static var ban: String { + return VectorL10n.tr("Vector", "ban") + } /// Log back in public static var biometricsCantUnlockedAlertMessageLogin: String { return VectorL10n.tr("Vector", "biometrics_cant_unlocked_alert_message_login") @@ -483,6 +643,22 @@ public class VectorL10n: NSObject { public static var callAlreadyDisplayed: String { return VectorL10n.tr("Vector", "call_already_displayed") } + /// Connecting… + public static var callConnecting: String { + return VectorL10n.tr("Vector", "call_connecting") + } + /// Consulting with %@ + public static func callConsultingWithUser(_ p1: String) -> String { + return VectorL10n.tr("Vector", "call_consulting_with_user", p1) + } + /// Call ended + public static var callEnded: String { + return VectorL10n.tr("Vector", "call_ended") + } + /// You held the call + public static var callHolded: String { + return VectorL10n.tr("Vector", "call_holded") + } /// Incoming video call… public static var callIncomingVideo: String { return VectorL10n.tr("Vector", "call_incoming_video") @@ -499,10 +675,38 @@ public class VectorL10n: NSObject { public static func callIncomingVoicePrompt(_ p1: String) -> String { return VectorL10n.tr("Vector", "call_incoming_voice_prompt", p1) } + /// Call Invite Expired + public static var callInviteExpired: String { + return VectorL10n.tr("Vector", "call_invite_expired") + } /// Failed to join the conference call. public static var callJitsiError: String { return VectorL10n.tr("Vector", "call_jitsi_error") } + /// Device Speaker + public static var callMoreActionsAudioUseDevice: String { + return VectorL10n.tr("Vector", "call_more_actions_audio_use_device") + } + /// Change Audio Device + public static var callMoreActionsChangeAudioDevice: String { + return VectorL10n.tr("Vector", "call_more_actions_change_audio_device") + } + /// Dial pad + public static var callMoreActionsDialpad: String { + return VectorL10n.tr("Vector", "call_more_actions_dialpad") + } + /// Hold + public static var callMoreActionsHold: String { + return VectorL10n.tr("Vector", "call_more_actions_hold") + } + /// Transfer + public static var callMoreActionsTransfer: String { + return VectorL10n.tr("Vector", "call_more_actions_transfer") + } + /// Resume + public static var callMoreActionsUnhold: String { + return VectorL10n.tr("Vector", "call_more_actions_unhold") + } /// Please ask the administrator of your homeserver %@ to configure a TURN server in order for calls to work reliably. public static func callNoStunServerErrorMessage1(_ p1: String) -> String { return VectorL10n.tr("Vector", "call_no_stun_server_error_message_1", p1) @@ -519,6 +723,14 @@ public class VectorL10n: NSObject { public static func callNoStunServerErrorUseFallbackButton(_ p1: String) -> String { return VectorL10n.tr("Vector", "call_no_stun_server_error_use_fallback_button", p1) } + /// %@ held the call + public static func callRemoteHolded(_ p1: String) -> String { + return VectorL10n.tr("Vector", "call_remote_holded", p1) + } + /// Ringing… + public static var callRinging: String { + return VectorL10n.tr("Vector", "call_ringing") + } /// All public static var callTransferContactsAll: String { return VectorL10n.tr("Vector", "call_transfer_contacts_all") @@ -543,10 +755,22 @@ public class VectorL10n: NSObject { public static var callTransferTitle: String { return VectorL10n.tr("Vector", "call_transfer_title") } + /// Transfer to %@ + public static func callTransferToUser(_ p1: String) -> String { + return VectorL10n.tr("Vector", "call_transfer_to_user", p1) + } /// Users public static var callTransferUsers: String { return VectorL10n.tr("Vector", "call_transfer_users") } + /// Video call with %@ + public static func callVideoWithUser(_ p1: String) -> String { + return VectorL10n.tr("Vector", "call_video_with_user", p1) + } + /// Voice call with %@ + public static func callVoiceWithUser(_ p1: String) -> String { + return VectorL10n.tr("Vector", "call_voice_with_user", p1) + } /// 1 active call (%@) · %@ paused calls public static func callbarActiveAndMultiplePaused(_ p1: String, _ p2: String) -> String { return VectorL10n.tr("Vector", "callbar_active_and_multiple_paused", p1, p2) @@ -583,6 +807,10 @@ public class VectorL10n: NSObject { public static func cameraAccessNotGranted(_ p1: String) -> String { return VectorL10n.tr("Vector", "camera_access_not_granted", p1) } + /// Video calls require access to the Camera but %@ doesn't have permission to use it + public static func cameraAccessNotGrantedForCall(_ p1: String) -> String { + return VectorL10n.tr("Vector", "camera_access_not_granted_for_call", p1) + } /// The camera is unavailable on your device public static var cameraUnavailable: String { return VectorL10n.tr("Vector", "camera_unavailable") @@ -591,6 +819,18 @@ public class VectorL10n: NSObject { public static var cancel: String { return VectorL10n.tr("Vector", "cancel") } + /// Cancel Download + public static var cancelDownload: String { + return VectorL10n.tr("Vector", "cancel_download") + } + /// Cancel Upload + public static var cancelUpload: String { + return VectorL10n.tr("Vector", "cancel_upload") + } + /// Take Photo/Video + public static var captureMedia: String { + return VectorL10n.tr("Vector", "capture_media") + } /// Close public static var close: String { return VectorL10n.tr("Vector", "close") @@ -599,6 +839,14 @@ public class VectorL10n: NSObject { public static var collapse: String { return VectorL10n.tr("Vector", "collapse") } + /// Local Contacts + public static var contactLocalContacts: String { + return VectorL10n.tr("Vector", "contact_local_contacts") + } + /// Matrix Users + public static var contactMxUsers: String { + return VectorL10n.tr("Vector", "contact_mx_users") + } /// Matrix users only public static var contactsAddressBookMatrixUsersToggle: String { return VectorL10n.tr("Vector", "contacts_address_book_matrix_users_toggle") @@ -643,10 +891,26 @@ public class VectorL10n: NSObject { public static var `continue`: String { return VectorL10n.tr("Vector", "continue") } + /// Copy + public static var copyButtonName: String { + return VectorL10n.tr("Vector", "copy_button_name") + } + /// Choose a country + public static var countryPickerTitle: String { + return VectorL10n.tr("Vector", "country_picker_title") + } /// Create public static var create: String { return VectorL10n.tr("Vector", "create") } + /// Create Account + public static var createAccount: String { + return VectorL10n.tr("Vector", "create_account") + } + /// Create Room + public static var createRoom: String { + return VectorL10n.tr("Vector", "create_room") + } /// Enable Encryption public static var createRoomEnableEncryption: String { return VectorL10n.tr("Vector", "create_room_enable_encryption") @@ -767,6 +1031,50 @@ public class VectorL10n: NSObject { public static var decline: String { return VectorL10n.tr("Vector", "decline") } + /// default + public static var `default`: String { + return VectorL10n.tr("Vector", "default") + } + /// Delete + public static var delete: String { + return VectorL10n.tr("Vector", "delete") + } + /// This operation requires additional authentication.\nTo continue, please enter your password. + public static var deviceDetailsDeletePromptMessage: String { + return VectorL10n.tr("Vector", "device_details_delete_prompt_message") + } + /// Authentication + public static var deviceDetailsDeletePromptTitle: String { + return VectorL10n.tr("Vector", "device_details_delete_prompt_title") + } + /// ID\n + public static var deviceDetailsIdentifier: String { + return VectorL10n.tr("Vector", "device_details_identifier") + } + /// Last seen\n + public static var deviceDetailsLastSeen: String { + return VectorL10n.tr("Vector", "device_details_last_seen") + } + /// %@ @ %@\n + public static func deviceDetailsLastSeenFormat(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "device_details_last_seen_format", p1, p2) + } + /// Public Name\n + public static var deviceDetailsName: String { + return VectorL10n.tr("Vector", "device_details_name") + } + /// A session's public name is visible to people you communicate with + public static var deviceDetailsRenamePromptMessage: String { + return VectorL10n.tr("Vector", "device_details_rename_prompt_message") + } + /// Session Name + public static var deviceDetailsRenamePromptTitle: String { + return VectorL10n.tr("Vector", "device_details_rename_prompt_title") + } + /// Session information\n + public static var deviceDetailsTitle: String { + return VectorL10n.tr("Vector", "device_details_title") + } /// The other party cancelled the verification. public static var deviceVerificationCancelled: String { return VectorL10n.tr("Vector", "device_verification_cancelled") @@ -1199,6 +1507,14 @@ public class VectorL10n: NSObject { public static var directoryTitle: String { return VectorL10n.tr("Vector", "directory_title") } + /// Discard + public static var discard: String { + return VectorL10n.tr("Vector", "discard") + } + /// Dismiss + public static var dismiss: String { + return VectorL10n.tr("Vector", "dismiss") + } /// Do not ask again public static var doNotAskAgain: String { return VectorL10n.tr("Vector", "do_not_ask_again") @@ -1211,6 +1527,30 @@ public class VectorL10n: NSObject { public static func e2eEnablingOnAppUpdate(_ p1: String) -> String { return VectorL10n.tr("Vector", "e2e_enabling_on_app_update", p1) } + /// Export + public static var e2eExport: String { + return VectorL10n.tr("Vector", "e2e_export") + } + /// This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.\nThe exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. + public static var e2eExportPrompt: String { + return VectorL10n.tr("Vector", "e2e_export_prompt") + } + /// Export room keys + public static var e2eExportRoomKeys: String { + return VectorL10n.tr("Vector", "e2e_export_room_keys") + } + /// Import + public static var e2eImport: String { + return VectorL10n.tr("Vector", "e2e_import") + } + /// This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.\nThe export file is protected with a passphrase. You should enter the passphrase here, to decrypt the file. + public static var e2eImportPrompt: String { + return VectorL10n.tr("Vector", "e2e_import_prompt") + } + /// Import room keys + public static var e2eImportRoomKeys: String { + return VectorL10n.tr("Vector", "e2e_import_room_keys") + } /// A new secure message key backup has been detected.\n\nIf this wasn’t you, set a new Security Phrase in Settings. public static var e2eKeyBackupWrongVersion: String { return VectorL10n.tr("Vector", "e2e_key_backup_wrong_version") @@ -1231,6 +1571,30 @@ public class VectorL10n: NSObject { public static var e2eNeedLogInAgain: String { return VectorL10n.tr("Vector", "e2e_need_log_in_again") } + /// Confirm passphrase + public static var e2ePassphraseConfirm: String { + return VectorL10n.tr("Vector", "e2e_passphrase_confirm") + } + /// Create passphrase + public static var e2ePassphraseCreate: String { + return VectorL10n.tr("Vector", "e2e_passphrase_create") + } + /// Passphrase must not be empty + public static var e2ePassphraseEmpty: String { + return VectorL10n.tr("Vector", "e2e_passphrase_empty") + } + /// Enter passphrase + public static var e2ePassphraseEnter: String { + return VectorL10n.tr("Vector", "e2e_passphrase_enter") + } + /// Passphrases must match + public static var e2ePassphraseNotMatch: String { + return VectorL10n.tr("Vector", "e2e_passphrase_not_match") + } + /// Passphrase too short (It must be at a minimum %d characters in length) + public static func e2ePassphraseTooShort(_ p1: Int) -> String { + return VectorL10n.tr("Vector", "e2e_passphrase_too_short", p1) + } /// Ignore request public static var e2eRoomKeyRequestIgnoreRequest: String { return VectorL10n.tr("Vector", "e2e_room_key_request_ignore_request") @@ -1303,6 +1667,18 @@ public class VectorL10n: NSObject { public static var encryptedRoomMessageReplyToPlaceholder: String { return VectorL10n.tr("Vector", "encrypted_room_message_reply_to_placeholder") } + /// End Call + public static var endCall: String { + return VectorL10n.tr("Vector", "end_call") + } + /// Error + public static var error: String { + return VectorL10n.tr("Vector", "error") + } + /// An error occured. Please try again later. + public static var errorCommonMessage: String { + return VectorL10n.tr("Vector", "error_common_message") + } /// Add an identity server in your settings to invite by email. public static var errorInvite3pidWithNoIdentityServer: String { return VectorL10n.tr("Vector", "error_invite_3pid_with_no_identity_server") @@ -1495,6 +1871,22 @@ public class VectorL10n: NSObject { public static var findYourContactsTitle: String { return VectorL10n.tr("Vector", "find_your_contacts_title") } + /// d + public static var formatTimeD: String { + return VectorL10n.tr("Vector", "format_time_d") + } + /// h + public static var formatTimeH: String { + return VectorL10n.tr("Vector", "format_time_h") + } + /// m + public static var formatTimeM: String { + return VectorL10n.tr("Vector", "format_time_m") + } + /// s + public static var formatTimeS: String { + return VectorL10n.tr("Vector", "format_time_s") + } /// To continue using the %@ homeserver you must review and agree to the terms and conditions. public static func gdprConsentNotGivenAlertMessage(_ p1: String) -> String { return VectorL10n.tr("Vector", "gdpr_consent_not_given_alert_message", p1) @@ -1647,6 +2039,10 @@ public class VectorL10n: NSObject { public static func homeEmptyViewTitle(_ p1: String, _ p2: String) -> String { return VectorL10n.tr("Vector", "home_empty_view_title", p1, p2) } + /// Syncing + public static var homeSyncing: String { + return VectorL10n.tr("Vector", "home_syncing") + } /// Could not connect to the homeserver. public static var homeserverConnectionLost: String { return VectorL10n.tr("Vector", "homeserver_connection_lost") @@ -1727,6 +2123,10 @@ public class VectorL10n: NSObject { public static var identityServerSettingsTitle: String { return VectorL10n.tr("Vector", "identity_server_settings_title") } + /// Ignore + public static var ignore: String { + return VectorL10n.tr("Vector", "ignore") + } /// Take photo public static var imagePickerActionCamera: String { return VectorL10n.tr("Vector", "image_picker_action_camera") @@ -1735,6 +2135,18 @@ public class VectorL10n: NSObject { public static var imagePickerActionLibrary: String { return VectorL10n.tr("Vector", "image_picker_action_library") } + /// Incoming Video Call + public static var incomingVideoCall: String { + return VectorL10n.tr("Vector", "incoming_video_call") + } + /// Incoming Voice Call + public static var incomingVoiceCall: String { + return VectorL10n.tr("Vector", "incoming_voice_call") + } + /// I'd like to chat with you with matrix. Please, visit the website http://matrix.org to have more information. + public static var invitationMessage: String { + return VectorL10n.tr("Vector", "invitation_message") + } /// Invite public static var invite: String { return VectorL10n.tr("Vector", "invite") @@ -1747,6 +2159,10 @@ public class VectorL10n: NSObject { public static func inviteFriendsShareText(_ p1: String, _ p2: String) -> String { return VectorL10n.tr("Vector", "invite_friends_share_text", p1, p2) } + /// Invite matrix User + public static var inviteUser: String { + return VectorL10n.tr("Vector", "invite_user") + } /// Join public static var join: String { return VectorL10n.tr("Vector", "join") @@ -1859,7 +2275,7 @@ public class VectorL10n: NSObject { public static var keyBackupSetupIntroTitle: String { return VectorL10n.tr("Vector", "key_backup_setup_intro_title") } - /// Phrase doesn’t match + /// phrase doesn’t match public static var keyBackupSetupPassphraseConfirmPassphraseInvalid: String { return VectorL10n.tr("Vector", "key_backup_setup_passphrase_confirm_passphrase_invalid") } @@ -2199,6 +2615,18 @@ public class VectorL10n: NSObject { public static var keyVerificationVerifySasValidateAction: String { return VectorL10n.tr("Vector", "key_verification_verify_sas_validate_action") } + /// Remove from chat + public static var kick: String { + return VectorL10n.tr("Vector", "kick") + } + /// Default (%@) + public static func languagePickerDefaultLanguage(_ p1: String) -> String { + return VectorL10n.tr("Vector", "language_picker_default_language", p1) + } + /// Choose a language + public static var languagePickerTitle: String { + return VectorL10n.tr("Vector", "language_picker_title") + } /// %.1fK public static func largeBadgeValueKFormat(_ p1: Float) -> String { return VectorL10n.tr("Vector", "large_badge_value_k_format", p1) @@ -2235,6 +2663,18 @@ public class VectorL10n: NSObject { public static var less: String { return VectorL10n.tr("Vector", "less") } + /// To discover contacts already using Matrix, %@ can send email addresses and phone numbers in your address book to your chosen Matrix identity server. Where supported, personal data is hashed before sending - please check your identity server's privacy policy for more details. + public static func localContactsAccessDiscoveryWarning(_ p1: String) -> String { + return VectorL10n.tr("Vector", "local_contacts_access_discovery_warning", p1) + } + /// Users discovery + public static var localContactsAccessDiscoveryWarningTitle: String { + return VectorL10n.tr("Vector", "local_contacts_access_discovery_warning_title") + } + /// Users discovery from local contacts requires access to you contacts but %@ doesn't have permission to use it + public static func localContactsAccessNotGranted(_ p1: String) -> String { + return VectorL10n.tr("Vector", "local_contacts_access_not_granted", p1) + } /// Close public static var locationSharingCloseAction: String { return VectorL10n.tr("Vector", "location_sharing_close_action") @@ -2295,6 +2735,162 @@ public class VectorL10n: NSObject { public static var locationSharingTitle: String { return VectorL10n.tr("Vector", "location_sharing_title") } + /// Login + public static var login: String { + return VectorL10n.tr("Vector", "login") + } + /// Create account: + public static var loginCreateAccount: String { + return VectorL10n.tr("Vector", "login_create_account") + } + /// Desktop + public static var loginDesktopDevice: String { + return VectorL10n.tr("Vector", "login_desktop_device") + } + /// Display name (e.g. Bob Obson) + public static var loginDisplayNamePlaceholder: String { + return VectorL10n.tr("Vector", "login_display_name_placeholder") + } + /// Specify an email address lets other users find you on Matrix more easily, and will give you a way to reset your password in the future. + public static var loginEmailInfo: String { + return VectorL10n.tr("Vector", "login_email_info") + } + /// Email address + public static var loginEmailPlaceholder: String { + return VectorL10n.tr("Vector", "login_email_placeholder") + } + /// Already logged in + public static var loginErrorAlreadyLoggedIn: String { + return VectorL10n.tr("Vector", "login_error_already_logged_in") + } + /// Malformed JSON + public static var loginErrorBadJson: String { + return VectorL10n.tr("Vector", "login_error_bad_json") + } + /// Currently we do not support any or all login flows defined by this homeserver + public static var loginErrorDoNotSupportLoginFlows: String { + return VectorL10n.tr("Vector", "login_error_do_not_support_login_flows") + } + /// Invalid username/password + public static var loginErrorForbidden: String { + return VectorL10n.tr("Vector", "login_error_forbidden") + } + /// Forgot password is not currently supported + public static var loginErrorForgotPasswordIsNotSupported: String { + return VectorL10n.tr("Vector", "login_error_forgot_password_is_not_supported") + } + /// Too many requests have been sent + public static var loginErrorLimitExceeded: String { + return VectorL10n.tr("Vector", "login_error_limit_exceeded") + } + /// The email link which has not been clicked yet + public static var loginErrorLoginEmailNotYet: String { + return VectorL10n.tr("Vector", "login_error_login_email_not_yet") + } + /// URL must start with http[s]:// + public static var loginErrorMustStartHttp: String { + return VectorL10n.tr("Vector", "login_error_must_start_http") + } + /// We failed to retrieve authentication information from this homeserver + public static var loginErrorNoLoginFlow: String { + return VectorL10n.tr("Vector", "login_error_no_login_flow") + } + /// Did not contain valid JSON + public static var loginErrorNotJson: String { + return VectorL10n.tr("Vector", "login_error_not_json") + } + /// Registration is not currently supported + public static var loginErrorRegistrationIsNotSupported: String { + return VectorL10n.tr("Vector", "login_error_registration_is_not_supported") + } + /// Contact Administrator + public static var loginErrorResourceLimitExceededContactButton: String { + return VectorL10n.tr("Vector", "login_error_resource_limit_exceeded_contact_button") + } + /// \n\nPlease contact your service administrator to continue using this service. + public static var loginErrorResourceLimitExceededMessageContact: String { + return VectorL10n.tr("Vector", "login_error_resource_limit_exceeded_message_contact") + } + /// This homeserver has exceeded one of its resource limits. + public static var loginErrorResourceLimitExceededMessageDefault: String { + return VectorL10n.tr("Vector", "login_error_resource_limit_exceeded_message_default") + } + /// This homeserver has hit its Monthly Active User limit. + public static var loginErrorResourceLimitExceededMessageMonthlyActiveUser: String { + return VectorL10n.tr("Vector", "login_error_resource_limit_exceeded_message_monthly_active_user") + } + /// Resource Limit Exceeded + public static var loginErrorResourceLimitExceededTitle: String { + return VectorL10n.tr("Vector", "login_error_resource_limit_exceeded_title") + } + /// Login Failed + public static var loginErrorTitle: String { + return VectorL10n.tr("Vector", "login_error_title") + } + /// The access token specified was not recognised + public static var loginErrorUnknownToken: String { + return VectorL10n.tr("Vector", "login_error_unknown_token") + } + /// This user name is already used + public static var loginErrorUserInUse: String { + return VectorL10n.tr("Vector", "login_error_user_in_use") + } + /// Your homeserver stores all your conversations and account data + public static var loginHomeServerInfo: String { + return VectorL10n.tr("Vector", "login_home_server_info") + } + /// Homeserver URL: + public static var loginHomeServerTitle: String { + return VectorL10n.tr("Vector", "login_home_server_title") + } + /// Matrix provides identity servers to track which emails etc. belong to which Matrix IDs. Only https://matrix.org currently exists. + public static var loginIdentityServerInfo: String { + return VectorL10n.tr("Vector", "login_identity_server_info") + } + /// Identity server URL: + public static var loginIdentityServerTitle: String { + return VectorL10n.tr("Vector", "login_identity_server_title") + } + /// Invalid parameter + public static var loginInvalidParam: String { + return VectorL10n.tr("Vector", "login_invalid_param") + } + /// Cancel + public static var loginLeaveFallback: String { + return VectorL10n.tr("Vector", "login_leave_fallback") + } + /// Mobile + public static var loginMobileDevice: String { + return VectorL10n.tr("Vector", "login_mobile_device") + } + /// optional + public static var loginOptionalField: String { + return VectorL10n.tr("Vector", "login_optional_field") + } + /// Password + public static var loginPasswordPlaceholder: String { + return VectorL10n.tr("Vector", "login_password_placeholder") + } + /// Please enter your email validation token: + public static var loginPromptEmailToken: String { + return VectorL10n.tr("Vector", "login_prompt_email_token") + } + /// URL (e.g. https://matrix.org) + public static var loginServerUrlPlaceholder: String { + return VectorL10n.tr("Vector", "login_server_url_placeholder") + } + /// Tablet + public static var loginTabletDevice: String { + return VectorL10n.tr("Vector", "login_tablet_device") + } + /// Use fallback page + public static var loginUseFallback: String { + return VectorL10n.tr("Vector", "login_use_fallback") + } + /// Matrix ID (e.g. @bob:matrix.org or bob) + public static var loginUserIdPlaceholder: String { + return VectorL10n.tr("Vector", "login_user_id_placeholder") + } /// Got it public static var majorUpdateDoneAction: String { return VectorL10n.tr("Vector", "major_update_done_action") @@ -2335,6 +2931,10 @@ public class VectorL10n: NSObject { public static var manageSessionTrusted: String { return VectorL10n.tr("Vector", "manage_session_trusted") } + /// Matrix + public static var matrix: String { + return VectorL10n.tr("Vector", "matrix") + } /// Library public static var mediaPickerLibrary: String { return VectorL10n.tr("Vector", "media_picker_library") @@ -2371,14 +2971,74 @@ public class VectorL10n: NSObject { public static var mediaTypeAccessibilityVideo: String { return VectorL10n.tr("Vector", "media_type_accessibility_video") } + /// Banned + public static var membershipBan: String { + return VectorL10n.tr("Vector", "membership_ban") + } + /// Invited + public static var membershipInvite: String { + return VectorL10n.tr("Vector", "membership_invite") + } + /// Left + public static var membershipLeave: String { + return VectorL10n.tr("Vector", "membership_leave") + } + /// Mention + public static var mention: String { + return VectorL10n.tr("Vector", "mention") + } /// From a thread public static var messageFromAThread: String { return VectorL10n.tr("Vector", "message_from_a_thread") } + /// In reply to + public static var messageReplyToMessageToReplyToPrefix: String { + return VectorL10n.tr("Vector", "message_reply_to_message_to_reply_to_prefix") + } + /// sent a file. + public static var messageReplyToSenderSentAFile: String { + return VectorL10n.tr("Vector", "message_reply_to_sender_sent_a_file") + } + /// sent a video. + public static var messageReplyToSenderSentAVideo: String { + return VectorL10n.tr("Vector", "message_reply_to_sender_sent_a_video") + } + /// sent a voice message. + public static var messageReplyToSenderSentAVoiceMessage: String { + return VectorL10n.tr("Vector", "message_reply_to_sender_sent_a_voice_message") + } + /// sent an audio file. + public static var messageReplyToSenderSentAnAudioFile: String { + return VectorL10n.tr("Vector", "message_reply_to_sender_sent_an_audio_file") + } + /// sent an image. + public static var messageReplyToSenderSentAnImage: String { + return VectorL10n.tr("Vector", "message_reply_to_sender_sent_an_image") + } + /// has shared their location. + public static var messageReplyToSenderSentTheirLocation: String { + return VectorL10n.tr("Vector", "message_reply_to_sender_sent_their_location") + } + /// There are unsaved changes. Leaving will discard them. + public static var messageUnsavedChanges: String { + return VectorL10n.tr("Vector", "message_unsaved_changes") + } + /// Calls require access to the Microphone but %@ doesn't have permission to use it + public static func microphoneAccessNotGrantedForCall(_ p1: String) -> String { + return VectorL10n.tr("Vector", "microphone_access_not_granted_for_call", p1) + } + /// Voice messages require access to the Microphone but %@ doesn't have permission to use it + public static func microphoneAccessNotGrantedForVoiceMessage(_ p1: String) -> String { + return VectorL10n.tr("Vector", "microphone_access_not_granted_for_voice_message", p1) + } /// More public static var more: String { return VectorL10n.tr("Vector", "more") } + /// Please check your network connectivity + public static var networkErrorNotReachable: String { + return VectorL10n.tr("Vector", "network_error_not_reachable") + } /// The Internet connection appears to be offline. public static var networkOfflinePrompt: String { return VectorL10n.tr("Vector", "network_offline_prompt") @@ -2387,6 +3047,10 @@ public class VectorL10n: NSObject { public static var next: String { return VectorL10n.tr("Vector", "next") } + /// No + public static var no: String { + return VectorL10n.tr("Vector", "no") + } /// %@ is calling you but %@ does not support calls yet.\nYou can ignore this notification and answer the call from another device or you can reject it. public static func noVoip(_ p1: String, _ p2: String) -> String { return VectorL10n.tr("Vector", "no_voip", p1, p2) @@ -2395,10 +3059,634 @@ public class VectorL10n: NSObject { public static var noVoipTitle: String { return VectorL10n.tr("Vector", "no_voip_title") } + /// Not supported yet + public static var notSupportedYet: String { + return VectorL10n.tr("Vector", "not_supported_yet") + } + /// %@ answered the call + public static func noticeAnsweredVideoCall(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_answered_video_call", p1) + } + /// You answered the call + public static var noticeAnsweredVideoCallByYou: String { + return VectorL10n.tr("Vector", "notice_answered_video_call_by_you") + } + /// audio attachment + public static var noticeAudioAttachment: String { + return VectorL10n.tr("Vector", "notice_audio_attachment") + } + /// (avatar was changed too) + public static var noticeAvatarChangedToo: String { + return VectorL10n.tr("Vector", "notice_avatar_changed_too") + } + /// %@ changed their avatar + public static func noticeAvatarUrlChanged(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_avatar_url_changed", p1) + } + /// You changed your avatar + public static var noticeAvatarUrlChangedByYou: String { + return VectorL10n.tr("Vector", "notice_avatar_url_changed_by_you") + } + /// VoIP conference finished + public static var noticeConferenceCallFinished: String { + return VectorL10n.tr("Vector", "notice_conference_call_finished") + } + /// %@ requested a VoIP conference + public static func noticeConferenceCallRequest(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_conference_call_request", p1) + } + /// You requested a VoIP conference + public static var noticeConferenceCallRequestByYou: String { + return VectorL10n.tr("Vector", "notice_conference_call_request_by_you") + } + /// VoIP conference started + public static var noticeConferenceCallStarted: String { + return VectorL10n.tr("Vector", "notice_conference_call_started") + } + /// The sender's session has not sent us the keys for this message. + public static var noticeCryptoErrorUnknownInboundSessionId: String { + return VectorL10n.tr("Vector", "notice_crypto_error_unknown_inbound_session_id") + } + /// ** Unable to decrypt: %@ ** + public static func noticeCryptoUnableToDecrypt(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_crypto_unable_to_decrypt", p1) + } + /// %@ declined the call + public static func noticeDeclinedVideoCall(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_declined_video_call", p1) + } + /// You declined the call + public static var noticeDeclinedVideoCallByYou: String { + return VectorL10n.tr("Vector", "notice_declined_video_call_by_you") + } + /// %@ changed their display name from %@ to %@ + public static func noticeDisplayNameChangedFrom(_ p1: String, _ p2: String, _ p3: String) -> String { + return VectorL10n.tr("Vector", "notice_display_name_changed_from", p1, p2, p3) + } + /// You changed your display name from %@ to %@ + public static func noticeDisplayNameChangedFromByYou(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_display_name_changed_from_by_you", p1, p2) + } + /// %@ removed their display name + public static func noticeDisplayNameRemoved(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_display_name_removed", p1) + } + /// You removed your display name + public static var noticeDisplayNameRemovedByYou: String { + return VectorL10n.tr("Vector", "notice_display_name_removed_by_you") + } + /// %@ set their display name to %@ + public static func noticeDisplayNameSet(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_display_name_set", p1, p2) + } + /// You set your display name to %@ + public static func noticeDisplayNameSetByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_display_name_set_by_you", p1) + } + /// Encrypted message + public static var noticeEncryptedMessage: String { + return VectorL10n.tr("Vector", "notice_encrypted_message") + } + /// %@ turned on end-to-end encryption. + public static func noticeEncryptionEnabledOk(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_encryption_enabled_ok", p1) + } + /// You turned on end-to-end encryption. + public static var noticeEncryptionEnabledOkByYou: String { + return VectorL10n.tr("Vector", "notice_encryption_enabled_ok_by_you") + } + /// %1$@ turned on end-to-end encryption (unrecognised algorithm %2$@). + public static func noticeEncryptionEnabledUnknownAlgorithm(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_encryption_enabled_unknown_algorithm", p1, p2) + } + /// You turned on end-to-end encryption (unrecognised algorithm %@). + public static func noticeEncryptionEnabledUnknownAlgorithmByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_encryption_enabled_unknown_algorithm_by_you", p1) + } + /// %@ ended the call + public static func noticeEndedVideoCall(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_ended_video_call", p1) + } + /// You ended the call + public static var noticeEndedVideoCallByYou: String { + return VectorL10n.tr("Vector", "notice_ended_video_call_by_you") + } + /// Unexpected event + public static var noticeErrorUnexpectedEvent: String { + return VectorL10n.tr("Vector", "notice_error_unexpected_event") + } + /// ** Unable to render message. Please report a bug + public static var noticeErrorUnformattableEvent: String { + return VectorL10n.tr("Vector", "notice_error_unformattable_event") + } + /// Unknown event type + public static var noticeErrorUnknownEventType: String { + return VectorL10n.tr("Vector", "notice_error_unknown_event_type") + } + /// Unsupported event + public static var noticeErrorUnsupportedEvent: String { + return VectorL10n.tr("Vector", "notice_error_unsupported_event") + } + /// + public static func noticeEventRedacted(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_event_redacted", p1) + } + /// by %@ + public static func noticeEventRedactedBy(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_event_redacted_by", p1) + } + /// by you + public static var noticeEventRedactedByYou: String { + return VectorL10n.tr("Vector", "notice_event_redacted_by_you") + } + /// [reason: %@] + public static func noticeEventRedactedReason(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_event_redacted_reason", p1) + } + /// Feedback event (id: %@): %@ + public static func noticeFeedback(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_feedback", p1, p2) + } + /// file attachment + public static var noticeFileAttachment: String { + return VectorL10n.tr("Vector", "notice_file_attachment") + } + /// image attachment + public static var noticeImageAttachment: String { + return VectorL10n.tr("Vector", "notice_image_attachment") + } + /// In reply to + public static var noticeInReplyTo: String { + return VectorL10n.tr("Vector", "notice_in_reply_to") + } + /// invalid attachment + public static var noticeInvalidAttachment: String { + return VectorL10n.tr("Vector", "notice_invalid_attachment") + } + /// location attachment + public static var noticeLocationAttachment: String { + return VectorL10n.tr("Vector", "notice_location_attachment") + } + /// %@ placed a video call + public static func noticePlacedVideoCall(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_placed_video_call", p1) + } + /// You placed a video call + public static var noticePlacedVideoCallByYou: String { + return VectorL10n.tr("Vector", "notice_placed_video_call_by_you") + } + /// %@ placed a voice call + public static func noticePlacedVoiceCall(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_placed_voice_call", p1) + } + /// You placed a voice call + public static var noticePlacedVoiceCallByYou: String { + return VectorL10n.tr("Vector", "notice_placed_voice_call_by_you") + } + /// %@ updated their profile %@ + public static func noticeProfileChangeRedacted(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_profile_change_redacted", p1, p2) + } + /// You updated your profile %@ + public static func noticeProfileChangeRedactedByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_profile_change_redacted_by_you", p1) + } + /// %@ redacted an event (id: %@) + public static func noticeRedaction(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_redaction", p1, p2) + } + /// You redacted an event (id: %@) + public static func noticeRedactionByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_redaction_by_you", p1) + } + /// The room aliases are: %@ + public static func noticeRoomAliases(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_aliases", p1) + } + /// The aliases are: %@ + public static func noticeRoomAliasesForDm(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_aliases_for_dm", p1) + } + /// %@ banned %@ + public static func noticeRoomBan(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_ban", p1, p2) + } + /// You banned %@ + public static func noticeRoomBanByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_ban_by_you", p1) + } + /// %@ created and configured the room. + public static func noticeRoomCreated(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_created", p1) + } + /// You created and configured the room. + public static var noticeRoomCreatedByYou: String { + return VectorL10n.tr("Vector", "notice_room_created_by_you") + } + /// You joined. + public static var noticeRoomCreatedByYouForDm: String { + return VectorL10n.tr("Vector", "notice_room_created_by_you_for_dm") + } + /// %@ joined. + public static func noticeRoomCreatedForDm(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_created_for_dm", p1) + } + /// %@ made future room history visible to anyone. + public static func noticeRoomHistoryVisibleToAnyone(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_anyone", p1) + } + /// You made future room history visible to anyone. + public static var noticeRoomHistoryVisibleToAnyoneByYou: String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_anyone_by_you") + } + /// %@ made future room history visible to all room members. + public static func noticeRoomHistoryVisibleToMembers(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members", p1) + } + /// You made future room history visible to all room members. + public static var noticeRoomHistoryVisibleToMembersByYou: String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members_by_you") + } + /// You made future messages visible to all room members. + public static var noticeRoomHistoryVisibleToMembersByYouForDm: String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members_by_you_for_dm") + } + /// %@ made future messages visible to all room members. + public static func noticeRoomHistoryVisibleToMembersForDm(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members_for_dm", p1) + } + /// %@ made future room history visible to all room members, from the point they are invited. + public static func noticeRoomHistoryVisibleToMembersFromInvitedPoint(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members_from_invited_point", p1) + } + /// You made future room history visible to all room members, from the point they are invited. + public static var noticeRoomHistoryVisibleToMembersFromInvitedPointByYou: String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members_from_invited_point_by_you") + } + /// You made future messages visible to everyone, from when they get invited. + public static var noticeRoomHistoryVisibleToMembersFromInvitedPointByYouForDm: String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members_from_invited_point_by_you_for_dm") + } + /// %@ made future messages visible to everyone, from when they get invited. + public static func noticeRoomHistoryVisibleToMembersFromInvitedPointForDm(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members_from_invited_point_for_dm", p1) + } + /// %@ made future room history visible to all room members, from the point they joined. + public static func noticeRoomHistoryVisibleToMembersFromJoinedPoint(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members_from_joined_point", p1) + } + /// You made future room history visible to all room members, from the point they joined. + public static var noticeRoomHistoryVisibleToMembersFromJoinedPointByYou: String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members_from_joined_point_by_you") + } + /// You made future messages visible to everyone, from when they joined. + public static var noticeRoomHistoryVisibleToMembersFromJoinedPointByYouForDm: String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members_from_joined_point_by_you_for_dm") + } + /// %@ made future messages visible to everyone, from when they joined. + public static func noticeRoomHistoryVisibleToMembersFromJoinedPointForDm(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_history_visible_to_members_from_joined_point_for_dm", p1) + } + /// %@ invited %@ + public static func noticeRoomInvite(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_invite", p1, p2) + } + /// You invited %@ + public static func noticeRoomInviteByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_invite_by_you", p1) + } + /// %@ invited you + public static func noticeRoomInviteYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_invite_you", p1) + } + /// %@ joined + public static func noticeRoomJoin(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_join", p1) + } + /// You joined + public static var noticeRoomJoinByYou: String { + return VectorL10n.tr("Vector", "notice_room_join_by_you") + } + /// The join rule is: %@ + public static func noticeRoomJoinRule(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_join_rule", p1) + } + /// %@ made the room invite only. + public static func noticeRoomJoinRuleInvite(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_join_rule_invite", p1) + } + /// You made the room invite only. + public static var noticeRoomJoinRuleInviteByYou: String { + return VectorL10n.tr("Vector", "notice_room_join_rule_invite_by_you") + } + /// You made this invite only. + public static var noticeRoomJoinRuleInviteByYouForDm: String { + return VectorL10n.tr("Vector", "notice_room_join_rule_invite_by_you_for_dm") + } + /// %@ made this invite only. + public static func noticeRoomJoinRuleInviteForDm(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_join_rule_invite_for_dm", p1) + } + /// %@ made the room public. + public static func noticeRoomJoinRulePublic(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_join_rule_public", p1) + } + /// You made the room public. + public static var noticeRoomJoinRulePublicByYou: String { + return VectorL10n.tr("Vector", "notice_room_join_rule_public_by_you") + } + /// You made this public. + public static var noticeRoomJoinRulePublicByYouForDm: String { + return VectorL10n.tr("Vector", "notice_room_join_rule_public_by_you_for_dm") + } + /// %@ made this public. + public static func noticeRoomJoinRulePublicForDm(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_join_rule_public_for_dm", p1) + } + /// %@ removed %@ + public static func noticeRoomKick(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_kick", p1, p2) + } + /// You removed %@ + public static func noticeRoomKickByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_kick_by_you", p1) + } + /// %@ left + public static func noticeRoomLeave(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_leave", p1) + } + /// You left + public static var noticeRoomLeaveByYou: String { + return VectorL10n.tr("Vector", "notice_room_leave_by_you") + } + /// %@ changed the room name to %@. + public static func noticeRoomNameChanged(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_name_changed", p1, p2) + } + /// You changed the room name to %@. + public static func noticeRoomNameChangedByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_name_changed_by_you", p1) + } + /// You changed the name to %@. + public static func noticeRoomNameChangedByYouForDm(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_name_changed_by_you_for_dm", p1) + } + /// %@ changed the name to %@. + public static func noticeRoomNameChangedForDm(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_name_changed_for_dm", p1, p2) + } + /// %@ removed the room name + public static func noticeRoomNameRemoved(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_name_removed", p1) + } + /// You removed the room name + public static var noticeRoomNameRemovedByYou: String { + return VectorL10n.tr("Vector", "notice_room_name_removed_by_you") + } + /// You removed the name + public static var noticeRoomNameRemovedByYouForDm: String { + return VectorL10n.tr("Vector", "notice_room_name_removed_by_you_for_dm") + } + /// %@ removed the name + public static func noticeRoomNameRemovedForDm(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_name_removed_for_dm", p1) + } + /// The minimum power levels that a user must have before acting are: + public static var noticeRoomPowerLevelActingRequirement: String { + return VectorL10n.tr("Vector", "notice_room_power_level_acting_requirement") + } + /// The minimum power levels related to events are: + public static var noticeRoomPowerLevelEventRequirement: String { + return VectorL10n.tr("Vector", "notice_room_power_level_event_requirement") + } + /// The power level of room members are: + public static var noticeRoomPowerLevelIntro: String { + return VectorL10n.tr("Vector", "notice_room_power_level_intro") + } + /// The power level of members are: + public static var noticeRoomPowerLevelIntroForDm: String { + return VectorL10n.tr("Vector", "notice_room_power_level_intro_for_dm") + } + /// . Reason: %@ + public static func noticeRoomReason(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_reason", p1) + } + /// %@ rejected the invitation + public static func noticeRoomReject(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_reject", p1) + } + /// You rejected the invitation + public static var noticeRoomRejectByYou: String { + return VectorL10n.tr("Vector", "notice_room_reject_by_you") + } + /// The groups associated with this room are: %@ + public static func noticeRoomRelatedGroups(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_related_groups", p1) + } + /// %@ sent an invitation to %@ to join the room + public static func noticeRoomThirdPartyInvite(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_third_party_invite", p1, p2) + } + /// You sent an invitation to %@ to join the room + public static func noticeRoomThirdPartyInviteByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_third_party_invite_by_you", p1) + } + /// You invited %@ + public static func noticeRoomThirdPartyInviteByYouForDm(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_third_party_invite_by_you_for_dm", p1) + } + /// %@ invited %@ + public static func noticeRoomThirdPartyInviteForDm(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_third_party_invite_for_dm", p1, p2) + } + /// %@ accepted the invitation for %@ + public static func noticeRoomThirdPartyRegisteredInvite(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_third_party_registered_invite", p1, p2) + } + /// You accepted the invitation for %@ + public static func noticeRoomThirdPartyRegisteredInviteByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_third_party_registered_invite_by_you", p1) + } + /// %@ revoked the invitation for %@ to join the room + public static func noticeRoomThirdPartyRevokedInvite(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_third_party_revoked_invite", p1, p2) + } + /// You revoked the invitation for %@ to join the room + public static func noticeRoomThirdPartyRevokedInviteByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_third_party_revoked_invite_by_you", p1) + } + /// You revoked %@'s invitation + public static func noticeRoomThirdPartyRevokedInviteByYouForDm(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_third_party_revoked_invite_by_you_for_dm", p1) + } + /// %@ revoked %@'s invitation + public static func noticeRoomThirdPartyRevokedInviteForDm(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_third_party_revoked_invite_for_dm", p1, p2) + } + /// %@ removed the topic + public static func noticeRoomTopicRemoved(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_topic_removed", p1) + } + /// You removed the topic + public static var noticeRoomTopicRemovedByYou: String { + return VectorL10n.tr("Vector", "notice_room_topic_removed_by_you") + } + /// %@ unbanned %@ + public static func noticeRoomUnban(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_unban", p1, p2) + } + /// You unbanned %@ + public static func noticeRoomUnbanByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_unban_by_you", p1) + } + /// %@ withdrew %@'s invitation + public static func noticeRoomWithdraw(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_room_withdraw", p1, p2) + } + /// You withdrew %@'s invitation + public static func noticeRoomWithdrawByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_room_withdraw_by_you", p1) + } + /// sticker + public static var noticeSticker: String { + return VectorL10n.tr("Vector", "notice_sticker") + } + /// %@ changed the topic to "%@". + public static func noticeTopicChanged(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "notice_topic_changed", p1, p2) + } + /// You changed the topic to "%@". + public static func noticeTopicChangedByYou(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_topic_changed_by_you", p1) + } + /// Unsupported attachment: %@ + public static func noticeUnsupportedAttachment(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notice_unsupported_attachment", p1) + } + /// video attachment + public static var noticeVideoAttachment: String { + return VectorL10n.tr("Vector", "notice_video_attachment") + } + /// Always notify + public static var notificationSettingsAlwaysNotify: String { + return VectorL10n.tr("Vector", "notification_settings_always_notify") + } + /// By default... + public static var notificationSettingsByDefault: String { + return VectorL10n.tr("Vector", "notification_settings_by_default") + } + /// Notify me with sound about messages that contain my display name + public static var notificationSettingsContainMyDisplayName: String { + return VectorL10n.tr("Vector", "notification_settings_contain_my_display_name") + } + /// Notify me with sound about messages that contain my user name + public static var notificationSettingsContainMyUserName: String { + return VectorL10n.tr("Vector", "notification_settings_contain_my_user_name") + } + /// Custom sound + public static var notificationSettingsCustomSound: String { + return VectorL10n.tr("Vector", "notification_settings_custom_sound") + } + /// Disable all notifications + public static var notificationSettingsDisableAll: String { + return VectorL10n.tr("Vector", "notification_settings_disable_all") + } + /// Enable notifications + public static var notificationSettingsEnableNotifications: String { + return VectorL10n.tr("Vector", "notification_settings_enable_notifications") + } + /// All notifications are currently disabled for all devices. + public static var notificationSettingsEnableNotificationsWarning: String { + return VectorL10n.tr("Vector", "notification_settings_enable_notifications_warning") + } + /// Notification settings are saved to your user account and are shared between all clients which support them (including desktop notifications).\n\nRules are applied in order; the first rule which matches defines the outcome for the message.\nSo: Per-word notifications are more important than per-room notifications which are more important than per-sender notifications.\nFor multiple rules of the same kind, the first one in the list that matches takes priority. + public static var notificationSettingsGlobalInfo: String { + return VectorL10n.tr("Vector", "notification_settings_global_info") + } + /// Highlight + public static var notificationSettingsHighlight: String { + return VectorL10n.tr("Vector", "notification_settings_highlight") + } + /// Notify me when I am invited to a new room + public static var notificationSettingsInviteToANewRoom: String { + return VectorL10n.tr("Vector", "notification_settings_invite_to_a_new_room") + } + /// Notify me with sound about messages sent just to me + public static var notificationSettingsJustSentToMe: String { + return VectorL10n.tr("Vector", "notification_settings_just_sent_to_me") + } + /// Never notify + public static var notificationSettingsNeverNotify: String { + return VectorL10n.tr("Vector", "notification_settings_never_notify") + } + /// Notify for all other messages/rooms + public static var notificationSettingsNotifyAllOther: String { + return VectorL10n.tr("Vector", "notification_settings_notify_all_other") + } + /// Other Alerts + public static var notificationSettingsOtherAlerts: String { + return VectorL10n.tr("Vector", "notification_settings_other_alerts") + } + /// Notify me when people join or leave rooms + public static var notificationSettingsPeopleJoinLeaveRooms: String { + return VectorL10n.tr("Vector", "notification_settings_people_join_leave_rooms") + } + /// Per-room notifications + public static var notificationSettingsPerRoomNotifications: String { + return VectorL10n.tr("Vector", "notification_settings_per_room_notifications") + } + /// Per-sender notifications + public static var notificationSettingsPerSenderNotifications: String { + return VectorL10n.tr("Vector", "notification_settings_per_sender_notifications") + } + /// Words match case insensitively, and may include a * wildcard. So:\nfoo matches the string foo surrounded by word delimiters (e.g. punctuation and whitespace or start/end of line).\nfoo* matches any such word that begins foo.\n*foo* matches any such word which includes the 3 letters foo. + public static var notificationSettingsPerWordInfo: String { + return VectorL10n.tr("Vector", "notification_settings_per_word_info") + } + /// Per-word notifications + public static var notificationSettingsPerWordNotifications: String { + return VectorL10n.tr("Vector", "notification_settings_per_word_notifications") + } + /// Notify me when I receive a call + public static var notificationSettingsReceiveACall: String { + return VectorL10n.tr("Vector", "notification_settings_receive_a_call") + } + /// Room: '%@' + public static func notificationSettingsRoomRuleTitle(_ p1: String) -> String { + return VectorL10n.tr("Vector", "notification_settings_room_rule_title", p1) + } + /// Select a room + public static var notificationSettingsSelectRoom: String { + return VectorL10n.tr("Vector", "notification_settings_select_room") + } + /// @user:domain.com + public static var notificationSettingsSenderHint: String { + return VectorL10n.tr("Vector", "notification_settings_sender_hint") + } + /// Suppress notifications from bots + public static var notificationSettingsSuppressFromBots: String { + return VectorL10n.tr("Vector", "notification_settings_suppress_from_bots") + } + /// word to match + public static var notificationSettingsWordToMatch: String { + return VectorL10n.tr("Vector", "notification_settings_word_to_match") + } + /// %@ user + public static func numMembersOne(_ p1: String) -> String { + return VectorL10n.tr("Vector", "num_members_one", p1) + } + /// %@ users + public static func numMembersOther(_ p1: String) -> String { + return VectorL10n.tr("Vector", "num_members_other", p1) + } /// Off public static var off: String { return VectorL10n.tr("Vector", "off") } + /// offline + public static var offline: String { + return VectorL10n.tr("Vector", "offline") + } /// OK public static var ok: String { return VectorL10n.tr("Vector", "ok") @@ -2723,10 +4011,22 @@ public class VectorL10n: NSObject { public static func pollTimelineVotesCount(_ p1: Int) -> String { return VectorL10n.tr("Vector", "poll_timeline_votes_count", p1) } + /// Power Level + public static var powerLevel: String { + return VectorL10n.tr("Vector", "power_level") + } /// Preview public static var preview: String { return VectorL10n.tr("Vector", "preview") } + /// Private + public static var `private`: String { + return VectorL10n.tr("Vector", "private") + } + /// Public + public static var `public`: String { + return VectorL10n.tr("Vector", "public") + } /// Public Rooms (at %@): public static func publicRoomSectionTitle(_ p1: String) -> String { return VectorL10n.tr("Vector", "public_room_section_title", p1) @@ -2748,6 +4048,18 @@ public class VectorL10n: NSObject { return VectorL10n.tr("Vector", "receipt_status_read") } /// Remove + public static var redact: String { + return VectorL10n.tr("Vector", "redact") + } + /// Registration Failed + public static var registerErrorTitle: String { + return VectorL10n.tr("Vector", "register_error_title") + } + /// Reject Call + public static var rejectCall: String { + return VectorL10n.tr("Vector", "reject_call") + } + /// Remove public static var remove: String { return VectorL10n.tr("Vector", "remove") } @@ -2763,6 +4075,22 @@ public class VectorL10n: NSObject { public static var rerequestKeysAlertTitle: String { return VectorL10n.tr("Vector", "rerequest_keys_alert_title") } + /// Resend + public static var resend: String { + return VectorL10n.tr("Vector", "resend") + } + /// Resend the message + public static var resendMessage: String { + return VectorL10n.tr("Vector", "resend_message") + } + /// Reset to default + public static var resetToDefault: String { + return VectorL10n.tr("Vector", "reset_to_default") + } + /// Resume + public static var resumeCall: String { + return VectorL10n.tr("Vector", "resume_call") + } /// Retry public static var retry: String { return VectorL10n.tr("Vector", "retry") @@ -2839,6 +4167,18 @@ public class VectorL10n: NSObject { public static var roomCreationAccount: String { return VectorL10n.tr("Vector", "room_creation_account") } + /// (e.g. #foo:example.org) + public static var roomCreationAliasPlaceholder: String { + return VectorL10n.tr("Vector", "room_creation_alias_placeholder") + } + /// (e.g. #foo%@) + public static func roomCreationAliasPlaceholderWithHomeserver(_ p1: String) -> String { + return VectorL10n.tr("Vector", "room_creation_alias_placeholder_with_homeserver", p1) + } + /// Room alias: + public static var roomCreationAliasTitle: String { + return VectorL10n.tr("Vector", "room_creation_alias_title") + } /// Appearance public static var roomCreationAppearance: String { return VectorL10n.tr("Vector", "room_creation_appearance") @@ -2883,6 +4223,22 @@ public class VectorL10n: NSObject { public static var roomCreationMakePublicPromptTitle: String { return VectorL10n.tr("Vector", "room_creation_make_public_prompt_title") } + /// (e.g. lunchGroup) + public static var roomCreationNamePlaceholder: String { + return VectorL10n.tr("Vector", "room_creation_name_placeholder") + } + /// Room name: + public static var roomCreationNameTitle: String { + return VectorL10n.tr("Vector", "room_creation_name_title") + } + /// (e.g. @bob:homeserver1; @john:homeserver2...) + public static var roomCreationParticipantsPlaceholder: String { + return VectorL10n.tr("Vector", "room_creation_participants_placeholder") + } + /// Participants: + public static var roomCreationParticipantsTitle: String { + return VectorL10n.tr("Vector", "room_creation_participants_title") + } /// Privacy public static var roomCreationPrivacy: String { return VectorL10n.tr("Vector", "room_creation_privacy") @@ -3215,6 +4571,22 @@ public class VectorL10n: NSObject { public static var roomDirectoryNoPublicRoom: String { return VectorL10n.tr("Vector", "room_directory_no_public_room") } + /// %@ (Left) + public static func roomDisplaynameAllOtherMembersLeft(_ p1: String) -> String { + return VectorL10n.tr("Vector", "room_displayname_all_other_members_left", p1) + } + /// Empty room + public static var roomDisplaynameEmptyRoom: String { + return VectorL10n.tr("Vector", "room_displayname_empty_room") + } + /// %@ and %@ others + public static func roomDisplaynameMoreThanTwoMembers(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "room_displayname_more_than_two_members", p1, p2) + } + /// %@ and %@ + public static func roomDisplaynameTwoMembers(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "room_displayname_two_members", p1, p2) + } /// You do not have permission to post to this room public static var roomDoNotHavePermissionToPost: String { return VectorL10n.tr("Vector", "room_do_not_have_permission_to_post") @@ -3223,6 +4595,34 @@ public class VectorL10n: NSObject { public static func roomDoesNotExist(_ p1: String) -> String { return VectorL10n.tr("Vector", "room_does_not_exist", p1) } + /// Failed to load timeline + public static var roomErrorCannotLoadTimeline: String { + return VectorL10n.tr("Vector", "room_error_cannot_load_timeline") + } + /// It is not currently possible to join an empty room. + public static var roomErrorJoinFailedEmptyRoom: String { + return VectorL10n.tr("Vector", "room_error_join_failed_empty_room") + } + /// Failed to join room + public static var roomErrorJoinFailedTitle: String { + return VectorL10n.tr("Vector", "room_error_join_failed_title") + } + /// You are not authorized to edit this room name + public static var roomErrorNameEditionNotAuthorized: String { + return VectorL10n.tr("Vector", "room_error_name_edition_not_authorized") + } + /// The application was trying to load a specific point in this room's timeline but was unable to find it + public static var roomErrorTimelineEventNotFound: String { + return VectorL10n.tr("Vector", "room_error_timeline_event_not_found") + } + /// Failed to load timeline position + public static var roomErrorTimelineEventNotFoundTitle: String { + return VectorL10n.tr("Vector", "room_error_timeline_event_not_found_title") + } + /// You are not authorized to edit this room topic + public static var roomErrorTopicEditionNotAuthorized: String { + return VectorL10n.tr("Vector", "room_error_topic_edition_not_authorized") + } /// Reason for banning this user public static var roomEventActionBanPromptReason: String { return VectorL10n.tr("Vector", "room_event_action_ban_prompt_reason") @@ -3351,6 +4751,110 @@ public class VectorL10n: NSObject { public static var roomEventCopyLinkInfo: String { return VectorL10n.tr("Vector", "room_event_copy_link_info") } + /// Blacklist + public static var roomEventEncryptionInfoBlock: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_block") + } + /// \nSender session information\n + public static var roomEventEncryptionInfoDevice: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_device") + } + /// Blacklisted + public static var roomEventEncryptionInfoDeviceBlocked: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_device_blocked") + } + /// Ed25519 fingerprint\n + public static var roomEventEncryptionInfoDeviceFingerprint: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_device_fingerprint") + } + /// ID\n + public static var roomEventEncryptionInfoDeviceId: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_device_id") + } + /// Public Name\n + public static var roomEventEncryptionInfoDeviceName: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_device_name") + } + /// NOT verified + public static var roomEventEncryptionInfoDeviceNotVerified: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_device_not_verified") + } + /// unknown session\n + public static var roomEventEncryptionInfoDeviceUnknown: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_device_unknown") + } + /// Verification\n + public static var roomEventEncryptionInfoDeviceVerification: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_device_verification") + } + /// Verified + public static var roomEventEncryptionInfoDeviceVerified: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_device_verified") + } + /// Event information\n + public static var roomEventEncryptionInfoEvent: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_event") + } + /// Algorithm\n + public static var roomEventEncryptionInfoEventAlgorithm: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_event_algorithm") + } + /// Decryption error\n + public static var roomEventEncryptionInfoEventDecryptionError: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_event_decryption_error") + } + /// Claimed Ed25519 fingerprint key\n + public static var roomEventEncryptionInfoEventFingerprintKey: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_event_fingerprint_key") + } + /// Curve25519 identity key\n + public static var roomEventEncryptionInfoEventIdentityKey: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_event_identity_key") + } + /// none + public static var roomEventEncryptionInfoEventNone: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_event_none") + } + /// Session ID\n + public static var roomEventEncryptionInfoEventSessionId: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_event_session_id") + } + /// unencrypted + public static var roomEventEncryptionInfoEventUnencrypted: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_event_unencrypted") + } + /// User ID\n + public static var roomEventEncryptionInfoEventUserId: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_event_user_id") + } + /// End-to-end encryption information\n\n + public static var roomEventEncryptionInfoTitle: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_title") + } + /// Unblacklist + public static var roomEventEncryptionInfoUnblock: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_unblock") + } + /// Unverify + public static var roomEventEncryptionInfoUnverify: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_unverify") + } + /// Verify... + public static var roomEventEncryptionInfoVerify: String { + return VectorL10n.tr("Vector", "room_event_encryption_info_verify") + } + /// To verify that this session can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this session matches the key below:\n\n Session name: %@\n Session ID: %@\n Session key: %@\n\nIf it matches, press the verify button below. If it doesnt, then someone else is intercepting this session and you probably want to press the blacklist button instead.\n\nIn future this verification process will be more sophisticated. + public static func roomEventEncryptionVerifyMessage(_ p1: String, _ p2: String, _ p3: String) -> String { + return VectorL10n.tr("Vector", "room_event_encryption_verify_message", p1, p2, p3) + } + /// Verify + public static var roomEventEncryptionVerifyOk: String { + return VectorL10n.tr("Vector", "room_event_encryption_verify_ok") + } + /// Verify session\n\n + public static var roomEventEncryptionVerifyTitle: String { + return VectorL10n.tr("Vector", "room_event_encryption_verify_title") + } /// Failed to send public static var roomEventFailedToSend: String { return VectorL10n.tr("Vector", "room_event_failed_to_send") @@ -3415,10 +4919,22 @@ public class VectorL10n: NSObject { public static var roomJumpToFirstUnread: String { return VectorL10n.tr("Vector", "room_jump_to_first_unread") } + /// You left the room + public static var roomLeft: String { + return VectorL10n.tr("Vector", "room_left") + } + /// You left + public static var roomLeftForDm: String { + return VectorL10n.tr("Vector", "room_left_for_dm") + } /// %@, %@ & others are typing… public static func roomManyUsersAreTyping(_ p1: String, _ p2: String) -> String { return VectorL10n.tr("Vector", "room_many_users_are_typing", p1, p2) } + /// Are you sure you want to hide all messages from this user? + public static var roomMemberIgnorePrompt: String { + return VectorL10n.tr("Vector", "room_member_ignore_prompt") + } /// Admin in %@ public static func roomMemberPowerLevelAdminIn(_ p1: String) -> String { return VectorL10n.tr("Vector", "room_member_power_level_admin_in", p1) @@ -3431,6 +4947,10 @@ public class VectorL10n: NSObject { public static func roomMemberPowerLevelModeratorIn(_ p1: String) -> String { return VectorL10n.tr("Vector", "room_member_power_level_moderator_in", p1) } + /// You will not be able to undo this change as you are promoting the user to have the same power level as yourself.\nAre you sure? + public static var roomMemberPowerLevelPrompt: String { + return VectorL10n.tr("Vector", "room_member_power_level_prompt") + } /// Admin public static var roomMemberPowerLevelShortAdmin: String { return VectorL10n.tr("Vector", "room_member_power_level_short_admin") @@ -3487,6 +5007,14 @@ public class VectorL10n: NSObject { public static func roomNewMessagesNotification(_ p1: Int) -> String { return VectorL10n.tr("Vector", "room_new_messages_notification", p1) } + /// Conference calls are not supported in encrypted rooms + public static var roomNoConferenceCallInEncryptedRooms: String { + return VectorL10n.tr("Vector", "room_no_conference_call_in_encrypted_rooms") + } + /// You need permission to invite to start a conference in this room + public static var roomNoPowerToCreateConferenceCall: String { + return VectorL10n.tr("Vector", "room_no_power_to_create_conference_call") + } /// You need to be an admin or a moderator to start a call. public static var roomNoPrivilegesToCreateGroupCall: String { return VectorL10n.tr("Vector", "room_no_privileges_to_create_group_call") @@ -3691,6 +5219,10 @@ public class VectorL10n: NSObject { public static var roomParticipantsInvitedSection: String { return VectorL10n.tr("Vector", "room_participants_invited_section") } + /// Leaving + public static var roomParticipantsLeaveProcessing: String { + return VectorL10n.tr("Vector", "room_participants_leave_processing") + } /// Are you sure you want to leave the room? public static var roomParticipantsLeavePromptMsg: String { return VectorL10n.tr("Vector", "room_participants_leave_prompt_msg") @@ -3707,6 +5239,10 @@ public class VectorL10n: NSObject { public static var roomParticipantsLeavePromptTitleForDm: String { return VectorL10n.tr("Vector", "room_participants_leave_prompt_title_for_dm") } + /// Left room + public static var roomParticipantsLeaveSuccess: String { + return VectorL10n.tr("Vector", "room_participants_leave_success") + } /// %d participants public static func roomParticipantsMultiParticipants(_ p1: Int) -> String { return VectorL10n.tr("Vector", "room_participants_multi_participants", p1) @@ -3775,6 +5311,10 @@ public class VectorL10n: NSObject { public static var roomPlaceVoiceCall: String { return VectorL10n.tr("Vector", "room_place_voice_call") } + /// Please select a room + public static var roomPleaseSelect: String { + return VectorL10n.tr("Vector", "room_please_select") + } /// This room is a continuation of another conversation. public static var roomPredecessorInformation: String { return VectorL10n.tr("Vector", "room_predecessor_information") @@ -4043,6 +5583,10 @@ public class VectorL10n: NSObject { public static var searchNoResult: String { return VectorL10n.tr("Vector", "search_no_result") } + /// No Results + public static var searchNoResults: String { + return VectorL10n.tr("Vector", "search_no_results") + } /// People public static var searchPeople: String { return VectorL10n.tr("Vector", "search_people") @@ -4055,6 +5599,10 @@ public class VectorL10n: NSObject { public static var searchRooms: String { return VectorL10n.tr("Vector", "search_rooms") } + /// Search in progress... + public static var searchSearching: String { + return VectorL10n.tr("Vector", "search_searching") + } /// Create a new room public static var searchableDirectoryCreateNewRoom: String { return VectorL10n.tr("Vector", "searchable_directory_create_new_room") @@ -4423,6 +5971,18 @@ public class VectorL10n: NSObject { public static var securitySettingsUserPasswordDescription: String { return VectorL10n.tr("Vector", "security_settings_user_password_description") } + /// Select an account + public static var selectAccount: String { + return VectorL10n.tr("Vector", "select_account") + } + /// Select All + public static var selectAll: String { + return VectorL10n.tr("Vector", "select_all") + } + /// Send + public static var send: String { + return VectorL10n.tr("Vector", "send") + } /// Send to %@ public static func sendTo(_ p1: String) -> String { return VectorL10n.tr("Vector", "send_to", p1) @@ -4483,6 +6043,26 @@ public class VectorL10n: NSObject { public static var serviceTermsModalTitleMessage: String { return VectorL10n.tr("Vector", "service_terms_modal_title_message") } + /// Set Admin + public static var setAdmin: String { + return VectorL10n.tr("Vector", "set_admin") + } + /// Reset Power Level + public static var setDefaultPowerLevel: String { + return VectorL10n.tr("Vector", "set_default_power_level") + } + /// Set Moderator + public static var setModerator: String { + return VectorL10n.tr("Vector", "set_moderator") + } + /// Set Power Level + public static var setPowerLevel: String { + return VectorL10n.tr("Vector", "set_power_level") + } + /// Settings + public static var settings: String { + return VectorL10n.tr("Vector", "settings") + } /// ABOUT public static var settingsAbout: String { return VectorL10n.tr("Vector", "settings_about") @@ -4551,6 +6131,10 @@ public class VectorL10n: NSObject { public static func settingsConfigHomeServer(_ p1: String) -> String { return VectorL10n.tr("Vector", "settings_config_home_server", p1) } + /// Identity server: %@ + public static func settingsConfigIdentityServer(_ p1: String) -> String { + return VectorL10n.tr("Vector", "settings_config_identity_server", p1) + } /// No build info public static var settingsConfigNoBuildInfo: String { return VectorL10n.tr("Vector", "settings_config_no_build_info") @@ -4723,10 +6307,18 @@ public class VectorL10n: NSObject { public static var settingsEnableCallkit: String { return VectorL10n.tr("Vector", "settings_enable_callkit") } + /// Enable In-App notifications + public static var settingsEnableInappNotifications: String { + return VectorL10n.tr("Vector", "settings_enable_inapp_notifications") + } /// Notifications on this device public static var settingsEnablePushNotif: String { return VectorL10n.tr("Vector", "settings_enable_push_notif") } + /// Enable push notifications + public static var settingsEnablePushNotifications: String { + return VectorL10n.tr("Vector", "settings_enable_push_notifications") + } /// Rage shake to report bug public static var settingsEnableRageshake: String { return VectorL10n.tr("Vector", "settings_enable_rageshake") @@ -4743,6 +6335,10 @@ public class VectorL10n: NSObject { public static var settingsEncryptedGroupMessages: String { return VectorL10n.tr("Vector", "settings_encrypted_group_messages") } + /// Enter validation token for %@: + public static func settingsEnterValidationTokenFor(_ p1: String) -> String { + return VectorL10n.tr("Vector", "settings_enter_validation_token_for", p1) + } /// Fail to update Matrix account password public static var settingsFailToUpdatePassword: String { return VectorL10n.tr("Vector", "settings_fail_to_update_password") @@ -4923,6 +6519,10 @@ public class VectorL10n: NSObject { public static var settingsLabsMessageReaction: String { return VectorL10n.tr("Vector", "settings_labs_message_reaction") } + /// Show latest avatar and name for users in message history + public static var settingsLabsUseOnlyLatestUserAvatarAndName: String { + return VectorL10n.tr("Vector", "settings_labs_use_only_latest_user_avatar_and_name") + } /// LINKS public static var settingsLinks: String { return VectorL10n.tr("Vector", "settings_links") @@ -5115,6 +6715,14 @@ public class VectorL10n: NSObject { public static var settingsTitle: String { return VectorL10n.tr("Vector", "settings_title") } + /// Configuration + public static var settingsTitleConfig: String { + return VectorL10n.tr("Vector", "settings_title_config") + } + /// Notifications + public static var settingsTitleNotifications: String { + return VectorL10n.tr("Vector", "settings_title_notifications") + } /// Language public static var settingsUiLanguage: String { return VectorL10n.tr("Vector", "settings_ui_language") @@ -5171,6 +6779,10 @@ public class VectorL10n: NSObject { public static var settingsYourKeywords: String { return VectorL10n.tr("Vector", "settings_your_keywords") } + /// Share + public static var share: String { + return VectorL10n.tr("Vector", "share") + } /// Login in the main app to share content public static var shareExtensionAuthPrompt: String { return VectorL10n.tr("Vector", "share_extension_auth_prompt") @@ -5191,6 +6803,10 @@ public class VectorL10n: NSObject { public static var shareExtensionSendNow: String { return VectorL10n.tr("Vector", "share_extension_send_now") } + /// Show Details + public static var showDetails: String { + return VectorL10n.tr("Vector", "show_details") + } /// Feedback public static var sideMenuActionFeedback: String { return VectorL10n.tr("Vector", "side_menu_action_feedback") @@ -5263,6 +6879,10 @@ public class VectorL10n: NSObject { public static var signOutNonExistingKeyBackupSignOutConfirmationAlertTitle: String { return VectorL10n.tr("Vector", "sign_out_non_existing_key_backup_sign_out_confirmation_alert_title") } + /// Sign up + public static var signUp: String { + return VectorL10n.tr("Vector", "sign_up") + } /// Skip public static var skip: String { return VectorL10n.tr("Vector", "skip") @@ -5403,10 +7023,66 @@ public class VectorL10n: NSObject { public static var spacesSuggestedRoom: String { return VectorL10n.tr("Vector", "spaces_suggested_room") } + /// If the server administrator has said that this is expected, ensure that the fingerprint below matches the fingerprint provided by them. + public static var sslCertNewAccountExpl: String { + return VectorL10n.tr("Vector", "ssl_cert_new_account_expl") + } + /// This could mean that someone is maliciously intercepting your traffic, or that your phone does not trust the certificate provided by the remote server. + public static var sslCertNotTrust: String { + return VectorL10n.tr("Vector", "ssl_cert_not_trust") + } + /// Could not verify identity of remote server. + public static var sslCouldNotVerify: String { + return VectorL10n.tr("Vector", "ssl_could_not_verify") + } + /// The certificate has changed from a previously trusted one to one that is not trusted. The server may have renewed its certificate. Contact the server administrator for the expected fingerprint. + public static var sslExpectedExistingExpl: String { + return VectorL10n.tr("Vector", "ssl_expected_existing_expl") + } + /// Fingerprint (%@): + public static func sslFingerprintHash(_ p1: String) -> String { + return VectorL10n.tr("Vector", "ssl_fingerprint_hash", p1) + } + /// Homeserver URL: %@ + public static func sslHomeserverUrl(_ p1: String) -> String { + return VectorL10n.tr("Vector", "ssl_homeserver_url", p1) + } + /// Logout + public static var sslLogoutAccount: String { + return VectorL10n.tr("Vector", "ssl_logout_account") + } + /// ONLY accept the certificate if the server administrator has published a fingerprint that matches the one above. + public static var sslOnlyAccept: String { + return VectorL10n.tr("Vector", "ssl_only_accept") + } + /// Ignore + public static var sslRemainOffline: String { + return VectorL10n.tr("Vector", "ssl_remain_offline") + } + /// Trust + public static var sslTrust: String { + return VectorL10n.tr("Vector", "ssl_trust") + } + /// The certificate has changed from one that was trusted by your phone. This is HIGHLY UNUSUAL. It is recommended that you DO NOT ACCEPT this new certificate. + public static var sslUnexpectedExistingExpl: String { + return VectorL10n.tr("Vector", "ssl_unexpected_existing_expl") + } /// Start public static var start: String { return VectorL10n.tr("Vector", "start") } + /// Start Chat + public static var startChat: String { + return VectorL10n.tr("Vector", "start_chat") + } + /// Start Video Call + public static var startVideoCall: String { + return VectorL10n.tr("Vector", "start_video_call") + } + /// Start Voice Call + public static var startVoiceCall: String { + return VectorL10n.tr("Vector", "start_voice_call") + } /// Element is a new type of messenger and collaboration app that:\n\n1. Puts you in control to preserve your privacy\n2. Lets you communicate with anyone in the Matrix network, and even beyond by integrating with apps such as Slack\n3. Protects you from advertising, datamining, backdoors and walled gardens\n4. Secures you through end-to-end encryption, with cross-signing to verify others\n\nElement is completely different from other messaging and collaboration apps because it is decentralised and open source.\n\nElement lets you self-host - or choose a host - so that you have privacy, ownership and control of your data and conversations. It gives you access to an open network; so you’re not just stuck speaking to other Element users only. And it is very secure.\n\nElement is able to do all this because it operates on Matrix - the standard for open, decentralised communication. \n\nElement puts you in control by letting you choose who hosts your conversations. From the Element app, you can choose to host in different ways:\n\n1. Get a free account on the matrix.org public server\n2. Self-host your account by running a server on your own hardware\n3. Sign up for an account on a custom server by simply subscribing to the Element Matrix Services hosting platform\n\nWhy choose Element?\n\nOWN YOUR DATA: You decide where to keep your data and messages. You own it and control it, not some MEGACORP that mines your data or gives access to third parties.\n\nOPEN MESSAGING AND COLLABORATION: You can chat with anyone else in the Matrix network, whether they’re using Element or another Matrix app, and even if they are using a different messaging system of the likes of Slack, IRC or XMPP.\n\nSUPER-SECURE: Real end-to-end encryption (only those in the conversation can decrypt messages), and cross-signing to verify the devices of conversation participants.\n\nCOMPLETE COMMUNICATION: Messaging, voice and video calls, file sharing, screen sharing and a whole bunch of integrations, bots and widgets. Build rooms, communities, stay in touch and get things done.\n\nEVERYWHERE YOU ARE: Stay in touch wherever you are with fully synchronised message history across all your devices and on the web at https://element.io/app. public static var storeFullDescription: String { return VectorL10n.tr("Vector", "store_full_description") @@ -5419,6 +7095,14 @@ public class VectorL10n: NSObject { public static var storeShortDescription: String { return VectorL10n.tr("Vector", "store_short_description") } + /// Submit + public static var submit: String { + return VectorL10n.tr("Vector", "submit") + } + /// Submit code + public static var submitCode: String { + return VectorL10n.tr("Vector", "submit_code") + } /// Switch public static var `switch`: String { return VectorL10n.tr("Vector", "switch") @@ -5483,6 +7167,14 @@ public class VectorL10n: NSObject { public static var today: String { return VectorL10n.tr("Vector", "today") } + /// Un-ban + public static var unban: String { + return VectorL10n.tr("Vector", "unban") + } + /// Unignore + public static var unignore: String { + return VectorL10n.tr("Vector", "unignore") + } /// This room contains unknown sessions which have not been verified.\nThis means there is no guarantee that the sessions belong to the users they claim to.\nWe recommend you go through the verification process for each session before continuing, but you can resend the message without verifying if you prefer. public static var unknownDevicesAlert: String { return VectorL10n.tr("Vector", "unknown_devices_alert") @@ -5511,6 +7203,10 @@ public class VectorL10n: NSObject { public static var unknownDevicesVerify: String { return VectorL10n.tr("Vector", "unknown_devices_verify") } + /// Unsent + public static var unsent: String { + return VectorL10n.tr("Vector", "unsent") + } /// Change user avatar public static var userAvatarViewAccessibilityHint: String { return VectorL10n.tr("Vector", "user_avatar_view_accessibility_hint") @@ -5519,6 +7215,14 @@ public class VectorL10n: NSObject { public static var userAvatarViewAccessibilityLabel: String { return VectorL10n.tr("Vector", "user_avatar_view_accessibility_label") } + /// ex: @bob:homeserver + public static var userIdPlaceholder: String { + return VectorL10n.tr("Vector", "user_id_placeholder") + } + /// User ID: + public static var userIdTitle: String { + return VectorL10n.tr("Vector", "user_id_title") + } /// If you didn’t sign in to this session, your account may be compromised. public static var userVerificationSessionDetailsAdditionalInformationUntrustedCurrentUser: String { return VectorL10n.tr("Vector", "user_verification_session_details_additional_information_untrusted_current_user") @@ -5779,6 +7483,10 @@ public class VectorL10n: NSObject { public static var widgetStickerPickerNoStickerpacksAlertAddNow: String { return VectorL10n.tr("Vector", "widget_sticker_picker_no_stickerpacks_alert_add_now") } + /// Yes + public static var yes: String { + return VectorL10n.tr("Vector", "yes") + } /// Yesterday public static var yesterday: String { return VectorL10n.tr("Vector", "yesterday") diff --git a/Riot/Generated/UntranslatedStrings.swift b/Riot/Generated/UntranslatedStrings.swift new file mode 100644 index 000000000..efc032506 --- /dev/null +++ b/Riot/Generated/UntranslatedStrings.swift @@ -0,0 +1,31 @@ +// swiftlint:disable all +// Generated using SwiftGen, by O.Halligon — https://github.com/SwiftGen/SwiftGen + +import Foundation + +// swiftlint:disable superfluous_disable_command +// swiftlint:disable file_length + +// MARK: - Strings + +// swiftlint:disable function_parameter_count identifier_name line_length type_body_length +public extension VectorL10n { + /// Take me home + static var onboardingCongratulationsHomeButton: String { + return VectorL10n.tr("Untranslated", "onboarding_congratulations_home_button") + } + /// Your account\n%@\nhas been created. + public static func onboardingCongratulationsMessage(_ p1: String) -> String { + return VectorL10n.tr("Untranslated", "onboarding_congratulations_message", p1) + } + /// Personalise profile + static var onboardingCongratulationsPersonaliseButton: String { + return VectorL10n.tr("Untranslated", "onboarding_congratulations_personalise_button") + } + /// Congratulations! + static var onboardingCongratulationsTitle: String { + return VectorL10n.tr("Untranslated", "onboarding_congratulations_title") + } +} +// swiftlint:enable function_parameter_count identifier_name line_length type_body_length + diff --git a/Riot/Managers/BugReport/RageShakeManager.m b/Riot/Managers/BugReport/RageShakeManager.m index 5f04baa9e..d560c5753 100644 --- a/Riot/Managers/BugReport/RageShakeManager.m +++ b/Riot/Managers/BugReport/RageShakeManager.m @@ -68,7 +68,7 @@ static RageShakeManager* sharedInstance = nil; confirmationAlert = [UIAlertController alertControllerWithTitle:[VectorL10n bugReportPrompt] message:nil preferredStyle:UIAlertControllerStyleAlert]; __weak typeof(self) weakSelf = self; - [confirmationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [confirmationAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -83,7 +83,7 @@ static RageShakeManager* sharedInstance = nil; }]]; - [confirmationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [confirmationAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -132,7 +132,7 @@ static RageShakeManager* sharedInstance = nil; confirmationAlert = [UIAlertController alertControllerWithTitle:[VectorL10n rageShakePrompt] message:nil preferredStyle:UIAlertControllerStyleAlert]; __weak typeof(self) weakSelf = self; - [confirmationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [confirmationAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -167,7 +167,7 @@ static RageShakeManager* sharedInstance = nil; }]]; - [confirmationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [confirmationAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Managers/Call/CallPresenter.swift b/Riot/Managers/Call/CallPresenter.swift index 4a08f0e45..49a8ec712 100644 --- a/Riot/Managers/Call/CallPresenter.swift +++ b/Riot/Managers/Call/CallPresenter.swift @@ -167,7 +167,7 @@ class CallPresenter: NSObject { #else AppDelegate.theDelegate().showAlert(withTitle: nil, - message: MatrixKitL10n.notSupportedYet) + message: VectorL10n.notSupportedYet) #endif } diff --git a/Riot/Managers/Settings/RiotSettings.swift b/Riot/Managers/Settings/RiotSettings.swift index fdff093ce..e034f28f5 100644 --- a/Riot/Managers/Settings/RiotSettings.swift +++ b/Riot/Managers/Settings/RiotSettings.swift @@ -200,10 +200,18 @@ final class RiotSettings: NSObject { @UserDefault(key: "roomScreenEnableMessageBubbles", defaultValue: BuildSettings.isRoomScreenEnableMessageBubblesByDefault, storage: defaults) var roomScreenEnableMessageBubbles - + var roomTimelineStyleIdentifier: RoomTimelineStyleIdentifier { return self.roomScreenEnableMessageBubbles ? .bubble : .plain } + + /// A setting used to display the latest known display name and avatar in the timeline + /// for both the sender and target, rather than the profile at the time of the event. + /// + /// Note: this is set up from Room perspective, which means that if a user updates their profile after + /// leaving a Room, it will show up the latest profile used in the Room rather than the latest overall. + @UserDefault(key: "roomScreenUseOnlyLatestUserAvatarAndName", defaultValue: BuildSettings.roomScreenUseOnlyLatestUserAvatarAndName, storage: defaults) + var roomScreenUseOnlyLatestUserAvatarAndName // MARK: - Room Contextual Menu diff --git a/Riot/Managers/Theme/Themes/DarkTheme.swift b/Riot/Managers/Theme/Themes/DarkTheme.swift index 8ec84240d..ae19db7e7 100644 --- a/Riot/Managers/Theme/Themes/DarkTheme.swift +++ b/Riot/Managers/Theme/Themes/DarkTheme.swift @@ -117,13 +117,12 @@ class DarkTheme: NSObject, Theme { applyStyle(onNavigationBar: navigationBar, withModernScrollEdgesAppearance: false) } - // Note: We are not using UINavigationBarAppearance on iOS 13/14 because of UINavigationBar directly including UISearchBar on their titleView that cause crop issues with UINavigationController pop. func applyStyle(onNavigationBar navigationBar: UINavigationBar, withModernScrollEdgesAppearance modernScrollEdgesAppearance: Bool) { navigationBar.tintColor = tintColor // On iOS 15 use UINavigationBarAppearance to fix visual issues with the scrollEdgeAppearance style. - if #available(iOS 15.0, *) { + if #available(iOS 13.0, *) { let appearance = UINavigationBarAppearance() appearance.configureWithOpaqueBackground() diff --git a/Riot/Managers/Theme/Themes/DefaultTheme.swift b/Riot/Managers/Theme/Themes/DefaultTheme.swift index f8f69f7a6..a7832ba07 100644 --- a/Riot/Managers/Theme/Themes/DefaultTheme.swift +++ b/Riot/Managers/Theme/Themes/DefaultTheme.swift @@ -123,13 +123,12 @@ class DefaultTheme: NSObject, Theme { applyStyle(onNavigationBar: navigationBar, withModernScrollEdgesAppearance: false) } - // Note: We are not using UINavigationBarAppearance on iOS 13/14 because of UINavigationBar directly including UISearchBar on their titleView that cause crop issues with UINavigationController pop. func applyStyle(onNavigationBar navigationBar: UINavigationBar, withModernScrollEdgesAppearance modernScrollEdgesAppearance: Bool) { navigationBar.tintColor = tintColor // On iOS 15 use UINavigationBarAppearance to fix visual issues with the scrollEdgeAppearance style. - if #available(iOS 15.0, *) { + if #available(iOS 13.0, *) { let appearance = UINavigationBarAppearance() appearance.configureWithOpaqueBackground() diff --git a/Riot/Modules/Analytics/Analytics.swift b/Riot/Modules/Analytics/Analytics.swift index 48716f78e..c6296b28d 100644 --- a/Riot/Modules/Analytics/Analytics.swift +++ b/Riot/Modules/Analytics/Analytics.swift @@ -50,8 +50,8 @@ import AnalyticsEvents /// Whether to show the user the analytics opt in prompt. var shouldShowAnalyticsPrompt: Bool { - // Only show the prompt once, and when analytics are configured in BuildSettings. - !RiotSettings.shared.hasSeenAnalyticsPrompt && PHGPostHogConfiguration.standard != nil + // Only show the prompt once, and when analytics are enabled in BuildSettings. + !RiotSettings.shared.hasSeenAnalyticsPrompt && BuildSettings.analyticsConfiguration.isEnabled } /// Indicates whether the user previously accepted Matomo analytics and should be shown the upgrade prompt. @@ -175,7 +175,9 @@ extension Analytics { /// /// Only non-nil properties will be updated when calling this method. func updateUserProperties(ftueUseCase: UserSessionProperties.UseCase? = nil) { - let userProperties = AnalyticsEvent.UserProperties(ftueUseCaseSelection: ftueUseCase?.analyticsName, numSpaces: nil) + let userProperties = AnalyticsEvent.UserProperties(ftueUseCaseSelection: ftueUseCase?.analyticsName, + numFavouriteRooms: nil, + numSpaces: nil) client.updateUserProperties(userProperties) } @@ -184,7 +186,7 @@ extension Analytics { /// - screen: The screen that was shown. /// - milliseconds: An optional value representing how long the screen was shown for in milliseconds. func trackScreen(_ screen: AnalyticsScreen, duration milliseconds: Int?) { - let event = AnalyticsEvent.Screen(durationMs: milliseconds, screenName: screen.screenName) + let event = AnalyticsEvent.MobileScreen(durationMs: milliseconds, screenName: screen.screenName) client.screen(event) } @@ -276,13 +278,13 @@ extension Analytics: MXAnalyticsDelegate { capture(event: event) } - func trackJoinedRoom(asDM isDM: Bool, memberCount: UInt) { + func trackJoinedRoom(asDM isDM: Bool, isSpace: Bool, memberCount: UInt) { guard let roomSize = AnalyticsEvent.JoinedRoom.RoomSize(memberCount: memberCount) else { MXLog.warning("[Analytics] Attempt to capture joined room with invalid member count: \(memberCount)") return } - let event = AnalyticsEvent.JoinedRoom(isDM: isDM, roomSize: roomSize) + let event = AnalyticsEvent.JoinedRoom(isDM: isDM, isSpace: isSpace, roomSize: roomSize, trigger: nil) capture(event: event) } @@ -290,4 +292,13 @@ extension Analytics: MXAnalyticsDelegate { func trackContactsAccessGranted(_ granted: Bool) { // Do we still want to track this? } + + func trackComposerEvent(inThread: Bool, isEditing: Bool, isReply: Bool, startsThread: Bool) { + let event = AnalyticsEvent.Composer(inThread: inThread, + isEditing: isEditing, + isReply: isReply, + startsThread: startsThread) + capture(event: event) + } + } diff --git a/Riot/Modules/Analytics/AnalyticsScreen.swift b/Riot/Modules/Analytics/AnalyticsScreen.swift index 048e484e8..85e304b9d 100644 --- a/Riot/Modules/Analytics/AnalyticsScreen.swift +++ b/Riot/Modules/Analytics/AnalyticsScreen.swift @@ -32,6 +32,7 @@ import AnalyticsEvents case searchPeople case searchFiles case room + case roomPreview case roomDetails case roomMembers case user @@ -47,13 +48,19 @@ import AnalyticsEvents case settingsSecurity case settingsDefaultNotifications case settingsMentionsAndKeywords + case settingsNotifications case deactivateAccount case group case myGroups case inviteFriends + case threadList + case spaceMenu + case spaceMembers + case spaceExploreRooms + case dialpad /// The screen name reported to the AnalyticsEvent. - var screenName: AnalyticsEvent.Screen.ScreenName { + var screenName: AnalyticsEvent.MobileScreen.ScreenName { switch self { case .welcome: return .Welcome @@ -64,23 +71,23 @@ import AnalyticsEvents case .forgotPassword: return .ForgotPassword case .sidebar: - return .MobileSidebar + return .Sidebar case .home: return .Home case .favourites: - return .MobileFavourites + return .Favourites case .people: - return .MobilePeople + return .People case .rooms: - return .MobileRooms + return .Rooms case .searchRooms: - return .MobileSearchRooms + return .SearchRooms case .searchMessages: - return .MobileSearchMessages + return .SearchMessages case .searchPeople: - return .MobileSearchPeople + return .SearchPeople case .searchFiles: - return .MobileSearchFiles + return .SearchFiles case .room: return .Room case .roomDetails: @@ -89,6 +96,8 @@ import AnalyticsEvents return .RoomMembers case .user: return .User + case .roomPreview: + return .RoomPreview case .roomSearch: return .RoomSearch case .roomUploads: @@ -100,7 +109,7 @@ import AnalyticsEvents case .roomDirectory: return .RoomDirectory case .switchDirectory: - return .MobileSwitchDirectory + return .SwitchDirectory case .startChat: return .StartChat case .createRoom: @@ -113,6 +122,8 @@ import AnalyticsEvents return .SettingsDefaultNotifications case .settingsMentionsAndKeywords: return .SettingsMentionsAndKeywords + case .settingsNotifications: + return .SettingsNotifications case .deactivateAccount: return .DeactivateAccount case .group: @@ -120,7 +131,17 @@ import AnalyticsEvents case .myGroups: return .MyGroups case .inviteFriends: - return .MobileInviteFriends + return .InviteFriends + case .threadList: + return .ThreadList + case .spaceMenu: + return .SpaceMenu + case .spaceMembers: + return .SpaceMembers + case .spaceExploreRooms: + return .SpaceExploreRooms + case .dialpad: + return .Dialpad } } } diff --git a/Riot/Modules/Analytics/AnalyticsScreenTracker.swift b/Riot/Modules/Analytics/AnalyticsScreenTracker.swift new file mode 100644 index 000000000..25a423dc7 --- /dev/null +++ b/Riot/Modules/Analytics/AnalyticsScreenTracker.swift @@ -0,0 +1,49 @@ +// +// 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 Foundation + +/// An object to report the screen's display to the `Analytics` object. +@objcMembers class AnalyticsScreenTracker: NSObject { + + // MARK: - Properties + + /// The screen being tracked. + private let screen: AnalyticsScreen + + // MARK: - Setup + + /// Create a new screen tracker for the specified screen. + /// - Parameter screen: The screen that should be reported. + init(screen: AnalyticsScreen) { + self.screen = screen + super.init() + } + + // MARK: - Public + + /// Send screen event without duration + func trackScreen() { + Analytics.shared.trackScreen(screen) + } + + // MARK: static method + + static func trackScreen(_ screen: AnalyticsScreen) { + Analytics.shared.trackScreen(screen) + } + +} diff --git a/Riot/Modules/Analytics/AnalyticsUIElement.swift b/Riot/Modules/Analytics/AnalyticsUIElement.swift index 5a25d453e..bd44a7458 100644 --- a/Riot/Modules/Analytics/AnalyticsUIElement.swift +++ b/Riot/Modules/Analytics/AnalyticsUIElement.swift @@ -18,15 +18,22 @@ import AnalyticsEvents /// A tappable UI element that can be tracked in Analytics. @objc enum AnalyticsUIElement: Int { - case removeMe + case roomThreadListButton + case roomThreadSummaryItem + case threadListThreadItem + case threadListFilterItem /// The element name reported to the AnalyticsEvent. var name: AnalyticsEvent.Interaction.Name { switch self { - // Note: This is a test element that doesn't need to be captured. - // It can be removed when some elements are added that relate to mobile. - case .removeMe: - return .WebRoomSettingsLeaveButton + case .roomThreadListButton: + return .MobileRoomThreadListButton + case .roomThreadSummaryItem: + return .MobileRoomThreadSummaryItem + case .threadListThreadItem: + return .MobileThreadListThreadItem + case .threadListFilterItem: + return .MobileThreadListFilterItem } } } diff --git a/Riot/Modules/Analytics/Helpers/UserProperties+Element.swift b/Riot/Modules/Analytics/Helpers/UserProperties+Element.swift new file mode 100644 index 000000000..341f0789a --- /dev/null +++ b/Riot/Modules/Analytics/Helpers/UserProperties+Element.swift @@ -0,0 +1,34 @@ +// +// 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 Foundation +import AnalyticsEvents + +extension AnalyticsEvent.UserProperties { + + // Initializer for Element. Strips all Web properties. + public init(ftueUseCaseSelection: FtueUseCaseSelection?, numFavouriteRooms: Int?, numSpaces: Int?) { + self.init(WebMetaSpaceFavouritesEnabled: nil, + WebMetaSpaceHomeAllRooms: nil, + WebMetaSpaceHomeEnabled: nil, + WebMetaSpaceOrphansEnabled: nil, + WebMetaSpacePeopleEnabled: nil, + ftueUseCaseSelection: ftueUseCaseSelection, + numFavouriteRooms: numFavouriteRooms, + numSpaces: numSpaces) + } + +} diff --git a/Riot/Modules/Analytics/PHGPostHogConfiguration.swift b/Riot/Modules/Analytics/PHGPostHogConfiguration.swift index c02b85c30..8bed04920 100644 --- a/Riot/Modules/Analytics/PHGPostHogConfiguration.swift +++ b/Riot/Modules/Analytics/PHGPostHogConfiguration.swift @@ -18,11 +18,12 @@ import PostHog extension PHGPostHogConfiguration { static var standard: PHGPostHogConfiguration? { - guard let apiKey = BuildSettings.analyticsKey, let host = BuildSettings.analyticsHost else { return nil } + let analyticsConfiguration = BuildSettings.analyticsConfiguration + guard analyticsConfiguration.isEnabled else { return nil } - let configuration = PHGPostHogConfiguration(apiKey: apiKey, host: host) - configuration.shouldSendDeviceID = false + let postHogConfiguration = PHGPostHogConfiguration(apiKey: analyticsConfiguration.apiKey, host: analyticsConfiguration.host) + postHogConfiguration.shouldSendDeviceID = false - return configuration + return postHogConfiguration } } diff --git a/Riot/Modules/Analytics/PostHogAnalyticsClient.swift b/Riot/Modules/Analytics/PostHogAnalyticsClient.swift index 434ce978e..8d6dd4d50 100644 --- a/Riot/Modules/Analytics/PostHogAnalyticsClient.swift +++ b/Riot/Modules/Analytics/PostHogAnalyticsClient.swift @@ -80,6 +80,7 @@ class PostHogAnalyticsClient: AnalyticsClientProtocol { // Merge the updated user properties with the existing ones self.pendingUserProperties = AnalyticsEvent.UserProperties(ftueUseCaseSelection: userProperties.ftueUseCaseSelection ?? pendingUserProperties.ftueUseCaseSelection, + numFavouriteRooms: userProperties.numFavouriteRooms ?? pendingUserProperties.numFavouriteRooms, numSpaces: userProperties.numSpaces ?? pendingUserProperties.numSpaces) } diff --git a/Riot/Modules/Application/AppCoordinator.swift b/Riot/Modules/Application/AppCoordinator.swift index 8f1b61d58..3413a90ad 100755 --- a/Riot/Modules/Application/AppCoordinator.swift +++ b/Riot/Modules/Application/AppCoordinator.swift @@ -297,19 +297,7 @@ fileprivate class AppNavigator: AppNavigatorProtocol { return SideMenuPresenter(sideMenuCoordinator: sideMenuCoordinator) }() - - private var appNavigationVC: UINavigationController { - guard - let splitVC = appCoordinator.splitViewCoordinator?.toPresentable() as? UISplitViewController, - // Picking out the first view controller currently works only on iPhones, not iPads - let navigationVC = splitVC.viewControllers.first as? UINavigationController - else { - MXLog.error("[AppNavigator] Missing root split view controller") - return UINavigationController() - } - return navigationVC - } - + // MARK: - Setup init(appCoordinator: AppCoordinator) { @@ -321,16 +309,4 @@ fileprivate class AppNavigator: AppNavigatorProtocol { func navigate(to destination: AppNavigatorDestination) { self.appCoordinator.navigate(to: destination) } - - func addLoadingActivity() -> Activity { - let presenter = ActivityIndicatorToastPresenter( - text: VectorL10n.roomParticipantsSecurityLoading, - navigationController: appNavigationVC - ) - let request = ActivityRequest( - presenter: presenter, - dismissal: .manual - ) - return ActivityCenter.shared.add(request) - } } diff --git a/Riot/Modules/Application/AppNavigator.swift b/Riot/Modules/Application/AppNavigator.swift index c33b572f4..13404e62d 100644 --- a/Riot/Modules/Application/AppNavigator.swift +++ b/Riot/Modules/Application/AppNavigator.swift @@ -27,12 +27,4 @@ protocol AppNavigatorProtocol { /// Navigate to a destination screen or a state /// Do not use protocol with associatedtype for the moment like presented here https://www.swiftbysundell.com/articles/navigation-in-swift/#where-to-navigator use a separate enum func navigate(to destination: AppNavigatorDestination) - - /// Add loading activity to an app-wide queue of other activitie - /// - /// If the queue is empty, the activity will be displayed immediately, otherwise it will be pending - /// until the previously added activities have completed / been cancelled. - /// - /// To remove an activity indicator, cancel or deallocate the returned `Activity` - func addLoadingActivity() -> Activity } diff --git a/Riot/Modules/Application/LegacyAppDelegate.m b/Riot/Modules/Application/LegacyAppDelegate.m index 628a76508..cb03f978f 100644 --- a/Riot/Modules/Application/LegacyAppDelegate.m +++ b/Riot/Modules/Application/LegacyAppDelegate.m @@ -936,7 +936,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni } else { - title = [MatrixKitL10n error]; + title = [VectorL10n error]; } } @@ -954,7 +954,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni [_errorNotification dismissViewControllerAnimated:NO completion:nil]; _errorNotification = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; - [_errorNotification addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [_errorNotification addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1890,7 +1890,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni completion(YES); }]]; - [self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -2242,7 +2242,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni }]]; - [self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -2691,7 +2691,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni }]]; - [_errorNotification addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [_errorNotification addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -2772,7 +2772,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni message:messageText preferredStyle:UIAlertControllerStyleAlert]; - [self.mxInAppNotification addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [self.mxInAppNotification addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -2832,7 +2832,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni { [accountPicker dismissViewControllerAnimated:NO completion:nil]; - accountPicker = [UIAlertController alertControllerWithTitle:[MatrixKitL10n selectAccount] message:nil preferredStyle:UIAlertControllerStyleActionSheet]; + accountPicker = [UIAlertController alertControllerWithTitle:[VectorL10n selectAccount] message:nil preferredStyle:UIAlertControllerStyleActionSheet]; __weak typeof(self) weakSelf = self; for(MXKAccount *account in mxAccounts) @@ -2855,7 +2855,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni }]]; } - [accountPicker addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [accountPicker addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -3280,7 +3280,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni [AppDelegate theDelegate].errorNotification = nil; }]]; - [_errorNotification addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [_errorNotification addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -3485,7 +3485,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni __weak typeof(self) weakSelf = self; - [self->noCallSupportAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ignore] + [self->noCallSupportAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ignore] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -3497,7 +3497,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni }]]; - [self->noCallSupportAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n rejectCall] + [self->noCallSupportAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n rejectCall] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -4345,7 +4345,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni { GDPRConsentViewController *gdprConsentViewController = [[GDPRConsentViewController alloc] initWithURL:consentURI]; - UIBarButtonItem *closeBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[MatrixKitL10n close] + UIBarButtonItem *closeBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[VectorL10n close] style:UIBarButtonItemStylePlain target:self action:@selector(dismissGDPRConsent)]; @@ -4469,7 +4469,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni [[UIApplication sharedApplication] vc_open:self.majorUpdateManager.learnMoreURL completionHandler:^(BOOL success) { if (!success) { - [self showAlertWithTitle:[MatrixKitL10n error] message:[VectorL10n roomMessageUnableOpenLinkErrorMessage]]; + [self showAlertWithTitle:[VectorL10n error] message:[VectorL10n roomMessageUnableOpenLinkErrorMessage]]; } }]; diff --git a/Riot/Modules/Authentication/AuthenticationCoordinator.swift b/Riot/Modules/Authentication/AuthenticationCoordinator.swift index 865161941..f9d8787aa 100644 --- a/Riot/Modules/Authentication/AuthenticationCoordinator.swift +++ b/Riot/Modules/Authentication/AuthenticationCoordinator.swift @@ -28,6 +28,8 @@ final class AuthenticationCoordinator: NSObject, AuthenticationCoordinatorProtoc private let navigationRouter: NavigationRouterType private let authenticationViewController: AuthenticationViewController + private var canPresentAdditionalScreens: Bool + private var isWaitingToPresentCompleteSecurity = false private let crossSigningService = CrossSigningService() /// The password entered, for use when setting up cross-signing. @@ -45,6 +47,7 @@ final class AuthenticationCoordinator: NSObject, AuthenticationCoordinatorProtoc init(parameters: AuthenticationCoordinatorParameters) { self.navigationRouter = parameters.navigationRouter + self.canPresentAdditionalScreens = parameters.canPresentAdditionalScreens let authenticationViewController = AuthenticationViewController() self.authenticationViewController = authenticationViewController @@ -91,6 +94,17 @@ final class AuthenticationCoordinator: NSObject, AuthenticationCoordinatorProtoc authenticationViewController.continueSSOLogin(withToken: loginToken, txnId: transactionID) } + func presentPendingScreensIfNecessary() { + canPresentAdditionalScreens = true + + showLoadingAnimation() + + if isWaitingToPresentCompleteSecurity { + isWaitingToPresentCompleteSecurity = false + presentCompleteSecurity() + } + } + // MARK: - Private private func showLoadingAnimation() { @@ -102,7 +116,13 @@ final class AuthenticationCoordinator: NSObject, AuthenticationCoordinatorProtoc navigationRouter.setRootModule(loadingViewController) } - private func presentCompleteSecurity(with session: MXSession) { + private func presentCompleteSecurity() { + guard let session = session else { + MXLog.error("[AuthenticationCoordinator] presentCompleteSecurity: Unable to present security due to missing session.") + authenticationDidComplete() + return + } + let isNewSignIn = true let keyVerificationCoordinator = KeyVerificationCoordinator(session: session, flow: .completeSecurity(isNewSignIn)) @@ -115,7 +135,7 @@ final class AuthenticationCoordinator: NSObject, AuthenticationCoordinatorProtoc } private func authenticationDidComplete() { - completion?(.didComplete(authenticationViewController.authType)) + completion?(.didComplete) } private func registerSessionStateChangeNotification(for session: MXSession) { @@ -183,8 +203,14 @@ final class AuthenticationCoordinator: NSObject, AuthenticationCoordinatorProtoc self.authenticationDidComplete() } case .crossSigningExists: + guard self.canPresentAdditionalScreens else { + MXLog.debug("[AuthenticationCoordinator] sessionStateDidChange: Delaying presentCompleteSecurity during onboarding.") + self.isWaitingToPresentCompleteSecurity = true + return + } + MXLog.debug("[AuthenticationCoordinator] sessionStateDidChange: Complete security") - self.presentCompleteSecurity(with: session) + self.presentCompleteSecurity() default: MXLog.debug("[AuthenticationCoordinator] sessionStateDidChange: Nothing to do") @@ -211,8 +237,10 @@ extension AuthenticationCoordinator: AuthenticationViewControllerDelegate { self.session = session self.password = password - self.showLoadingAnimation() - completion?(.didLogin(session)) + if canPresentAdditionalScreens { + showLoadingAnimation() + } + completion?(.didLogin(session: session, authenticationType: authenticationViewController.authType)) } } diff --git a/Riot/Modules/Authentication/AuthenticationCoordinatorProtocol.swift b/Riot/Modules/Authentication/AuthenticationCoordinatorProtocol.swift index c024cddbe..f04676861 100644 --- a/Riot/Modules/Authentication/AuthenticationCoordinatorProtocol.swift +++ b/Riot/Modules/Authentication/AuthenticationCoordinatorProtocol.swift @@ -20,14 +20,16 @@ import Foundation struct AuthenticationCoordinatorParameters { let navigationRouter: NavigationRouterType + /// Whether or not the coordinator should show the loading spinner, key verification etc. + let canPresentAdditionalScreens: Bool } 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) + case didLogin(session: MXSession, authenticationType: MXKAuthenticationType) /// All of the required authentication steps including key verification is complete. - case didComplete(MXKAuthenticationType) + case didComplete } /// `AuthenticationCoordinatorProtocol` is a protocol describing a Coordinator that handle's the authentication navigation flow. @@ -52,4 +54,8 @@ protocol AuthenticationCoordinatorProtocol: Coordinator, Presentable { /// When SSO login succeeded, when SFSafariViewController is used, continue login with success parameters. func continueSSOLogin(withToken loginToken: String, transactionID: String) -> Bool + + /// Indicates to the coordinator to display any pending screens if it was created with + /// the `canPresentAdditionalScreens` parameter set to `false` + func presentPendingScreensIfNecessary() } diff --git a/Riot/Modules/Authentication/AuthenticationViewController.m b/Riot/Modules/Authentication/AuthenticationViewController.m index 425fb4da6..449276f09 100644 --- a/Riot/Modules/Authentication/AuthenticationViewController.m +++ b/Riot/Modules/Authentication/AuthenticationViewController.m @@ -698,7 +698,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; }]]; MXWeakify(self); - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -860,10 +860,10 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; { if (!self.isIdentityServerConfigured) { - UIAlertController *alert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] + UIAlertController *alert = [UIAlertController alertControllerWithTitle:[VectorL10n error] message:[VectorL10n authForgotPasswordErrorNoConfiguredIdentityServer] preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:nil]]; + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:nil]]; [self presentViewController:alert animated:YES completion:nil]; return; @@ -1077,7 +1077,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; alert = [UIAlertController alertControllerWithTitle:[VectorL10n warning] message:[VectorL10n authAddEmailAndPhoneWarning] preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1396,7 +1396,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; message:nil preferredStyle:UIAlertControllerStyleAlert]; - [self->alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [self->alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/Authentication/Views/AuthInputsView.m b/Riot/Modules/Authentication/Views/AuthInputsView.m index ea0bc4741..82bb0e3fa 100644 --- a/Riot/Modules/Authentication/Views/AuthInputsView.m +++ b/Riot/Modules/Authentication/Views/AuthInputsView.m @@ -298,7 +298,7 @@ } else { - errorMsg = [MatrixKitL10n notSupportedYet]; + errorMsg = [VectorL10n notSupportedYet]; } } else if (type == MXKAuthenticationTypeRegister) @@ -425,9 +425,9 @@ [inputsAlert dismissViewControllerAnimated:NO completion:nil]; } - inputsAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] message:errorMsg preferredStyle:UIAlertControllerStyleAlert]; + inputsAlert = [UIAlertController alertControllerWithTitle:[VectorL10n error] message:errorMsg preferredStyle:UIAlertControllerStyleAlert]; - [inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [inputsAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -776,7 +776,7 @@ else { MXLogDebug(@"[AuthInputsView] reCaptcha stage failed"); - callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]); + callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]); } }]; @@ -877,7 +877,7 @@ else { MXLogDebug(@"[AuthInputsView] reCaptcha stage failed"); - callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]); + callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]); } }]; } @@ -915,7 +915,7 @@ } MXLogDebug(@"[AuthInputsView] updateAuthSessionWithCompletedStages failed"); - callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]); + callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]); } } @@ -1673,7 +1673,7 @@ inputsAlert = [UIAlertController alertControllerWithTitle:[VectorL10n authMsisdnValidationTitle] message:[VectorL10n authMsisdnValidationMessage] preferredStyle:UIAlertControllerStyleAlert]; - [inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [inputsAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1698,7 +1698,7 @@ }]; - [inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n submit] + [inputsAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n submit] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1770,13 +1770,13 @@ } else { - title = [MatrixKitL10n error]; + title = [VectorL10n error]; } } self->inputsAlert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert]; - [self->inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [self->inputsAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/Authentication/Views/ForgotPasswordInputsView.m b/Riot/Modules/Authentication/Views/ForgotPasswordInputsView.m index 386df8331..16520db27 100644 --- a/Riot/Modules/Authentication/Views/ForgotPasswordInputsView.m +++ b/Riot/Modules/Authentication/Views/ForgotPasswordInputsView.m @@ -213,9 +213,9 @@ [inputsAlert dismissViewControllerAnimated:NO completion:nil]; } - inputsAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] message:errorMsg preferredStyle:UIAlertControllerStyleAlert]; + inputsAlert = [UIAlertController alertControllerWithTitle:[VectorL10n error] message:errorMsg preferredStyle:UIAlertControllerStyleAlert]; - [inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [inputsAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -315,9 +315,9 @@ [self->inputsAlert dismissViewControllerAnimated:NO completion:nil]; } - self->inputsAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] message:errorMessage preferredStyle:UIAlertControllerStyleAlert]; + self->inputsAlert = [UIAlertController alertControllerWithTitle:[VectorL10n error] message:errorMessage preferredStyle:UIAlertControllerStyleAlert]; - [self->inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [self->inputsAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -349,7 +349,7 @@ } } - callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]); + callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]); } } diff --git a/Riot/Modules/BugReport/BugReportViewController.m b/Riot/Modules/BugReport/BugReportViewController.m index 3dd714654..2739bd45f 100644 --- a/Riot/Modules/BugReport/BugReportViewController.m +++ b/Riot/Modules/BugReport/BugReportViewController.m @@ -92,8 +92,8 @@ _descriptionLabel.text = [VectorL10n bugReportDescription]; } - [_cancelButton setTitle:[MatrixKitL10n cancel] forState:UIControlStateNormal]; - [_cancelButton setTitle:[MatrixKitL10n cancel] forState:UIControlStateHighlighted]; + [_cancelButton setTitle:[VectorL10n cancel] forState:UIControlStateNormal]; + [_cancelButton setTitle:[VectorL10n cancel] forState:UIControlStateHighlighted]; [_sendButton setTitle:[VectorL10n bugReportSend] forState:UIControlStateNormal]; [_sendButton setTitle:[VectorL10n bugReportSend] forState:UIControlStateHighlighted]; [_backgroundButton setTitle:[VectorL10n bugReportBackgroundMode] forState:UIControlStateNormal]; diff --git a/Riot/Modules/Call/CallViewController.m b/Riot/Modules/Call/CallViewController.m index d4ff8d4d5..8703e18c7 100644 --- a/Riot/Modules/Call/CallViewController.m +++ b/Riot/Modules/Call/CallViewController.m @@ -684,7 +684,7 @@ CallAudioRouteMenuViewDelegate> message:[VectorL10n callTransferErrorMessage] preferredStyle:UIAlertControllerStyleAlert]; - [self->currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [self->currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/Call/Dialpad/DialpadViewController.swift b/Riot/Modules/Call/Dialpad/DialpadViewController.swift index ce9a9fc66..520e383bd 100644 --- a/Riot/Modules/Call/Dialpad/DialpadViewController.swift +++ b/Riot/Modules/Call/Dialpad/DialpadViewController.swift @@ -158,6 +158,12 @@ class DialpadViewController: UIViewController { } } + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + AnalyticsScreenTracker.trackScreen(.dialpad) + } + override var preferredStatusBarStyle: UIStatusBarStyle { return self.theme.statusBarStyle } diff --git a/Riot/Modules/Call/Views/CallAudioRouteView.swift b/Riot/Modules/Call/Views/CallAudioRouteView.swift index afac0eb2c..ead55fa29 100644 --- a/Riot/Modules/Call/Views/CallAudioRouteView.swift +++ b/Riot/Modules/Call/Views/CallAudioRouteView.swift @@ -55,7 +55,7 @@ class CallAudioRouteView: UIView { titleLabel.text = route.name case .loudSpeakers: iconImageView.image = Asset.Images.callAudioRouteSpeakers.image - titleLabel.text = MatrixKitL10n.callMoreActionsAudioUseDevice + titleLabel.text = VectorL10n.callMoreActionsAudioUseDevice case .externalWired, .externalBluetooth, .externalCar: iconImageView.image = Asset.Images.callAudioRouteHeadphones.image titleLabel.text = route.name diff --git a/Riot/Modules/Camera/CameraAccessAlertPresenter.swift b/Riot/Modules/Camera/CameraAccessAlertPresenter.swift index 42d4fb9f9..45c828de2 100644 --- a/Riot/Modules/Camera/CameraAccessAlertPresenter.swift +++ b/Riot/Modules/Camera/CameraAccessAlertPresenter.swift @@ -29,10 +29,10 @@ final class CameraAccessAlertPresenter { let alert = UIAlertController(title: VectorL10n.camera, message: VectorL10n.cameraAccessNotGranted(appDisplayName), preferredStyle: .alert) - let cancelActionTitle = MatrixKitL10n.ok + let cancelActionTitle = VectorL10n.ok let cancelAction = UIAlertAction(title: cancelActionTitle, style: .cancel) - let settingsActionTitle = MatrixKitL10n.settings + let settingsActionTitle = VectorL10n.settings let settingsAction = UIAlertAction(title: settingsActionTitle, style: .default, handler: { _ in UIApplication.shared.open(settingsURL, options: [:], completionHandler: { (succeed) in if !succeed { diff --git a/Riot/Modules/Common/ActivityIndicator/AppActivityIndicatorPresenter.swift b/Riot/Modules/Common/ActivityIndicator/AppActivityIndicatorPresenter.swift deleted file mode 100644 index 53a5d2453..000000000 --- a/Riot/Modules/Common/ActivityIndicator/AppActivityIndicatorPresenter.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// 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 Foundation -import UIKit -import MatrixSDK -import CommonKit - -/// Presenter which displays activity / loading indicators using app-wide `AppNavigator`, thus displaying them in a unified way, -/// and `ActivityCenter`/`Activity`, which ensures that only one activity is shown at a given time. -/// -/// Note: clients can skip using `AppActivityIndicatorPresenter` and instead coordiinate with `AppNavigatorProtocol` directly. -/// The presenter exists mostly as a transition for view controllers already using `ActivityIndicatorPresenterType` and / or view controllers -/// written in objective-c. -@objc final class AppActivityIndicatorPresenter: NSObject, ActivityIndicatorPresenterType { - private let appNavigator: AppNavigatorProtocol - private var activity: Activity? - - init(appNavigator: AppNavigatorProtocol) { - self.appNavigator = appNavigator - } - - @objc func presentActivityIndicator() { - activity = appNavigator.addLoadingActivity() - } - - @objc func removeCurrentActivityIndicator(animated: Bool, completion: (() -> Void)?) { - activity = nil - } - - func presentActivityIndicator(on view: UIView, animated: Bool, completion: (() -> Void)?) { - MXLog.error("[AppActivityIndicatorPresenter] Shared activity indicator does not support presenting from custom views") - } -} diff --git a/Riot/Modules/Common/ActivityIndicator/UIKit/LabelledActivityIndicatorView.swift b/Riot/Modules/Common/ActivityIndicator/UIKit/LabelledActivityIndicatorView.swift new file mode 100644 index 000000000..266237bd4 --- /dev/null +++ b/Riot/Modules/Common/ActivityIndicator/UIKit/LabelledActivityIndicatorView.swift @@ -0,0 +1,100 @@ +// +// 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 Foundation +import UIKit +import MatrixSDK + +final class LabelledActivityIndicatorView: UIView, Themable { + private enum Constants { + static let padding = UIEdgeInsets(top: 20, left: 40, bottom: 15, right: 40) + static let activityIndicatorScale = CGFloat(1.5) + static let cornerRadius: CGFloat = 12.0 + static let stackBackgroundOpacity: CGFloat = 0.9 + static let stackSpacing: CGFloat = 15 + static let backgroundOpacity: CGFloat = 0.5 + } + + private let stackBackgroundView: UIView = { + let view = UIView() + view.layer.cornerRadius = Constants.cornerRadius + view.alpha = Constants.stackBackgroundOpacity + return view + }() + + private let stackView: UIStackView = { + let stack = UIStackView() + stack.axis = .vertical + stack.distribution = .fill + stack.alignment = .center + stack.spacing = Constants.stackSpacing + return stack + }() + + private let activityIndicator: UIActivityIndicatorView = { + let view = UIActivityIndicatorView() + view.transform = .init(scaleX: Constants.activityIndicatorScale, y: Constants.activityIndicatorScale) + view.startAnimating() + return view + }() + + private let label: UILabel = { + return UILabel() + }() + + init(text: String) { + super.init(frame: .zero) + setup(text: text) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func setup(text: String) { + setupStackView() + label.text = text + } + + private func setupStackView() { + addSubview(stackView) + stackView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + stackView.centerXAnchor.constraint(equalTo: centerXAnchor), + stackView.centerYAnchor.constraint(equalTo: centerYAnchor) + ]) + + stackView.addArrangedSubview(activityIndicator) + stackView.addArrangedSubview(label) + + insertSubview(stackBackgroundView, belowSubview: stackView) + stackBackgroundView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + stackBackgroundView.topAnchor.constraint(equalTo: stackView.topAnchor, constant: -Constants.padding.top), + stackBackgroundView.bottomAnchor.constraint(equalTo: stackView.bottomAnchor, constant: Constants.padding.bottom), + stackBackgroundView.leadingAnchor.constraint(equalTo: stackView.leadingAnchor, constant: -Constants.padding.left), + stackBackgroundView.trailingAnchor.constraint(equalTo: stackView.trailingAnchor, constant: Constants.padding.right) + ]) + } + + func update(theme: Theme) { + backgroundColor = theme.colors.primaryContent.withAlphaComponent(Constants.backgroundOpacity) + stackBackgroundView.backgroundColor = theme.colors.system + activityIndicator.color = theme.colors.secondaryContent + label.font = theme.fonts.calloutSB + label.textColor = theme.colors.secondaryContent + } +} diff --git a/Riot/Modules/Common/ActivityIndicator/UserIndicatorPresenterWrapper.swift b/Riot/Modules/Common/ActivityIndicator/UserIndicatorPresenterWrapper.swift new file mode 100644 index 000000000..f7faa03f6 --- /dev/null +++ b/Riot/Modules/Common/ActivityIndicator/UserIndicatorPresenterWrapper.swift @@ -0,0 +1,54 @@ +// +// 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 Foundation +import CommonKit + +/// A convenience objc-compatible wrapper around `UserIndicatorTypePresenterProtocol`. +/// +/// This class wraps swift-only protocol by exposing multiple methods instead of accepting struct types +/// and it keeps a track of `UserIndicator`s instead of returning them to the caller. +@objc final class UserIndicatorPresenterWrapper: NSObject { + private let presenter: UserIndicatorTypePresenterProtocol + private var loadingIndicator: UserIndicator? + private var otherIndicators = [UserIndicator]() + + init(presenter: UserIndicatorTypePresenterProtocol) { + self.presenter = presenter + } + + @objc func presentActivityIndicator() { + presentActivityIndicator(label: VectorL10n.homeSyncing) + } + + @objc func presentActivityIndicator(label: String) { + guard loadingIndicator == nil else { + // The app is very liberal with calling `presentActivityIndicator` (often not matched by corresponding `removeCurrentActivityIndicator`), + // so there is no reason to keep adding new indiciators if there is one already showing. + return + } + + loadingIndicator = presenter.present(.loading(label: label, isInteractionBlocking: false)) + } + + @objc func dismissActivityIndicator() { + loadingIndicator = nil + } + + @objc func presentSuccess(label: String) { + presenter.present(.success(label: label)).store(in: &otherIndicators) + } +} diff --git a/Riot/Modules/Common/Recents/DataSources/RecentsDataSource.h b/Riot/Modules/Common/Recents/DataSources/RecentsDataSource.h index 8cc599eba..cf6329d0f 100644 --- a/Riot/Modules/Common/Recents/DataSources/RecentsDataSource.h +++ b/Riot/Modules/Common/Recents/DataSources/RecentsDataSource.h @@ -133,10 +133,15 @@ extern NSString *const kRecentsDataSourceTapOnDirectoryServerChange; - (void)forceRefresh; /** - Tell whether the sections are shrinkable. NO by default. + Tell whether the sections are shrinkable. YES by default. */ @property (nonatomic) BOOL areSectionsShrinkable; +/** + Return true if the given section is currently shrinked. + */ +- (BOOL)isSectionShrinkedAt:(NSInteger)section; + /** Get the sticky header view for the specified section. diff --git a/Riot/Modules/Common/Recents/DataSources/RecentsDataSource.m b/Riot/Modules/Common/Recents/DataSources/RecentsDataSource.m index faaa6554b..0430b3304 100644 --- a/Riot/Modules/Common/Recents/DataSources/RecentsDataSource.m +++ b/Riot/Modules/Common/Recents/DataSources/RecentsDataSource.m @@ -78,7 +78,7 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou [self resetSectionIndexes]; - _areSectionsShrinkable = NO; + _areSectionsShrinkable = YES; shrinkedSectionsBitMask = 0; roomTagsListenerByUserId = [[NSMutableDictionary alloc] init]; @@ -660,7 +660,7 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou title = [VectorL10n roomRecentsSuggestedRoomsSection]; } - if (count) + if (count && !(section == invitesSection)) { NSString *roomCount = [NSString stringWithFormat:@" %tu", count]; @@ -683,12 +683,16 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou return sectionTitle; } -- (UIView *)badgeViewForHeaderTitleInHomeSection:(NSInteger)section +- (UIView *)badgeViewForHeaderTitleInSection:(NSInteger)section { // Prepare a badge to display the total of missed notifications in this section. id counts = nil; UIView *missedNotifAndUnreadBadgeBgView = nil; - + + if (section == invitesSection) + { + counts = self.recentsListService.invitedRoomListData.counts; + } if (section == favoritesSection) { counts = self.recentsListService.favoritedRoomListData.counts; @@ -714,8 +718,9 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou counts = self.recentsListService.suggestedRoomListData.counts; } - NSUInteger numberOfNotifications = counts.total.numberOfNotifications; - NSUInteger numberOfHighlights = counts.total.numberOfHighlights; + // Invites are counted as highlights for the badge view display. + NSUInteger numberOfNotifications = counts.total.numberOfNotifications + counts.total.numberOfInvitedRooms; + NSUInteger numberOfHighlights = counts.total.numberOfHighlights + counts.total.numberOfInvitedRooms; if (numberOfNotifications) { @@ -832,14 +837,16 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou chevronView.contentMode = UIViewContentModeCenter; sectionHeader.accessoryView = chevronView; } - else if (_recentsDataSourceMode == RecentsDataSourceModeHome) + if (_recentsDataSourceMode == RecentsDataSourceModeHome + || _recentsDataSourceMode == RecentsDataSourceModePeople + || _recentsDataSourceMode == RecentsDataSourceModeRooms) { // Add a badge to display the total of missed notifications by section. - UIView *badgeView = [self badgeViewForHeaderTitleInHomeSection:section]; + UIView *badgeView = [self badgeViewForHeaderTitleInSection:section]; if (badgeView) { - sectionHeader.accessoryView = badgeView; + sectionHeader.rightAccessoryView = badgeView; } } @@ -1509,4 +1516,55 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou [self.delegate dataSource:self didCellChange:update]; } +#pragma mark - Shrinkable +- (BOOL)isSectionShrinkedAt:(NSInteger)section +{ + if (_areSectionsShrinkable == NO) + { + return NO; + } + + if (section == favoritesSection && (shrinkedSectionsBitMask & RECENTSDATASOURCE_SECTION_FAVORITES)) + { + return YES; + } + + if (section == peopleSection && (shrinkedSectionsBitMask & RECENTSDATASOURCE_SECTION_PEOPLE)) + { + return YES; + } + + if (section == conversationSection && (shrinkedSectionsBitMask & RECENTSDATASOURCE_SECTION_CONVERSATIONS)) + { + return YES; + } + + if (section == directorySection && (shrinkedSectionsBitMask & RECENTSDATASOURCE_SECTION_DIRECTORY)) + { + return YES; + } + + if (section == lowPrioritySection && (shrinkedSectionsBitMask & RECENTSDATASOURCE_SECTION_LOWPRIORITY)) + { + return YES; + } + + if (section == serverNoticeSection && (shrinkedSectionsBitMask & RECENTSDATASOURCE_SECTION_SERVERNOTICE)) + { + return YES; + } + + if (section == invitesSection && (shrinkedSectionsBitMask & RECENTSDATASOURCE_SECTION_INVITES)) + { + return YES; + } + + if (section == suggestedRoomsSection && (shrinkedSectionsBitMask & RECENTSDATASOURCE_SECTION_SUGGESTED)) + { + return YES; + } + + return NO; +} + @end diff --git a/Riot/Modules/Common/Recents/Model/DiscussionsCount.swift b/Riot/Modules/Common/Recents/Model/DiscussionsCount.swift index ee80cc52f..dad358771 100644 --- a/Riot/Modules/Common/Recents/Model/DiscussionsCount.swift +++ b/Riot/Modules/Common/Recents/Model/DiscussionsCount.swift @@ -51,10 +51,10 @@ public class DiscussionsCount: NSObject { super.init() } - public init(withRoomListDataCounts counts: MXRoomListDataCounts) { - self.numberOfNotified = counts.numberOfNotifiedRooms - self.numberOfHighlighted = counts.numberOfHighlightedRooms + counts.numberOfInvitedRooms - self.numberOfUnsent = counts.numberOfUnsentRooms + public init(withRoomListDataCounts counts: [MXRoomListDataCounts]) { + self.numberOfNotified = counts.reduce(0, { $0 + $1.numberOfNotifiedRooms }) + self.numberOfHighlighted = counts.reduce(0, { $0 + $1.numberOfHighlightedRooms + $1.numberOfInvitedRooms }) + self.numberOfUnsent = counts.reduce(0, { $0 + $1.numberOfUnsentRooms }) super.init() } } diff --git a/Riot/Modules/Common/Recents/Model/RecentCellData.m b/Riot/Modules/Common/Recents/Model/RecentCellData.m index 01800996f..995182387 100644 --- a/Riot/Modules/Common/Recents/Model/RecentCellData.m +++ b/Riot/Modules/Common/Recents/Model/RecentCellData.m @@ -62,7 +62,7 @@ NSString *result = [super roomDisplayname]; if (!result.length) { - result = [MatrixKitL10n roomDisplaynameEmptyRoom]; + result = [VectorL10n roomDisplaynameEmptyRoom]; } return result; } diff --git a/Riot/Modules/Common/Recents/RecentsViewController.h b/Riot/Modules/Common/Recents/RecentsViewController.h index 00f728d24..a9f46c8ff 100644 --- a/Riot/Modules/Common/Recents/RecentsViewController.h +++ b/Riot/Modules/Common/Recents/RecentsViewController.h @@ -18,8 +18,8 @@ #import "MatrixKit.h" @class RootTabEmptyView; -@class AnalyticsScreenTimer; -@class AppActivityIndicatorPresenter; +@class AnalyticsScreenTracker; +@class UserIndicatorPresenterWrapper; /** Notification to be posted when recents data is ready. Notification object will be the RecentsViewController instance. @@ -95,12 +95,12 @@ FOUNDATION_EXPORT NSString *const RecentsViewControllerDataReadyNotification; /** The screen timer used for analytics if they've been enabled. The default value is nil. */ -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; /** - Presenter for displaying app-wide activity / loading indicators. If not set, the view controller will use legacy activity indicators + Presenter for displaying app-wide user indicators. If not set, the view controller will use legacy activity indicators */ -@property (nonatomic, strong) AppActivityIndicatorPresenter *activityPresenter; +@property (nonatomic, strong) UserIndicatorPresenterWrapper *indicatorPresenter; /** Return the sticky header for the specified section of the table view diff --git a/Riot/Modules/Common/Recents/RecentsViewController.m b/Riot/Modules/Common/Recents/RecentsViewController.m index dbd280337..99c348b1c 100644 --- a/Riot/Modules/Common/Recents/RecentsViewController.m +++ b/Riot/Modules/Common/Recents/RecentsViewController.m @@ -264,6 +264,8 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; + + [self.screenTracker trackScreen]; // Reset back user interactions self.userInteractionEnabled = YES; @@ -314,6 +316,8 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro [[NSNotificationCenter defaultCenter] removeObserver:kMXNotificationCenterDidUpdateRulesObserver]; kMXNotificationCenterDidUpdateRulesObserver = nil; } + + [self stopActivityIndicator]; } - (void)viewDidAppear:(BOOL)animated @@ -332,14 +336,6 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro // the selected room (if any) is highlighted. [self refreshCurrentSelectedCell:YES]; } - - [self.screenTimer start]; -} - -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; } - (void)viewDidLayoutSubviews @@ -538,16 +534,16 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro { // minging kludge until https://matrix.org/jira/browse/SYN-678 is fixed // 'Error when trying to join an empty room should be more explicit' - msg = [MatrixKitL10n roomErrorJoinFailedEmptyRoom]; + msg = [VectorL10n roomErrorJoinFailedEmptyRoom]; } [self->currentAlert dismissViewControllerAnimated:NO completion:nil]; - UIAlertController *errorAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n roomErrorJoinFailedTitle] + UIAlertController *errorAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomErrorJoinFailedTitle] message:msg preferredStyle:UIAlertControllerStyleAlert]; - [errorAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [errorAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); @@ -1040,6 +1036,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro SectionHeaderView *updatedSectionHeaderView = (SectionHeaderView *)updatedHeaderView; sectionHeaderView.headerLabel = updatedSectionHeaderView.headerLabel; sectionHeaderView.accessoryView = updatedSectionHeaderView.accessoryView; + sectionHeaderView.rightAccessoryView = updatedSectionHeaderView.rightAccessoryView; } } } @@ -1056,10 +1053,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro [[AppDelegate theDelegate].masterTabBarController refreshTabBarBadges]; } - if (changes == nil) - { - [self showEmptyViewIfNeeded]; - } + [self showEmptyViewIfNeeded]; if (dataSource.state == MXKDataSourceStateReady) { @@ -1255,7 +1249,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro message:message preferredStyle:UIAlertControllerStyleAlert]; - [leavePrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [leavePrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -1280,8 +1274,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro MXRoom *room = [self.mainSession roomWithRoomId:currentRoomId]; if (room) { - [self startActivityIndicator]; - + [self startActivityIndicatorWithLabel:[VectorL10n roomParticipantsLeaveProcessing]]; // cancel pending uploads/downloads // they are useless by now [MXMediaManager cancelDownloadsInCacheFolder:room.roomId]; @@ -1296,6 +1289,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro { typeof(self) self = weakSelf; [self stopActivityIndicator]; + [self.indicatorPresenter presentSuccessWithLabel:[VectorL10n roomParticipantsLeaveSuccess]]; // Force table refresh [self cancelEditionMode:YES]; } @@ -1943,7 +1937,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro }]]; } - [actionSheet addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [actionSheet addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -2358,7 +2352,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro else if ([MXTools isMatrixRoomAlias:roomIdOrAlias]) { // Room preview doesn't support room alias - [[AppDelegate theDelegate] showAlertWithTitle:[MatrixKitL10n error] message:[VectorL10n roomRecentsUnknownRoomErrorMessage]]; + [[AppDelegate theDelegate] showAlertWithTitle:[VectorL10n error] message:[VectorL10n roomRecentsUnknownRoomErrorMessage]]; } else { @@ -2384,7 +2378,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro }]; self.roomsDirectoryCoordinatorBridgePresenter = nil; } else { - [[AppDelegate theDelegate] showAlertWithTitle:[MatrixKitL10n error] message:[VectorL10n roomRecentsUnknownRoomErrorMessage]]; + [[AppDelegate theDelegate] showAlertWithTitle:[VectorL10n error] message:[VectorL10n roomRecentsUnknownRoomErrorMessage]]; } }]; } @@ -2410,20 +2404,28 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro #pragma mark - Activity Indicator - (BOOL)providesCustomActivityIndicator { - return self.activityPresenter != nil; + return self.indicatorPresenter != nil; +} + +- (void)startActivityIndicatorWithLabel:(NSString *)label { + if (self.indicatorPresenter) { + [self.indicatorPresenter presentActivityIndicatorWithLabel:label]; + } else { + [super startActivityIndicator]; + } } - (void)startActivityIndicator { - if (self.activityPresenter) { - [self.activityPresenter presentActivityIndicator]; + if (self.indicatorPresenter) { + [self.indicatorPresenter presentActivityIndicator]; } else { [super startActivityIndicator]; } } - (void)stopActivityIndicator { - if (self.activityPresenter) { - [self.activityPresenter removeCurrentActivityIndicatorWithAnimated:YES completion:nil]; + if (self.indicatorPresenter) { + [self.indicatorPresenter dismissActivityIndicator]; } else { [super stopActivityIndicator]; } diff --git a/Riot/Modules/Common/Recents/Service/MatrixSDK/RecentsListService.swift b/Riot/Modules/Common/Recents/Service/MatrixSDK/RecentsListService.swift index c9eb94209..f37ad11ae 100644 --- a/Riot/Modules/Common/Recents/Service/MatrixSDK/RecentsListService.swift +++ b/Riot/Modules/Common/Recents/Service/MatrixSDK/RecentsListService.swift @@ -32,7 +32,18 @@ public class RecentsListService: NSObject, RecentsListServiceProtocol { // MARK: - Fetchers - private var invitedRoomListDataFetcher: MXRoomListDataFetcher? + private var invitedRoomListDataFetcher: MXRoomListDataFetcher? { + switch mode { + case .home: + return invitedRoomListDataFetcherForHome + case .people: + return invitedRoomListDataFetcherForPeople + case .rooms: + return invitedRoomListDataFetcherForRooms + default: + return nil + } + } private var favoritedRoomListDataFetcher: MXRoomListDataFetcher? private var directRoomListDataFetcher: MXRoomListDataFetcher? { switch mode { @@ -62,19 +73,24 @@ public class RecentsListService: NSObject, RecentsListServiceProtocol { private var conversationRoomListDataFetcherForRooms: MXRoomListDataFetcher? private var directRoomListDataFetcherForHome: MXRoomListDataFetcher? private var directRoomListDataFetcherForPeople: MXRoomListDataFetcher? - + private var invitedRoomListDataFetcherForHome: MXRoomListDataFetcher? + private var invitedRoomListDataFetcherForPeople: MXRoomListDataFetcher? + private var invitedRoomListDataFetcherForRooms: MXRoomListDataFetcher? + // MARK: - Private private var fetcherTypesForMode: [RecentsDataSourceMode: FetcherTypes] = [ .home: [.invited, .favorited, .directHome, .conversationHome, .lowPriority, .serverNotice, .suggested], .favourites: [.favorited], - .people: [.directPeople], - .rooms: [.conversationRooms, .suggested] + .people: [.invited, .directPeople], + .rooms: [.invited, .conversationRooms, .suggested] ] private var allFetchers: [MXRoomListDataFetcher] { return [ - invitedRoomListDataFetcher, + invitedRoomListDataFetcherForHome, + invitedRoomListDataFetcherForPeople, + invitedRoomListDataFetcherForRooms, favoritedRoomListDataFetcher, directRoomListDataFetcherForHome, directRoomListDataFetcherForPeople, @@ -120,7 +136,7 @@ public class RecentsListService: NSObject, RecentsListServiceProtocol { } return result } - + private var hideInvitedSection: Bool { return MXSDKOptions.sharedInstance().autoAcceptRoomInvites } @@ -204,20 +220,20 @@ public class RecentsListService: NSObject, RecentsListServiceProtocol { guard let totalCounts = favoritedRoomListDataFetcher?.data?.counts.total else { return .zero } - return DiscussionsCount(withRoomListDataCounts: totalCounts) + return DiscussionsCount(withRoomListDataCounts: [totalCounts]) } public var peopleMissedDiscussionsCount: DiscussionsCount { - guard let totalCounts = directRoomListDataFetcherForPeople?.data?.counts.total else { - return .zero - } + let invitesCount = invitedRoomListDataFetcherForPeople?.data?.counts.total + let directCount = directRoomListDataFetcherForPeople?.data?.counts.total + let totalCounts = [invitesCount, directCount].compactMap { $0 } return DiscussionsCount(withRoomListDataCounts: totalCounts) } public var conversationMissedDiscussionsCount: DiscussionsCount { - guard let totalCounts = conversationRoomListDataFetcherForRooms?.data?.counts.total else { - return .zero - } + let invitesCount = invitedRoomListDataFetcherForRooms?.data?.counts.total + let conversationCount = conversationRoomListDataFetcherForRooms?.data?.counts.total + let totalCounts = [invitesCount, conversationCount].compactMap { $0 } return DiscussionsCount(withRoomListDataCounts: totalCounts) } @@ -269,7 +285,9 @@ public class RecentsListService: NSObject, RecentsListServiceProtocol { removeAllDelegates() allFetchers.forEach({ $0.stop() }) - invitedRoomListDataFetcher = nil + invitedRoomListDataFetcherForHome = nil + invitedRoomListDataFetcherForPeople = nil + invitedRoomListDataFetcherForRooms = nil favoritedRoomListDataFetcher = nil directRoomListDataFetcherForHome = nil directRoomListDataFetcherForPeople = nil @@ -435,7 +453,8 @@ public class RecentsListService: NSObject, RecentsListServiceProtocol { private func createCommonRoomListDataFetcher(withDataTypes dataTypes: MXRoomSummaryDataTypes = [], onlySuggested: Bool = false, - paginate: Bool = true) -> MXRoomListDataFetcher { + paginate: Bool = true, + strictMatches: Bool = false) -> MXRoomListDataFetcher { guard let session = session else { fatalError("Session deallocated") } @@ -443,7 +462,8 @@ public class RecentsListService: NSObject, RecentsListServiceProtocol { onlySuggested: onlySuggested, query: query, space: space, - showAllRoomsInHomeSpace: showAllRoomsInHomeSpace) + showAllRoomsInHomeSpace: showAllRoomsInHomeSpace, + strictMatches: strictMatches) let fetchOptions = MXRoomListDataFetchOptions(filterOptions: filterOptions, sortOptions: sortOptions, @@ -455,6 +475,22 @@ public class RecentsListService: NSObject, RecentsListServiceProtocol { } return fetcher } + + private func createInvitedRoomListDataFetcherForPeople() -> MXRoomListDataFetcher { + let fetcher = createCommonRoomListDataFetcher(withDataTypes: [.invited, .direct], paginate: false, strictMatches: true) + updateInvitedFetcher(fetcher, for: .people) + fetcher.addDelegate(self) + fetcher.paginate() + return fetcher + } + + private func createInvitedRoomListDataFetcherForRooms() -> MXRoomListDataFetcher { + let fetcher = createCommonRoomListDataFetcher(withDataTypes: [.invited], paginate: false) + updateInvitedFetcher(fetcher, for: .rooms) + fetcher.addDelegate(self) + fetcher.paginate() + return fetcher + } private func createDirectRoomListDataFetcherForHome() -> MXRoomListDataFetcher { let fetcher = createCommonRoomListDataFetcher(withDataTypes: [.direct], paginate: false) @@ -500,7 +536,9 @@ public class RecentsListService: NSObject, RecentsListServiceProtocol { return } if !hideInvitedSection { - invitedRoomListDataFetcher = createCommonRoomListDataFetcher(withDataTypes: [.invited]) + invitedRoomListDataFetcherForHome = createCommonRoomListDataFetcher(withDataTypes: [.invited]) + invitedRoomListDataFetcherForPeople = createInvitedRoomListDataFetcherForPeople() + invitedRoomListDataFetcherForRooms = createInvitedRoomListDataFetcherForRooms() } favoritedRoomListDataFetcher = createCommonRoomListDataFetcher(withDataTypes: [.favorited]) directRoomListDataFetcherForHome = createDirectRoomListDataFetcherForHome() @@ -516,18 +554,30 @@ public class RecentsListService: NSObject, RecentsListServiceProtocol { } private func updateDirectFetcher(_ fetcher: MXRoomListDataFetcher, for mode: RecentsDataSourceMode) { - var notDataTypes: MXRoomSummaryDataTypes = [.hidden, .conferenceUser, .space] + var notDataTypes: MXRoomSummaryDataTypes = [.hidden, .conferenceUser, .space, .invited, .lowPriority] switch mode { case .home: - notDataTypes.insert([.invited, .favorited, .lowPriority]) + notDataTypes.insert(.favorited) fetcher.fetchOptions.filterOptions.notDataTypes = notDataTypes case .people: - notDataTypes.insert([.lowPriority]) fetcher.fetchOptions.filterOptions.notDataTypes = notDataTypes default: break } } + + private func updateInvitedFetcher(_ fetcher: MXRoomListDataFetcher, for mode: RecentsDataSourceMode) { + var notDataTypes: MXRoomSummaryDataTypes = [.hidden, .conferenceUser, .lowPriority, .serverNotice, .space] + switch mode { + case .people: + fetcher.fetchOptions.filterOptions.notDataTypes = notDataTypes + case .rooms: + notDataTypes.insert([.direct]) + fetcher.fetchOptions.filterOptions.notDataTypes = notDataTypes + default: + break + } + } private func updateFavoritedFetcher(_ fetcher: MXRoomListDataFetcher, for mode: RecentsDataSourceMode) { switch mode { @@ -543,15 +593,12 @@ public class RecentsListService: NSObject, RecentsListServiceProtocol { } private func updateConversationFetcher(_ fetcher: MXRoomListDataFetcher, for mode: RecentsDataSourceMode) { - var notDataTypes: MXRoomSummaryDataTypes = [.hidden, .conferenceUser, .direct, .lowPriority, .serverNotice, .space] + var notDataTypes: MXRoomSummaryDataTypes = [.hidden, .conferenceUser, .direct, .invited, .lowPriority, .serverNotice, .space] switch mode { case .home: - notDataTypes.insert([.invited, .favorited]) + notDataTypes.insert(.favorited) fetcher.fetchOptions.filterOptions.notDataTypes = notDataTypes case .rooms: - if hideInvitedSection { - notDataTypes.insert(.invited) - } fetcher.fetchOptions.filterOptions.notDataTypes = notDataTypes default: break @@ -603,7 +650,7 @@ private struct FetcherTypes: OptionSet { static let lowPriority = FetcherTypes(rawValue: 1 << 6) static let serverNotice = FetcherTypes(rawValue: 1 << 7) static let suggested = FetcherTypes(rawValue: 1 << 8) - + static let none: FetcherTypes = [] static let all: FetcherTypes = [ .invited, .favorited, .directHome, .directPeople, .conversationHome, .conversationRooms, .lowPriority, .serverNotice, .suggested] diff --git a/Riot/Modules/Common/SectionHeaders/SectionHeaderView.h b/Riot/Modules/Common/SectionHeaders/SectionHeaderView.h index 515ee86a4..b602f6c6c 100644 --- a/Riot/Modules/Common/SectionHeaders/SectionHeaderView.h +++ b/Riot/Modules/Common/SectionHeaders/SectionHeaderView.h @@ -52,6 +52,11 @@ */ @property (nonatomic, strong) UIView *accessoryView; +/** + Right accessory view for header. Both width and height will be used. + */ +@property (nonatomic, strong) UIView *rightAccessoryView; + /** A view which spans the bottom view. No frame value will be used. Height will be remaining of the view at below topViewHeight. */ diff --git a/Riot/Modules/Common/SectionHeaders/SectionHeaderView.m b/Riot/Modules/Common/SectionHeaders/SectionHeaderView.m index 54150ac8e..9c039516a 100644 --- a/Riot/Modules/Common/SectionHeaders/SectionHeaderView.m +++ b/Riot/Modules/Common/SectionHeaders/SectionHeaderView.m @@ -85,6 +85,19 @@ static const CGFloat kInterItemsSpaceHorizontal = 8.0; [self setNeedsLayout]; } +- (void)setRightAccessoryView:(UIView *)rightAccessoryView +{ + // remove old one + [_rightAccessoryView removeFromSuperview]; + _rightAccessoryView = rightAccessoryView; + if (_rightAccessoryView) + { + // add new one + [self.contentView addSubview:_rightAccessoryView]; + } + [self setNeedsLayout]; +} + - (void)setBottomView:(UIView *)bottomView { // remove old one @@ -169,6 +182,10 @@ static const CGFloat kInterItemsSpaceHorizontal = 8.0; { rightMargin += _accessoryView.frame.size.width + kInterItemsSpaceHorizontal; } + if (_rightAccessoryView) + { + rightMargin += _rightAccessoryView.frame.size.width + kInterItemsSpaceHorizontal; + } if (_bottomView) { // set header label top @@ -179,7 +196,8 @@ static const CGFloat kInterItemsSpaceHorizontal = 8.0; // center header label vertically frame.origin.y = MAX(0, (self.contentView.bounds.size.height - frame.size.height)/2); } - frame.size.width = self.contentView.bounds.size.width - leftMargin - rightMargin; + frame.size.width = MIN(self.contentView.bounds.size.width - leftMargin - rightMargin, + [_headerLabel sizeThatFits:self.frame.size].width); _headerLabel.frame = frame; } @@ -190,11 +208,30 @@ static const CGFloat kInterItemsSpaceHorizontal = 8.0; rightMargin = MAX(_rightInset, 20); CGRect frame = _accessoryView.frame; - frame.origin.x = self.contentView.bounds.size.width - frame.size.width - rightMargin; + if(_headerLabel) + { + frame.origin.x = leftMargin + _headerLabel.frame.size.width + kInterItemsSpaceHorizontal; + } + else + { + frame.origin.x = leftMargin; + } frame.origin.y = MAX(0, (_topViewHeight - frame.size.height)/2); _accessoryView.frame = frame; } + if (_rightAccessoryView) + { + // reset margins + leftMargin = MAX(_leftInset, 20); + rightMargin = MAX(_rightInset, 20); + + CGRect frame = _rightAccessoryView.frame; + frame.origin.x = self.contentView.bounds.size.width - frame.size.width - rightMargin; + frame.origin.y = MAX(0, (_topViewHeight - frame.size.height)/2); + _rightAccessoryView.frame = frame; + } + if (_bottomView) { // reset margins diff --git a/Riot/Modules/Common/Toasts/ActivityIndicatorToastPresenter.swift b/Riot/Modules/Common/Toasts/ActivityIndicatorToastPresenter.swift deleted file mode 100644 index 1c592a2a2..000000000 --- a/Riot/Modules/Common/Toasts/ActivityIndicatorToastPresenter.swift +++ /dev/null @@ -1,76 +0,0 @@ -// -// 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 Foundation -import UIKit -import CommonKit - -/// An `ActivityPresenter` responsible for showing / hiding a toast view for activity indicators, and managed by an `Activity`, -/// meaning the `present` and `dismiss` methods will be called when the parent `Activity` starts or completes. -class ActivityIndicatorToastPresenter: ActivityPresentable { - private let text: String - private weak var navigationController: UINavigationController? - private weak var view: UIView? - - init(text: String, navigationController: UINavigationController) { - self.text = text - self.navigationController = navigationController - } - - func present() { - guard let navigationController = navigationController else { - return - } - - let view = ActivityIndicatorToastView(text: text) - view.update(theme: ThemeService.shared().theme) - self.view = view - - view.translatesAutoresizingMaskIntoConstraints = false - navigationController.view.addSubview(view) - NSLayoutConstraint.activate([ - view.centerXAnchor.constraint(equalTo: navigationController.navigationBar.centerXAnchor), - view.topAnchor.constraint(equalTo: navigationController.navigationBar.bottomAnchor) - ]) - - view.alpha = 0 - view.transform = .init(translationX: 0, y: 5) - UIView.animate(withDuration: 0.2) { - view.alpha = 1 - view.transform = .identity - } - } - - func dismiss() { - guard let view = view, view.superview != nil else { - return - } - - // If `present` and `dismiss` are called right after each other without delay, - // the view does not correctly pick up `currentState` of alpha. Dispatching onto - // the main queue skips a few run loops, giving the system time to render - // current state. - DispatchQueue.main.async { - UIView.animate(withDuration: 0.2, delay: 0, options: .beginFromCurrentState) { - view.alpha = 0 - view.transform = .init(translationX: 0, y: -5) - } completion: { _ in - view.removeFromSuperview() - self.view = nil - } - } - } -} diff --git a/Riot/Modules/Common/Toasts/ActivityIndicatorToastView.swift b/Riot/Modules/Common/Toasts/ActivityIndicatorToastView.swift deleted file mode 100644 index 6964ec445..000000000 --- a/Riot/Modules/Common/Toasts/ActivityIndicatorToastView.swift +++ /dev/null @@ -1,91 +0,0 @@ -// -// 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 Foundation -import UIKit -import DesignKit - -class ActivityIndicatorToastView: UIView, Themable { - private struct Constants { - static let padding = UIEdgeInsets(top: 10, left: 12, bottom: 10, right: 12) - static let shadowOffset = CGSize(width: 0, height: 4) - static let shadowRadius = CGFloat(12) - static let shadowOpacity = Float(0.1) - } - - private let stackView: UIStackView = { - let stack = UIStackView() - stack.axis = .horizontal - stack.spacing = 5 - return stack - }() - - private let activityIndicator: UIActivityIndicatorView = { - let view = UIActivityIndicatorView() - view.transform = .init(scaleX: 0.75, y: 0.75) - view.startAnimating() - return view - }() - - private let label: UILabel = { - return UILabel() - }() - - init(text: String) { - super.init(frame: .zero) - setup(text: text) - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - private func setup(text: String) { - setupLayer() - setupStackView() - stackView.addArrangedSubview(activityIndicator) - stackView.addArrangedSubview(label) - label.text = text - } - - private func setupStackView() { - addSubview(stackView) - stackView.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: topAnchor, constant: Constants.padding.top), - stackView.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -Constants.padding.bottom), - stackView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: Constants.padding.left), - stackView.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -Constants.padding.right) - ]) - } - - private func setupLayer() { - layer.shadowColor = UIColor.black.cgColor - layer.shadowOffset = Constants.shadowOffset - layer.shadowRadius = Constants.shadowRadius - layer.shadowOpacity = Constants.shadowOpacity - } - - override func layoutSubviews() { - super.layoutSubviews() - layer.cornerRadius = layer.frame.height / 2 - } - - func update(theme: Theme) { - backgroundColor = UIColor.white - label.font = theme.fonts.subheadline - } -} diff --git a/Riot/Modules/Common/Toasts/BasicToastView.swift b/Riot/Modules/Common/Toasts/RectangleToastView.swift similarity index 98% rename from Riot/Modules/Common/Toasts/BasicToastView.swift rename to Riot/Modules/Common/Toasts/RectangleToastView.swift index a4b9a39b6..41aa3c65f 100644 --- a/Riot/Modules/Common/Toasts/BasicToastView.swift +++ b/Riot/Modules/Common/Toasts/RectangleToastView.swift @@ -17,7 +17,7 @@ import Foundation import UIKit -class BasicToastView: UIView, Themable { +class RectangleToastView: UIView, Themable { private enum Constants { static let padding: UIEdgeInsets = UIEdgeInsets(top: 16, left: 16, bottom: 16, right: 16) diff --git a/Riot/Modules/Common/Toasts/RoundedToastView.swift b/Riot/Modules/Common/Toasts/RoundedToastView.swift new file mode 100644 index 000000000..4774eadd0 --- /dev/null +++ b/Riot/Modules/Common/Toasts/RoundedToastView.swift @@ -0,0 +1,120 @@ +// +// 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 Foundation +import UIKit +import DesignKit + +class RoundedToastView: UIView, Themable { + private struct ShadowStyle { + let offset: CGSize + let radius: CGFloat + let opacity: Float + } + + private struct Constants { + static let padding = UIEdgeInsets(top: 10, left: 12, bottom: 10, right: 12) + static let activityIndicatorScale = CGFloat(0.75) + static let imageViewSize = CGFloat(15) + static let lightShadow = ShadowStyle(offset: .init(width: 0, height: 4), radius: 12, opacity: 0.1) + static let darkShadow = ShadowStyle(offset: .init(width: 0, height: 4), radius: 4, opacity: 0.2) + } + + private lazy var activityIndicator: UIActivityIndicatorView = { + let indicator = UIActivityIndicatorView() + indicator.transform = .init(scaleX: Constants.activityIndicatorScale, y: Constants.activityIndicatorScale) + indicator.startAnimating() + return indicator + }() + + private lazy var imageView: UIImageView = { + let imageView = UIImageView() + imageView.contentMode = .scaleAspectFit + imageView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + imageView.widthAnchor.constraint(equalToConstant: Constants.imageViewSize), + imageView.heightAnchor.constraint(equalToConstant: Constants.imageViewSize) + ]) + return imageView + }() + + private let stackView: UIStackView = { + let stack = UIStackView() + stack.axis = .horizontal + stack.alignment = .center + stack.spacing = 5 + return stack + }() + + private let label: UILabel = { + return UILabel() + }() + + init(viewState: ToastViewState) { + super.init(frame: .zero) + setup(viewState: viewState) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func setup(viewState: ToastViewState) { + setupStackView() + stackView.addArrangedSubview(toastView(for: viewState.style)) + stackView.addArrangedSubview(label) + label.text = viewState.label + } + + private func setupStackView() { + addSubview(stackView) + stackView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + stackView.topAnchor.constraint(equalTo: topAnchor, constant: Constants.padding.top), + stackView.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -Constants.padding.bottom), + stackView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: Constants.padding.left), + stackView.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -Constants.padding.right) + ]) + } + + override func layoutSubviews() { + super.layoutSubviews() + layer.cornerRadius = layer.frame.height / 2 + } + + func update(theme: Theme) { + backgroundColor = theme.colors.background + stackView.arrangedSubviews.first?.tintColor = theme.colors.primaryContent + label.font = theme.fonts.subheadline + label.textColor = theme.colors.primaryContent + + let shadowStyle = theme.identifier == ThemeIdentifier.dark.rawValue ? Constants.darkShadow : Constants.lightShadow + layer.shadowColor = UIColor.black.cgColor + layer.shadowOffset = shadowStyle.offset + layer.shadowRadius = shadowStyle.radius + layer.shadowOpacity = shadowStyle.opacity + } + + private func toastView(for style: ToastViewState.Style) -> UIView { + switch style { + case .loading: + return activityIndicator + case .success: + imageView.image = Asset.Images.checkmark.image + return imageView + } + } +} diff --git a/Riot/Modules/Common/Toasts/ToastViewState.swift b/Riot/Modules/Common/Toasts/ToastViewState.swift new file mode 100644 index 000000000..e241d4645 --- /dev/null +++ b/Riot/Modules/Common/Toasts/ToastViewState.swift @@ -0,0 +1,27 @@ +// +// 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 Foundation + +struct ToastViewState { + enum Style { + case loading + case success + } + + let style: Style + let label: String +} diff --git a/Riot/Modules/Common/UserIndicators/UserIndicatorPresenter.swift b/Riot/Modules/Common/UserIndicators/UserIndicatorPresenter.swift new file mode 100644 index 000000000..872a7191f --- /dev/null +++ b/Riot/Modules/Common/UserIndicators/UserIndicatorPresenter.swift @@ -0,0 +1,126 @@ +// +// 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 Foundation +import CommonKit +import MatrixSDK +import UIKit + +/// A set of user interactors commonly used across the app +enum UserIndicatorType { + case loading(label: String, isInteractionBlocking: Bool) + case success(label: String) +} + +/// A presenter which can handle `UserIndicatorType` by creating the underlying `UserIndicator` +/// and adding it to its `UserIndicatorQueue` +protocol UserIndicatorTypePresenterProtocol { + /// Present a new type of user indicator, such as loading spinner or success message. + /// + /// The presenter will internally convert the type into a `UserIndicator` and add it to its internal queue + /// of other indicators. + /// + /// If the queue is empty, the indicator will be displayed immediately, otherwise it will be pending + /// until the previously added indicators have completed / been cancelled. + /// + /// To remove an indicator, `cancel` or deallocate the returned `UserIndicator` + func present(_ type: UserIndicatorType) -> UserIndicator + + /// The queue of user indicators owned by the presenter + /// + /// Clients can access the queue to add custom `UserIndicatorRequest`s + /// above and beyond those defined by `UserIndicatorType` + var queue: UserIndicatorQueue { get } +} + +class UserIndicatorTypePresenter: UserIndicatorTypePresenterProtocol { + private weak var viewController: UIViewController? + + // In the existing app architecture it is often view controllers which instantiate + // various presenters (errors, alerts ... ) and present on self. Since the presenting view controller + // needs to be passed on init, it must be declared as weak, otherwise a retain cycle would occur. + private var presentingViewController: UIViewController { + guard let viewController = viewController else { + MXLog.error("[UserIndicatorTypePresenter]: Presenting view controller is not available") + return UIViewController() + } + return viewController + } + + let queue: UserIndicatorQueue + + init(presentingViewController: UIViewController) { + self.viewController = presentingViewController + self.queue = UserIndicatorQueue() + } + + func present(_ type: UserIndicatorType) -> UserIndicator { + let request = userIndicatorRequest(for: type) + return queue.add(request) + } + + private func userIndicatorRequest(for type: UserIndicatorType) -> UserIndicatorRequest { + switch type { + case .loading(let label, let isInteractionBlocking): + if isInteractionBlocking { + return fullScreenLoadingRequest(label: label) + } else { + return loadingRequest(label: label) + } + case .success(let label): + return successRequest(label: label) + } + } + + private func loadingRequest(label: String) -> UserIndicatorRequest { + let presenter = ToastViewPresenter( + viewState: .init( + style: .loading, + label: label + ), + presentingViewController: presentingViewController + ) + return UserIndicatorRequest( + presenter: presenter, + dismissal: .manual + ) + } + + private func fullScreenLoadingRequest(label: String) -> UserIndicatorRequest { + let presenter = FullscreenLoadingViewPresenter( + label: label, + presentingViewController: presentingViewController + ) + return UserIndicatorRequest( + presenter: presenter, + dismissal: .manual + ) + } + + private func successRequest(label: String) -> UserIndicatorRequest { + let presenter = ToastViewPresenter( + viewState: .init( + style: .success, + label: label + ), + presentingViewController: presentingViewController + ) + return UserIndicatorRequest( + presenter: presenter, + dismissal: .timeout(1.5) + ) + } +} diff --git a/Riot/Modules/Common/UserIndicators/ViewPresenters/FullscreenLoadingViewPresenter.swift b/Riot/Modules/Common/UserIndicators/ViewPresenters/FullscreenLoadingViewPresenter.swift new file mode 100644 index 000000000..5532bcb2a --- /dev/null +++ b/Riot/Modules/Common/UserIndicators/ViewPresenters/FullscreenLoadingViewPresenter.swift @@ -0,0 +1,78 @@ +// +// 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 Foundation +import CommonKit +import UIKit + +/// A presenter responsible for showing / hiding a full-screen loading view that obscures (and thus disables) all other controls. +/// It is managed by a `UserIndicator`, meaning the `present` and `dismiss` methods will be called when the parent `UserIndicator` starts or completes. +class FullscreenLoadingViewPresenter: UserIndicatorViewPresentable { + private let label: String + private weak var viewController: UIViewController? + private weak var view: UIView? + private var animator: UIViewPropertyAnimator? + + init(label: String, presentingViewController: UIViewController) { + self.label = label + self.viewController = presentingViewController + } + + func present() { + // Find the current top navigation controller + var presentingController: UIViewController? = viewController + while presentingController?.navigationController != nil { + presentingController = presentingController?.navigationController + } + guard let presentingController = presentingController else { + return + } + + let view = LabelledActivityIndicatorView(text: label) + view.update(theme: ThemeService.shared().theme) + self.view = view + + view.translatesAutoresizingMaskIntoConstraints = false + presentingController.view.addSubview(view) + NSLayoutConstraint.activate([ + view.topAnchor.constraint(equalTo: presentingController.view.topAnchor), + view.bottomAnchor.constraint(equalTo: presentingController.view.bottomAnchor), + view.leadingAnchor.constraint(equalTo: presentingController.view.leadingAnchor), + view.trailingAnchor.constraint(equalTo: presentingController.view.trailingAnchor) + ]) + + view.alpha = 0 + animator = UIViewPropertyAnimator(duration: 0.2, curve: .easeOut) { + view.alpha = 1 + } + animator?.startAnimation() + } + + func dismiss() { + guard let view = view, view.superview != nil else { + return + } + + animator?.stopAnimation(true) + animator = UIViewPropertyAnimator(duration: 0.2, curve: .easeIn) { + view.alpha = 0 + } + animator?.addCompletion { _ in + view.removeFromSuperview() + } + animator?.startAnimation() + } +} diff --git a/Riot/Modules/Common/UserIndicators/ViewPresenters/ToastViewPresenter.swift b/Riot/Modules/Common/UserIndicators/ViewPresenters/ToastViewPresenter.swift new file mode 100644 index 000000000..b56e511d2 --- /dev/null +++ b/Riot/Modules/Common/UserIndicators/ViewPresenters/ToastViewPresenter.swift @@ -0,0 +1,97 @@ +// +// 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 Foundation +import UIKit +import CommonKit +import MatrixSDK + +/// A presenter responsible for showing / hiding a toast view for loading spinners or success messages. +/// It is managed by an `UserIndicator`, meaning the `present` and `dismiss` methods will be called when the parent `UserIndicator` starts or completes. +class ToastViewPresenter: UserIndicatorViewPresentable { + struct Constants { + static let navigationBarPatting = CGFloat(10) + } + + private let viewState: ToastViewState + private weak var viewController: UIViewController? + private weak var view: UIView? + private var animator: UIViewPropertyAnimator? + + init(viewState: ToastViewState, presentingViewController: UIViewController) { + self.viewState = viewState + self.viewController = presentingViewController + } + + func present() { + guard let viewController = viewController else { + return + } + + let view = RoundedToastView(viewState: viewState) + view.update(theme: ThemeService.shared().theme) + self.view = view + + view.translatesAutoresizingMaskIntoConstraints = false + if let navigation = viewController.topNavigationController { + navigation.view.addSubview(view) + NSLayoutConstraint.activate([ + view.centerXAnchor.constraint(equalTo: navigation.view.centerXAnchor), + view.topAnchor.constraint(equalTo: navigation.navigationBar.safeAreaLayoutGuide.bottomAnchor, constant: -Constants.navigationBarPatting) + ]) + } else { + viewController.view.addSubview(view) + NSLayoutConstraint.activate([ + view.centerXAnchor.constraint(equalTo: viewController.view.centerXAnchor), + view.topAnchor.constraint(equalTo: viewController.view.topAnchor) + ]) + } + + view.alpha = 0 + view.transform = .init(translationX: 0, y: 5) + animator = UIViewPropertyAnimator(duration: 0.2, curve: .easeOut) { + view.alpha = 1 + view.transform = .identity + } + animator?.startAnimation() + } + + func dismiss() { + guard let view = view, view.superview != nil else { + return + } + + animator?.stopAnimation(true) + animator = UIViewPropertyAnimator(duration: 0.2, curve: .easeIn) { + view.alpha = 0 + view.transform = .init(translationX: 0, y: -5) + } + animator?.addCompletion { _ in + view.removeFromSuperview() + } + animator?.startAnimation() + } +} + +private extension UIViewController { + var topNavigationController: UINavigationController? { + var controller: UINavigationController? = self as? UINavigationController ?? navigationController + while controller?.navigationController != nil { + controller = controller?.navigationController + } + return controller + } +} diff --git a/Riot/Modules/Communities/GroupsViewController.m b/Riot/Modules/Communities/GroupsViewController.m index 306a4e55c..3f954e814 100644 --- a/Riot/Modules/Communities/GroupsViewController.m +++ b/Riot/Modules/Communities/GroupsViewController.m @@ -21,7 +21,7 @@ #import "GeneratedInterface-Swift.h" -@interface GroupsViewController () +@interface GroupsViewController () { // Tell whether a groups refresh is pending (suspended during editing mode). BOOL isRefreshPending; @@ -42,7 +42,7 @@ __weak id kThemeServiceDidChangeThemeNotificationObserver; } -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end @@ -77,7 +77,7 @@ // Set itself as delegate by default. self.delegate = self; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenMyGroups]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenMyGroups]; } - (void)viewDidLoad @@ -207,6 +207,8 @@ { [super viewWillAppear:animated]; + [self.screenTracker trackScreen]; + // Deselect the current selected row, it will be restored on viewDidAppear (if any) NSIndexPath *indexPath = [self.groupsTableView indexPathForSelectedRow]; if (indexPath) @@ -224,8 +226,6 @@ [self scrollToTop:YES]; }]; - - [AppDelegate theDelegate].masterTabBarController.navigationItem.title = [VectorL10n titleGroups]; [AppDelegate theDelegate].masterTabBarController.tabBar.tintColor = ThemeService.shared.theme.tintColor; } @@ -259,14 +259,6 @@ // the selected group (if any) is highlighted. [self refreshCurrentSelectedCell:YES]; } - - [self.screenTimer start]; -} - -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; } #pragma mark - Override MXKGroupListViewController @@ -581,7 +573,7 @@ currentAlert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -644,4 +636,11 @@ [self.groupsSearchBar setShowsCancelButton:NO animated:NO]; } +#pragma mark - MasterTabBarItemDisplayProtocol + +- (NSString *)masterTabBarItemTitle +{ + return [VectorL10n titleGroups]; +} + @end diff --git a/Riot/Modules/Communities/Home/GroupHomeViewController.m b/Riot/Modules/Communities/Home/GroupHomeViewController.m index a5a48ebba..e1d940a99 100644 --- a/Riot/Modules/Communities/Home/GroupHomeViewController.m +++ b/Riot/Modules/Communities/Home/GroupHomeViewController.m @@ -48,7 +48,7 @@ @property (nonatomic, readonly) DTHTMLAttributedStringBuilderWillFlushCallback longDescriptionSanitizationCallback; -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end @@ -98,7 +98,7 @@ [element sanitizeWith:allowedHTMLTags bodyFont:self->_groupLongDescription.font imageHandler:[self groupLongDescriptionImageHandler]]; }; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenGroup]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenGroup]; } - (void)viewDidLoad @@ -209,6 +209,8 @@ { [super viewWillAppear:animated]; + [self.screenTracker trackScreen]; + // Release the potential pushed view controller [self releasePushedViewController]; @@ -260,18 +262,6 @@ [self cancelRegistrationOnGroupChangeNotifications]; } -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; - [self.screenTimer start]; -} - -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; -} - - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; @@ -773,7 +763,7 @@ avatarFullScreenView.stretchable = YES; MXWeakify(self); - [avatarFullScreenView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { + [avatarFullScreenView setRightButtonTitle:[VectorL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { MXStrongifyAndReturnIfNil(self); [avatarFullScreenView dismissSelection]; diff --git a/Riot/Modules/Communities/Members/GroupParticipantsViewController.m b/Riot/Modules/Communities/Members/GroupParticipantsViewController.m index 26cf2b02d..7d2b1a03b 100644 --- a/Riot/Modules/Communities/Members/GroupParticipantsViewController.m +++ b/Riot/Modules/Communities/Members/GroupParticipantsViewController.m @@ -1056,7 +1056,7 @@ message:[VectorL10n groupParticipantsLeavePromptMsg] preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1107,7 +1107,7 @@ message:promptMsg preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1130,7 +1130,7 @@ MXLogDebug(@"[GroupParticipantsVC] Kick %@ failed", memberUserId); // Alert user - [[AppDelegate theDelegate] showErrorAsAlert:[NSError errorWithDomain:@"GroupDomain" code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]]; + [[AppDelegate theDelegate] showErrorAsAlert:[NSError errorWithDomain:@"GroupDomain" code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]]; } }]]; @@ -1159,7 +1159,7 @@ message:promptMsg preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1188,7 +1188,7 @@ participantId = identifiers.firstObject; MXLogDebug(@"[GroupParticipantsVC] Invite %@ failed", participantId); - [[AppDelegate theDelegate] showErrorAsAlert:[NSError errorWithDomain:@"GroupDomain" code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]]; + [[AppDelegate theDelegate] showErrorAsAlert:[NSError errorWithDomain:@"GroupDomain" code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]]; } } diff --git a/Riot/Modules/Contacts/ContactsTableViewController.h b/Riot/Modules/Contacts/ContactsTableViewController.h index 97c02515b..e1a3bc892 100644 --- a/Riot/Modules/Contacts/ContactsTableViewController.h +++ b/Riot/Modules/Contacts/ContactsTableViewController.h @@ -19,7 +19,7 @@ #import "ContactTableViewCell.h" @class ContactsTableViewController; -@class AnalyticsScreenTimer; +@class AnalyticsScreenTracker; /** `ContactsTableViewController` delegate. @@ -123,7 +123,7 @@ /** The screen timer used for analytics if they've been enabled. The default value is nil. */ -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end diff --git a/Riot/Modules/Contacts/ContactsTableViewController.m b/Riot/Modules/Contacts/ContactsTableViewController.m index badf8a085..9f97d97fb 100644 --- a/Riot/Modules/Contacts/ContactsTableViewController.m +++ b/Riot/Modules/Contacts/ContactsTableViewController.m @@ -179,12 +179,7 @@ // Show the contacts access footer if necessary. [self updateFooterViewVisibility]; -} - -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; - [self.screenTimer start]; + [self.screenTracker trackScreen]; } - (void)viewDidLayoutSubviews @@ -211,12 +206,6 @@ } } -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; -} - #pragma mark - /** @@ -574,7 +563,7 @@ message:nil preferredStyle:UIAlertControllerStyleAlert]; - [alertController addAction:[UIAlertAction actionWithTitle:MatrixKitL10n.ok + [alertController addAction:[UIAlertAction actionWithTitle:VectorL10n.ok style:UIAlertActionStyleDefault handler:nil]]; diff --git a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m index 9a2935903..2448400b2 100644 --- a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m +++ b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m @@ -625,7 +625,7 @@ if (indexPath.section == filteredMatrixContactsSection && (_userDirectoryState == ContactsDataSourceUserDirectoryStateLoading || _userDirectoryState == ContactsDataSourceUserDirectoryStateOfflineLoading)) { - tableViewCell.textLabel.text = [MatrixKitL10n searchSearching]; + tableViewCell.textLabel.text = [VectorL10n searchSearching]; } else { diff --git a/Riot/Modules/Contacts/Details/ContactDetailsViewController.m b/Riot/Modules/Contacts/Details/ContactDetailsViewController.m index fe2b2d6e1..bc1815a41 100644 --- a/Riot/Modules/Contacts/Details/ContactDetailsViewController.m +++ b/Riot/Modules/Contacts/Details/ContactDetailsViewController.m @@ -877,9 +877,9 @@ // Prompt user to ignore content from this user __weak __typeof(self) weakSelf = self; [currentAlert dismissViewControllerAnimated:NO completion:nil]; - currentAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n roomMemberIgnorePrompt] message:nil preferredStyle:UIAlertControllerStyleAlert]; + currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomMemberIgnorePrompt] message:nil preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n yes] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n yes] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -908,7 +908,7 @@ }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n no] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n no] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -986,10 +986,10 @@ { [self removePendingActionMask]; - UIAlertController *alert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] + UIAlertController *alert = [UIAlertController alertControllerWithTitle:[VectorL10n error] message:[VectorL10n roomParticipantsStartNewChatErrorUsingUserEmailWithoutIdentityServer] preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:nil]]; + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:nil]]; [self presentViewController:alert animated:YES completion:nil]; return; @@ -1140,7 +1140,7 @@ avatarFullScreenView.stretchable = YES; MXWeakify(self); - [avatarFullScreenView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { + [avatarFullScreenView setRightButtonTitle:[VectorL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { MXStrongifyAndReturnIfNil(self); [avatarFullScreenView dismissSelection]; diff --git a/Riot/Modules/CreateRoom/EnterNewRoomDetails/EnterNewRoomDetailsViewController.swift b/Riot/Modules/CreateRoom/EnterNewRoomDetails/EnterNewRoomDetailsViewController.swift index 914f3ce67..00511c65a 100644 --- a/Riot/Modules/CreateRoom/EnterNewRoomDetails/EnterNewRoomDetailsViewController.swift +++ b/Riot/Modules/CreateRoom/EnterNewRoomDetails/EnterNewRoomDetailsViewController.swift @@ -55,7 +55,7 @@ final class EnterNewRoomDetailsViewController: UIViewController { item.isEnabled = false return item }() - private var screenTimer = AnalyticsScreenTimer(screen: .createRoom) + private var screenTracker = AnalyticsScreenTracker(screen: .createRoom) private enum RowType { case `default` @@ -216,11 +216,7 @@ final class EnterNewRoomDetailsViewController: UIViewController { super.viewWillAppear(animated) self.keyboardAvoider?.startAvoiding() - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - screenTimer.start() + screenTracker.trackScreen() } override func viewDidDisappear(_ animated: Bool) { @@ -228,7 +224,6 @@ final class EnterNewRoomDetailsViewController: UIViewController { self.keyboardAvoider?.stopAvoiding() - screenTimer.stop() } override var preferredStatusBarStyle: UIStatusBarStyle { diff --git a/Riot/Modules/Favorites/FavouritesViewController.m b/Riot/Modules/Favorites/FavouritesViewController.m index 62ef8cd8f..eb9499359 100644 --- a/Riot/Modules/Favorites/FavouritesViewController.m +++ b/Riot/Modules/Favorites/FavouritesViewController.m @@ -19,7 +19,7 @@ #import "RecentsDataSource.h" #import "GeneratedInterface-Swift.h" -@interface FavouritesViewController () +@interface FavouritesViewController () { RecentsDataSource *recentsDataSource; } @@ -43,7 +43,7 @@ self.enableDragging = YES; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenFavourites]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenFavourites]; self.tableViewPaginationThrottler = [[MXThrottler alloc] initWithMinimumDelay:0.1]; } @@ -62,14 +62,11 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - - [AppDelegate theDelegate].masterTabBarController.navigationItem.title = [VectorL10n titleFavourites]; [AppDelegate theDelegate].masterTabBarController.tabBar.tintColor = ThemeService.shared.theme.tintColor; if (recentsDataSource) { // Take the lead on the shared data source. - recentsDataSource.areSectionsShrinkable = NO; [recentsDataSource setDelegate:self andRecentsDataSourceMode:RecentsDataSourceModeFavourites]; } } @@ -163,4 +160,11 @@ } } +#pragma mark - MasterTabBarItemDisplayProtocol + +- (NSString *)masterTabBarItemTitle +{ + return [VectorL10n titleFavourites]; +} + @end diff --git a/Riot/Modules/GlobalSearch/Files/CellData/FilesSearchCellData.m b/Riot/Modules/GlobalSearch/Files/CellData/FilesSearchCellData.m index 5a183820f..b77185d10 100644 --- a/Riot/Modules/GlobalSearch/Files/CellData/FilesSearchCellData.m +++ b/Riot/Modules/GlobalSearch/Files/CellData/FilesSearchCellData.m @@ -103,7 +103,7 @@ roomDisplayName = room.summary.displayname; if (!roomDisplayName.length) { - roomDisplayName = [MatrixKitL10n roomDisplaynameEmptyRoom]; + roomDisplayName = [VectorL10n roomDisplaynameEmptyRoom]; } } else diff --git a/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.h b/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.h index 71db0b6bc..e628ec7db 100644 --- a/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.h +++ b/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.h @@ -17,7 +17,7 @@ #import "MatrixKit.h" -@class AnalyticsScreenTimer; +@class AnalyticsScreenTracker; /** `HomeFilesSearchViewController` displays the files search in user's rooms under a `HomeViewController` segment. @@ -32,6 +32,6 @@ /** The screen timer used for analytics if they've been enabled. The default value is nil. */ -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end diff --git a/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.m b/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.m index d51cfaa64..84ab44030 100644 --- a/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.m +++ b/Riot/Modules/GlobalSearch/Files/HomeFilesSearchViewController.m @@ -111,6 +111,8 @@ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshSearchResult:) name:kMXSessionDidLeaveRoomNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshSearchResult:) name:kMXSessionNewRoomNotification object:nil]; + + [self.screenTracker trackScreen]; } - (void)viewWillDisappear:(BOOL)animated @@ -121,18 +123,6 @@ [[NSNotificationCenter defaultCenter] removeObserver:self name:kMXSessionNewRoomNotification object:nil]; } -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; - [self.screenTimer start]; -} - -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; -} - #pragma mark - - (void)refreshSearchResult:(NSNotification *)notif diff --git a/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.h b/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.h index 9fdb9880a..0f28b4bef 100644 --- a/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.h +++ b/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.h @@ -17,7 +17,7 @@ #import "MatrixKit.h" -@class AnalyticsScreenTimer; +@class AnalyticsScreenTracker; /** `HomeMessagesSearchViewController` displays messages search in user's rooms under a `HomeViewController` segment. @@ -32,6 +32,6 @@ /** The screen timer used for analytics if they've been enabled. The default value is nil. */ -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end diff --git a/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.m b/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.m index 8ba3d8241..c3c42fb07 100644 --- a/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.m +++ b/Riot/Modules/GlobalSearch/Messages/HomeMessagesSearchViewController.m @@ -118,6 +118,8 @@ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshSearchResult:) name:kMXSessionDidLeaveRoomNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshSearchResult:) name:kMXSessionNewRoomNotification object:nil]; + + [self.screenTracker trackScreen]; } - (void)viewWillDisappear:(BOOL)animated @@ -128,18 +130,6 @@ [[NSNotificationCenter defaultCenter] removeObserver:self name:kMXSessionNewRoomNotification object:nil]; } -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; - [self.screenTimer start]; -} - -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; -} - #pragma mark - - (void)refreshSearchResult:(NSNotification *)notif diff --git a/Riot/Modules/GlobalSearch/Messages/Views/MessagesSearchResultAttachmentBubbleCell.m b/Riot/Modules/GlobalSearch/Messages/Views/MessagesSearchResultAttachmentBubbleCell.m index 074013b5b..561b0aac5 100644 --- a/Riot/Modules/GlobalSearch/Messages/Views/MessagesSearchResultAttachmentBubbleCell.m +++ b/Riot/Modules/GlobalSearch/Messages/Views/MessagesSearchResultAttachmentBubbleCell.m @@ -46,7 +46,7 @@ self.roomNameLabel.text = room.summary.displayname; if (!self.roomNameLabel.text.length) { - self.roomNameLabel.text = [MatrixKitL10n roomDisplaynameEmptyRoom]; + self.roomNameLabel.text = [VectorL10n roomDisplaynameEmptyRoom]; } } else diff --git a/Riot/Modules/GlobalSearch/Rooms/DirectoryViewController.m b/Riot/Modules/GlobalSearch/Rooms/DirectoryViewController.m index be2904f17..e0ab0f218 100644 --- a/Riot/Modules/GlobalSearch/Rooms/DirectoryViewController.m +++ b/Riot/Modules/GlobalSearch/Rooms/DirectoryViewController.m @@ -35,7 +35,7 @@ id kThemeServiceDidChangeThemeNotificationObserver; } -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end @@ -49,7 +49,7 @@ self.enableBarTintColorStatusChange = NO; self.rageShakeManager = [RageShakeManager sharedManager]; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenRoomDirectory]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenRoomDirectory]; } - (void)viewDidLoad @@ -119,6 +119,7 @@ }]; [self.tableView reloadData]; + [self.screenTracker trackScreen]; } - (void)viewDidAppear:(BOOL)animated @@ -136,8 +137,6 @@ // the selected room (if any) is highlighted. [self refreshCurrentSelectedCell:YES]; } - - [self.screenTimer start]; } - (void)viewWillDisappear:(BOOL)animated @@ -151,12 +150,6 @@ [super viewWillDisappear:animated]; } -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; -} - - (void)displayWitDataSource:(PublicRoomsDirectoryDataSource *)dataSource2 { // Let the data source provide cells diff --git a/Riot/Modules/GlobalSearch/UnifiedSearchViewController.m b/Riot/Modules/GlobalSearch/UnifiedSearchViewController.m index f701d8b08..d2c363194 100644 --- a/Riot/Modules/GlobalSearch/UnifiedSearchViewController.m +++ b/Riot/Modules/GlobalSearch/UnifiedSearchViewController.m @@ -79,13 +79,13 @@ [titles addObject:[VectorL10n searchRooms]]; recentsViewController = [RecentsViewController recentListViewController]; - recentsViewController.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenSearchRooms]; + recentsViewController.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenSearchRooms]; recentsViewController.enableSearchBar = NO; [viewControllers addObject:recentsViewController]; [titles addObject:[VectorL10n searchMessages]]; messagesSearchViewController = [HomeMessagesSearchViewController searchViewController]; - messagesSearchViewController.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenSearchMessages]; + messagesSearchViewController.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenSearchMessages]; [viewControllers addObject:messagesSearchViewController]; // Add search People tab @@ -93,13 +93,13 @@ peopleSearchViewController = [ContactsTableViewController contactsTableViewController]; peopleSearchViewController.contactsTableViewControllerDelegate = self; peopleSearchViewController.disableFindYourContactsFooter = YES; - peopleSearchViewController.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenSearchPeople]; + peopleSearchViewController.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenSearchPeople]; [viewControllers addObject:peopleSearchViewController]; // add Files tab [titles addObject:[VectorL10n searchFiles]]; filesSearchViewController = [HomeFilesSearchViewController searchViewController]; - filesSearchViewController.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenSearchFiles]; + filesSearchViewController.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenSearchFiles]; [viewControllers addObject:filesSearchViewController]; [self initWithTitles:titles viewControllers:viewControllers defaultSelected:0]; diff --git a/Riot/Modules/Home/Fallback/AuthFallBackViewController.m b/Riot/Modules/Home/Fallback/AuthFallBackViewController.m index 50f7b5f5c..78b66dd80 100644 --- a/Riot/Modules/Home/Fallback/AuthFallBackViewController.m +++ b/Riot/Modules/Home/Fallback/AuthFallBackViewController.m @@ -102,14 +102,14 @@ NSString *FallBackViewControllerJavascriptOnLogin = @"window.matrixLogin.onLogin } else { - title = [MatrixKitL10n error]; + title = [VectorL10n error]; } } MXWeakify(self); UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); diff --git a/Riot/Modules/Home/HomeViewController.m b/Riot/Modules/Home/HomeViewController.m index e94b4c472..c627650af 100644 --- a/Riot/Modules/Home/HomeViewController.m +++ b/Riot/Modules/Home/HomeViewController.m @@ -70,7 +70,7 @@ selectedRoomId = nil; selectedCollectionViewContentOffset = -1; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenHome]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenHome]; self.collectionViewPaginationThrottler = [[MXThrottler alloc] initWithMinimumDelay:0.1]; } @@ -103,8 +103,6 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - - [AppDelegate theDelegate].masterTabBarController.navigationItem.title = [VectorL10n titleHome]; [ThemeService.shared.theme applyStyleOnNavigationBar:[AppDelegate theDelegate].masterTabBarController.navigationController.navigationBar]; @@ -113,7 +111,6 @@ if (recentsDataSource) { // Take the lead on the shared data source. - recentsDataSource.areSectionsShrinkable = NO; [recentsDataSource setDelegate:self andRecentsDataSourceMode:RecentsDataSourceModeHome]; } @@ -307,7 +304,7 @@ }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -373,9 +370,16 @@ { // Edit the potential selected room (see `onCollectionViewCellLongPress`). editedRoomId = selectedRoomId; - - // Each rooms section is represented by only one collection view. - return 1; + + if ([recentsDataSource isSectionShrinkedAt:section]) + { + return 0; + } + else + { + // Each rooms section is represented by only one collection view. + return 1; + } } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath diff --git a/Riot/Modules/Home/VersionCheck/HomeViewControllerWithBannerWrapperViewController.swift b/Riot/Modules/Home/VersionCheck/HomeViewControllerWithBannerWrapperViewController.swift index 1c6c24173..19d8ce879 100644 --- a/Riot/Modules/Home/VersionCheck/HomeViewControllerWithBannerWrapperViewController.swift +++ b/Riot/Modules/Home/VersionCheck/HomeViewControllerWithBannerWrapperViewController.swift @@ -16,7 +16,7 @@ import Foundation -class HomeViewControllerWithBannerWrapperViewController: UIViewController, MXKViewControllerActivityHandling, BannerPresentationProtocol { +class HomeViewControllerWithBannerWrapperViewController: UIViewController, MXKViewControllerActivityHandling, BannerPresentationProtocol, MasterTabBarItemDisplayProtocol { @objc let homeViewController: HomeViewController private var bannerContainerView: UIView! @@ -56,7 +56,7 @@ class HomeViewControllerWithBannerWrapperViewController: UIViewController, MXKVi stackView.addArrangedSubview(homeViewController.view) homeViewController.didMove(toParent: self) } - + // MARK: - BannerPresentationProtocol func presentBannerView(_ bannerView: UIView, animated: Bool) { @@ -107,4 +107,10 @@ class HomeViewControllerWithBannerWrapperViewController: UIViewController, MXKVi func stopActivityIndicator() { homeViewController.stopActivityIndicator() } + + // MARK: - MasterTabBarItemDisplayProtocol + + var masterTabBarItemTitle: String { + return VectorL10n.titleHome + } } diff --git a/Riot/Modules/Integrations/IntegrationManagerViewController.m b/Riot/Modules/Integrations/IntegrationManagerViewController.m index 56dead207..d67628d62 100644 --- a/Riot/Modules/Integrations/IntegrationManagerViewController.m +++ b/Riot/Modules/Integrations/IntegrationManagerViewController.m @@ -726,7 +726,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ"; message:message preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [self withdrawViewControllerAnimated:YES completion:nil]; diff --git a/Riot/Modules/Integrations/WidgetPicker/WidgetPickerViewController.m b/Riot/Modules/Integrations/WidgetPicker/WidgetPickerViewController.m index 74e8f2f22..cdab60550 100644 --- a/Riot/Modules/Integrations/WidgetPicker/WidgetPickerViewController.m +++ b/Riot/Modules/Integrations/WidgetPicker/WidgetPickerViewController.m @@ -95,7 +95,7 @@ } // Cancel - alertAction = [UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + alertAction = [UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:nil]; [self.alertController addAction:alertAction]; diff --git a/Riot/Modules/Integrations/Widgets/WidgetViewController.m b/Riot/Modules/Integrations/Widgets/WidgetViewController.m index 77056bcb0..2238a5480 100644 --- a/Riot/Modules/Integrations/Widgets/WidgetViewController.m +++ b/Riot/Modules/Integrations/Widgets/WidgetViewController.m @@ -143,14 +143,14 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse } else { - title = [MatrixKitL10n error]; + title = [VectorL10n error]; } } __weak __typeof__(self) weakSelf = self; UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -334,7 +334,7 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse }]]; } - [menu addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [menu addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { }]]; diff --git a/Riot/Modules/KeyVerification/Common/ScanConfirmation/KeyVerificationScanConfirmationViewController.swift b/Riot/Modules/KeyVerification/Common/ScanConfirmation/KeyVerificationScanConfirmationViewController.swift index ff46e3c05..2263529cd 100644 --- a/Riot/Modules/KeyVerification/Common/ScanConfirmation/KeyVerificationScanConfirmationViewController.swift +++ b/Riot/Modules/KeyVerification/Common/ScanConfirmation/KeyVerificationScanConfirmationViewController.swift @@ -119,8 +119,8 @@ final class KeyVerificationScanConfirmationViewController: UIViewController { self.confirmButton.layer.masksToBounds = true self.rejectButton.layer.masksToBounds = true - self.confirmButton.setTitle(MatrixKitL10n.yes, for: .normal) - self.rejectButton.setTitle(MatrixKitL10n.no, for: .normal) + self.confirmButton.setTitle(VectorL10n.yes, for: .normal) + self.rejectButton.setTitle(VectorL10n.no, for: .normal) self.rejectButton.actionStyle = .cancel } diff --git a/Riot/Modules/KeyVerification/Common/Verify/Scanning/KeyVerificationVerifyByScanningViewController.swift b/Riot/Modules/KeyVerification/Common/Verify/Scanning/KeyVerificationVerifyByScanningViewController.swift index 7c675bb69..c68e4f358 100644 --- a/Riot/Modules/KeyVerification/Common/Verify/Scanning/KeyVerificationVerifyByScanningViewController.swift +++ b/Riot/Modules/KeyVerification/Common/Verify/Scanning/KeyVerificationVerifyByScanningViewController.swift @@ -275,7 +275,7 @@ final class KeyVerificationVerifyByScanningViewController: UIViewController { message: VectorL10n.keyVerificationVerifyQrCodeScanOtherCodeSuccessMessage, preferredStyle: .alert) - let okAction = UIAlertAction(title: MatrixKitL10n.ok, style: .default, handler: { _ in + let okAction = UIAlertAction(title: VectorL10n.ok, style: .default, handler: { _ in completion() }) alert.addAction(okAction) diff --git a/Riot/Modules/KeyVerification/User/UserVerificationCoordinator.swift b/Riot/Modules/KeyVerification/User/UserVerificationCoordinator.swift index 64489b091..55565fb9d 100644 --- a/Riot/Modules/KeyVerification/User/UserVerificationCoordinator.swift +++ b/Riot/Modules/KeyVerification/User/UserVerificationCoordinator.swift @@ -134,7 +134,7 @@ final class UserVerificationCoordinator: NSObject, UserVerificationCoordinatorTy message: VectorL10n.keyVerificationBootstrapNotSetupMessage, preferredStyle: .alert) - let cancelAction = UIAlertAction(title: MatrixKitL10n.ok, style: .cancel) + let cancelAction = UIAlertAction(title: VectorL10n.ok, style: .cancel) alert.addAction(cancelAction) self.presenter.toPresentable().present(alert, animated: true, completion: nil) diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ar.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ar.lproj/MatrixKit.strings deleted file mode 100644 index fd6b76f33..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ar.lproj/MatrixKit.strings +++ /dev/null @@ -1,549 +0,0 @@ - - -"show_details" = "إظهَارُ التَّفاصيل"; -"cancel_download" = "إلغَاءُ التَّنزيل"; -"cancel_upload" = "إلغَاءُ الرَّفع"; -"select_all" = "تَحدِيدُ الكُل"; -"resend_message" = "إعادَةُ إرسَالِ الرِّسالَة"; -"reset_to_default" = "إعادَةُ الضَّبط إلى الاِفتِراضي"; -"invite_user" = "دَعوَة مُستَخدِمِ matrix"; -"capture_media" = "اِلتِقَاطُ صُّورة/مَقطَعَ مَرئيّ"; -"attach_media" = "إرفاقُ وسائطٍ مِنَ المَكتَبَة"; -"select_account" = "حَدِّد حِسَابًا"; -"mention" = "الذِّكْر"; -"start_video_call" = "بَدءُ مُكالَمَةٍ مَرئيَّة"; -"start_voice_call" = "بَدءُ مُكالَمَةٍ صَوتيَّة"; -"start_chat" = "بَدءُ مُحادَثَة"; -"login_error_resource_limit_exceeded_contact_button" = "التَّواصُل مع المُدير"; -"login_error_resource_limit_exceeded_message_contact" = "\n\nيُرجَى التَّواصُل مَعَ مُدير خِدمَتك لِمُواصَلَة اِستِخدام هَذِهِ الخِدمَة."; -"set_admin" = "تَعيِينُ مُدير"; -"set_moderator" = "تَعيِينُ مُشرِف"; -"set_default_power_level" = "إعادَة ضَبط مُستَوى القُوَّة"; -"set_power_level" = "ضَبط مُستَوى القُوَّة"; -"submit_code" = "تَسلِيم الرَّمز"; -"submit" = "التَّسلِيم"; -"sign_up" = "الاِشتِراك"; -"retry" = "إعادَةُ المُحاوَلة"; -"dismiss" = "إبعَاد"; -"discard" = "اِستِبعاد"; -"continue" = "الاِستِمرار"; -"close" = "إغلاق"; -"back" = "الرُّجُوع"; -"abort" = "إِجهَاض"; -"yes" = "نَعَم"; - -// Action -"no" = "لَا"; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "هَذَا الخادِم الرَّئيس قَد وَصَلَ إلى حَدّه الشَّهري للمُستخدِم النَّشِط."; -"login_error_resource_limit_exceeded_message_default" = "هَذَا الخادِم الرَّئيس قَد تَجاوزَ أحَد حُدُود مَوارِده."; -"login_error_resource_limit_exceeded_title" = "تَمَّ تَجاوُز حَدّ المَورِد"; -"login_email_placeholder" = "عُنوان بَريد إلِكتُرونيّ"; -"login_email_info" = "إنَّ تَعيِين عُنوان بَريد إلِكتُرونيّ يُتيحُ لِلمُستَخدِمين الآخَرين العُثُور عَلَيك في Matrix بِشَكل أسهَل، وَيَمنَحُكَ طَريقَة لِإعادَة تَعيِين كَلِمة المُرُور الخاصَّة بِك في المُستَقبَل."; -"login_desktop_device" = "سَطح مَكتَب"; -"login_tablet_device" = "لَوحي"; -"login_mobile_device" = "هَاتِف"; -"login_error_forgot_password_is_not_supported" = "نِسيان كَلِمَة المُرُور غَير مَدعُوم حاليًا"; -"register_error_title" = "فَشَلَ التَّسجِيل"; -"login_invalid_param" = "مُعامِل غَير صَالِح"; -"login_leave_fallback" = "إلغَاء"; -"login_use_fallback" = "اِستِخدام صَفحَة اِحتياطيَّة بَديلَة"; -"login_error_user_in_use" = "إنَّ اِسم المُستَخدِم هَذَا مُستخدَمٌ بِالفِعل"; -"login_error_limit_exceeded" = "لَقَد أُرسِلَت العَديد مِنَ الطَّلَبات"; -"login_error_not_json" = "لَم يَحتَوي عَلَى JSON صالِح"; -"login_error_bad_json" = "إنَّ JSON مُشَوَّه"; -"login_error_unknown_token" = "لَم يَتِمّ التَّعرُّف عَلَى رَمز الوُصُول المَذكُور"; -"login_error_forbidden" = "اِسم مُستَخدِم/كَلِمَةُ مُرُور غَير صالِحَة"; -"login_error_registration_is_not_supported" = "إنَّ التَّسجِيل غَير مَدعوم حاليًا"; -"login_error_do_not_support_login_flows" = "حاليًا، نَحنُ لا نَدعَم أيًا مِن تَدَفُقات تَسجيل الدُّخُول المُعَرَّفة بِواسِطَة هَذَا الخادِم الرَّئيس"; -"login_error_no_login_flow" = "لَقَد فَشلنَا في اِستِرداد بَيَانات المُصادَقَة مِن هَذَا الخادِم الرَّئيس"; -"login_error_title" = "فَشَلَ تَسجيلُ الدُّخُول"; -"login_prompt_email_token" = "يُرجى إدخال رَمز التَّحقُّق مِنَ البَريد الإلِكتُرونيّ الخاص بِك:"; -"login_user_id_placeholder" = "مُعَرِّف Matrix (مِثل bob:matrix.org@ أو bob)"; -"login_display_name_placeholder" = "الاِسم الظّاهِر (مِثل. محمد عبدالله)"; -"login_optional_field" = "اِختياري"; -"login_password_placeholder" = "كَلِمَةُ المُرُور"; -"login_identity_server_info" = "تُوَفِّرُ Matrix خَوادِم هُويَّة لتَتَبُع عَناوين البَريد الإلِكتُرونيّ وَما إلى ذَلِكَ مِنَ الَّتي تَنتَمي إلى مُعَرِّفات Matrix. فَقَط https://matrix.org مُتَوَفِّر حاليًا."; -"login_identity_server_title" = "عُنوان URL لِخادِم الهُويَّة:"; -"login_home_server_info" = "الخادِم الرَّئيس الخاصّ بِك يُخَزِّنُ جَميع مُحادَثاتك وَمَعلُومات حِسابك"; -"login_home_server_title" = "عُنوان URL لِلخادِم الرَّئيس:"; -"login_server_url_placeholder" = "عُنوان URL (مِثل https://matrix.org)"; - -// Login Screen -"login_create_account" = "إنشاءُ حِساب:"; -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "Matrix"; -"notice_encrypted_message" = "رِسَالَةٌ مُعمّاة"; -"notice_room_related_groups" = "المَجمُوعاتُ المُرتَبِطَةُ بِهَذِهِ الغُرفَةِ هِيَ: %@"; -"notice_room_aliases_for_dm" = "الاَسماءُ البَديلَة هِيَ: %@"; -"notice_room_aliases" = "الاَسماءُ البَديلَة لِلغُرفَة هِيَ: %@"; -"notice_room_power_level_event_requirement" = "مُستَوى القُوَّة الأدنَى المُتَعلِّقُ بِالأحداث هُوَ:"; -"notice_room_power_level_acting_requirement" = "مُستَوى القُوَّة الأدنَى الَّذي يَجِبُ عَلَى المُستَخدِم اِمتِلاكُه قَبلَ التَّفاعُل هُوَ:"; -"notice_room_power_level_intro_for_dm" = "مُستَوى القُوَّة لِلأعضاءِ هُوَ:"; -"notice_room_power_level_intro" = "مُستَوى القُوَّة لِأعضاءِ الغُرفَة هُوَ:"; -"notice_room_join_rule_public_by_you_for_dm" = "أنتَ قَد جَعلتَ هَذِهِ عَامَّة."; -"notice_room_join_rule_public_by_you" = "أنتَ قَد جَعلتَ الغُرفَةَ عَامَّة."; -"notice_room_join_rule_public_for_dm" = "لَقَد جَعَلَ %@ هَذِهِ عَامَّة."; -"notice_room_join_rule_public" = "لَقَد جَعَلَ %@ الغُرفَةَ عَامَّة."; -"notice_room_join_rule_invite_by_you_for_dm" = "أنتَ قَد جَعلتَ هَذِهِ بالدَّعوَةِ فَقَط."; -"notice_room_join_rule_invite_by_you" = "أنتَ قَد جَعلتَ الغُرفَةَ بالدَّعوَةِ فَقَط."; -"notice_room_join_rule_invite_for_dm" = "لَقَد جَعَلَ %@ هَذِهِ بِالدَّعوَةِ فَقَط."; -// New -"notice_room_join_rule_invite" = "لَقَد جَعَلَ %@ الغُرفَةَ بِالدَّعوَةِ فَقَط."; -// Old -"notice_room_join_rule" = "قاعِدَة الاِنضِمام هِيَ: %@"; -"notice_room_created_for_dm" = "لَقَد اِنضَمَّ %@."; -"notice_room_created" = "لَقَد أنشأ %@ الغُرفَة وَهَيَّأَها."; -"notice_profile_change_redacted" = "لَقَد حدَّثَ %@ مَلفَّهُ الشَّخصي %@"; -"notice_event_redacted_reason" = " [السَّبَب: %@]"; -"notice_event_redacted_by" = " بِواسِطَة %@"; -"notice_event_redacted" = "<مُنَقَّح%@>"; -"notice_room_topic_removed" = "لَقَد أزالَ %@ المَوضُوع"; -"notice_room_name_removed_for_dm" = "لَقَد أزالَ %@ الاِسم"; -"notice_room_name_removed" = "لَقَد أزالَ %@ اِسمَ الغُرفَة"; - -// Events formatter -"notice_avatar_changed_too" = "(غُيِّرَت الصُّورَة الرَّمزية أيضًا)"; -"unignore" = "إلغَاءُ التَّجاهُل"; -"ignore" = "تَجاهُل"; -"end_call" = "إنهَاءُ المُكالَمَة"; -"reject_call" = "رَفضُ المُكالَمَة"; -"answer_call" = "الإجابَةُ عَلَى المُكالَمَة"; -"attachment_multiselection_original" = "الحَجمُ الفِعلي"; -"attachment_multiselection_size_prompt" = "هَل تُريدُ إِرسَالَ الصُّوَرِ كَـ :"; -"attachment_cancel_upload" = "إلغَاء الرَّفع؟"; -"attachment_cancel_download" = "إلغَاء التَّنزيل؟"; -"attachment_large" = "كَبير: %@"; -"attachment_medium" = "مُتَوَسِّط: %@"; -"attachment_small" = "صَغير: %@"; -"attachment_original" = "الحَجمُ الفِعلي: %@"; - -// Attachment -"attachment_size_prompt" = "هَل تُريدُ الإِرسَالَ كَـ :"; -"room_member_power_level_prompt" = "لَن تَكُونَ قَادِرًا عَلَى التَّراجُع عَن هَذا التَّغيِير فَأنتَ تُرَقِّي المُستَخدِم لِيَكُونَ لَهُ نَفس مُستَوى القُوَّة الَّذِي لدَيك.\nهَل أَنتَ مُتَأكِّد؟"; - -// Room members -"room_member_ignore_prompt" = "هَل أنتَ مُتَأكِّدٌ مِن رَغبَتِكَ فِي إخفَاءِ جَميعِ الرَّسَائِل عَن هَذَا المُستَخدِم؟"; -"message_reply_to_message_to_reply_to_prefix" = "رَدًّا عَلَى"; -"message_reply_to_sender_sent_a_file" = "أرسَلَ مَلَفّ."; -"message_reply_to_sender_sent_a_video" = "أرسَلَ مَقطَعًا مَرئيًا."; -"message_reply_to_sender_sent_an_audio_file" = "أرسَلَ مَلَفًّا صَوتيًا."; - -// Reply to message -"message_reply_to_sender_sent_an_image" = "أرسَلَ صُورَةَ."; -"room_no_conference_call_in_encrypted_rooms" = "إنَّ مُكالَمَاتُ الاِجتِمَاع غَيرُ مَدعُومَةٍ فِي الغُرَفِ المُعمّاة"; -"room_no_power_to_create_conference_call" = "أنتَ بِحاجَةٍ إلَى إذن لِلدَّعوَة حَتَّى تَبدَأَ اِجتِمَاع فِي هَذِهِ الغُرفَة"; -"room_left_for_dm" = "أنتَ قَد غادَرت"; -"room_left" = "أنتَ قَد غادَرتَ الغُرفَة"; -"room_error_timeline_event_not_found" = "التَّطبيقُ كَانَ يُحاوِلُ تَحميلَ نُقطَةٍ مُعَيَّنَةٍ مِنَ الخَطِّ الزَّمَنيِ لِهَذِهِ الغُرفَة لَكِن تَعَذَّرَ عَليهِ العُثُور عَلَيهَا"; -"room_error_cannot_load_timeline" = "فَشَلَ تَحمِيلُ الخَطِّ الزَّمَنِي"; -"room_error_timeline_event_not_found_title" = "فَشَلَ تَحمِيلُ مَوضِعِ الخَطِّ الزَّمَنِي"; -"room_error_topic_edition_not_authorized" = "أنتَ غَيرُ مُخَوَّلٍ لِتَحرِيرِ مَوضُوعِ هَذِهِ الغُرفَة"; -"room_error_name_edition_not_authorized" = "أنتَ غَيرُ مُخَوَّلٍ لِتَحرِيرِ اِسمِ هَذِهِ الغُرفَة"; -"room_error_join_failed_empty_room" = "حاليًّا مِن غَيرِ المُمكِنِ إعادَةُ الاِنضِمامِ إلى غُرفَةٍ فارِغَة."; -"room_error_join_failed_title" = "فَشَلَ الاِنضِمام إلى الغُرفَة"; - -// Room -"room_please_select" = "يُرجَى تَحديدُ غُرفَة"; -"room_creation_participants_placeholder" = "(مِثل. ‭(@bob:homeserver1; @john:homeserver2..."; -"room_creation_participants_title" = "المُشَارِكُون:"; -"room_creation_alias_placeholder_with_homeserver" = "(مِثل. %@foo#)"; -"room_creation_alias_placeholder" = "(مِثل. foo:example.org#)"; -"room_creation_alias_title" = "اِسمُ الغُرفَةِ البَديل:"; -"room_creation_name_placeholder" = "(مِثل. مجموعة الغداء)"; - -// Room creation -"room_creation_name_title" = "اِسمُ الغُرفَة:"; -"account_error_push_not_allowed" = "الإِشعَاراتُ غَيرُ مَسمُوحَة"; -"account_error_msisdn_wrong_description" = "يَبدو أنَّ هَذَا لَيسَ رَقمُ هَاتِفٍ صَالِح"; -"account_error_msisdn_wrong_title" = "رَقمُ هَاتِفٍ غَيرُ صَالِح"; -"account_error_email_wrong_description" = "يَبدو أنَّ هَذَا لَيسَ عُنوان بَريد إلِكتُرونيّ صَالِح"; -"account_error_email_wrong_title" = "عُنوانُ بَريدٍ إلِكتُرونيّ غَيرَ صَالِح"; -"account_error_matrix_session_is_not_opened" = "جَلسَةُ Matrix غَيرَ مَفتُوحَة"; -"account_error_display_name_change_failed" = "فَشَلَ تَغيِيرُ الاِسم الظّاهِر"; -"account_error_picture_change_failed" = "فَشَلَ تَغيِيرُ الصُّورَة"; -"account_msisdn_validation_error" = "يَتَعَذَّرُ التَّحَقُّق مِن رَقمِ الهَاتِف."; -"account_msisdn_validation_message" = "لَقَد أرسَلنا رِسَالَة SMS تَحوِي رَمزًا لِلتَفعِيل. يُرجَى إدخَالُ هَذَا الرَّمز أَدناه."; -"account_msisdn_validation_title" = "قَيدُ التَّحَقُّق"; -"account_email_validation_title" = "قَيدُ التَّحَقُّق"; -"account_email_validation_error" = "يَتَعَذَّر التَّحَقُّق مِن عُنوان البَريد إلِكتُرونيّ. يُرجَى الاِطِّلاع عَلَى البَريد إلِكتُرونيّ الخاصّ بِك ثُمَّ النَّقر عَلَى الرَّابِط الّذي يَحوِيه. بِمُجَرَّد الاِنتِهاء مِن ذَلِك، اُنقُر عَلَى الاِستِمرار"; -"account_email_validation_message" = "يُرجَى الاِطِّلاعُ عَلَى البَريدِ إلِكتُرونيّ الخاصِّ بِك ثُمَّ النَّقرَ عَلَى الرَّابِط الَّذي يَحوِيه. بِمُجَرَّدِ الاِنتِهاءُ مِن ذَلِك، اُنقُر عَلَى الاِستِمرار."; -"account_linked_emails" = "عَناوينُ البَريدِ الإلِكتُرونيّ المُرتَبِطَة"; -"account_link_email" = "رَبطُ بَريدٍ إلِكتُرونيّ"; - -// Account -"account_save_changes" = "حِفظُ التَّغَيُّرات"; -"room_event_encryption_verify_ok" = "تَأكِيدُ التَّحَقُّق"; -"room_event_encryption_verify_message" = "لِلتَحَقُّق مِن إِمكانيَّة الوُثُوق بِهَذِه الجَلسَة، يُرجَى التَّوَاصُل مَعَ المَالِك بِاِستِخدام بَعض الوَسَائِل الأُخرَى (عَلَى سَبِيلِ المِثَال شَخصيًّا أَو عَن طَرِيق مُكَالَمَة هَاتِفيَّة) وَاِسأَلهُ عَمَّا إِذَا كَانَ المِفتَاح الَّذِي يَرَاه فِي إعدادَات المُستَخدِم لِهَذِهِ الجَلسَة يَتَطَابَقُ مَعَ المِفتَاح أَدناه:\n\nاِسم الجَلسَة: %@\nمُعَرِّف الجَلسَة: %@\nمِفتَاح الجَلسَة: %@\n\nإِذَا تَطَابق، اِضغَط عَلَى زِرِّ التَّحَقُّق أَدناه. إِذَا لَم يَحدُث ذَلِك، فَهَذَا يَعنِي أَنَّ شَخصًا آخَر يَعتَرَضُ هَذِهِ الجَلسَة وَرُبَّما تُوَدُّ الضَّغطَ عَلَى زِرُّ الإضافَةِ لِلقَائِمَة السَّوداء بَدَلَا مِن ذَلِك.\n\n سَوفَ تَكُونُ عَمَلِيَّةُ التَّحَقُّقِ هَذِهِ أَكثَرُ تَطَوُّرًا في المُستَقبَل."; -"room_event_encryption_verify_title" = "التَّحَقُّقُ مِنَ الجَلسَة\n\n"; -"room_event_encryption_info_unblock" = "الإزالَة مِنَ القائِمَةِ السَّوداء"; -"room_event_encryption_info_block" = "الإضافَةُ إلى القائِمَةِ السَّوداء"; -"room_event_encryption_info_unverify" = "إلغَاءُ التَّحَقُّق"; -"room_event_encryption_info_verify" = "يَجري التَّحَقُّق..."; -"room_event_encryption_info_device_blocked" = "ضِمنُ القائِمَةِ السَّوداء"; -"room_event_encryption_info_device_not_verified" = "غَيرُ مُتَحَقَّقٍ مِنه"; -"room_event_encryption_info_device_verified" = "مُتَحَقَّقٌ مِنه"; -"room_event_encryption_info_device_fingerprint" = "بَصمَة Ed25519\n"; -"room_event_encryption_info_device_verification" = "التَّحَقُّق\n"; -"room_event_encryption_info_device_id" = "المُعَرِّف\n"; -"room_event_encryption_info_device_name" = "الاِسمُ العَامّ\n"; -"room_event_encryption_info_device_unknown" = "جَلسَةٌ غَيرَ مَعرُوفة\n"; -"room_event_encryption_info_device" = "\nمَعلُومَاتُ جَلسَةِ المُرسِل\n"; -"room_event_encryption_info_event_none" = "لَا شَيء"; -"room_event_encryption_info_event_unencrypted" = "غَيرُ مُعَمَى"; -"room_event_encryption_info_event_decryption_error" = "خَطَأٌ فِي فَكِّ التَّعميَة\n"; -"room_event_encryption_info_event_session_id" = "مُعَرِّفُ الجَلسَة\n"; -"room_event_encryption_info_event_algorithm" = "خَوارِزميَّة\n"; -"room_event_encryption_info_event_fingerprint_key" = "مُطَالَبَةُ مِفتَاحِ بَصمَة Ed25519\n"; -"room_event_encryption_info_event_identity_key" = "مِفتَاحُ هُويَّة Curve25519\n"; -"room_event_encryption_info_event_user_id" = "مُعَرِّفُ المُستَخدِم\n"; -"room_event_encryption_info_event" = "مَعلُومَاتُ الحَدَث\n"; - -// Encryption information -"room_event_encryption_info_title" = "مَعلُومَاتُ تَعمِيَةِ النِّهايَة-إلى-النِّهايَة\n\n"; -"device_details_delete_prompt_message" = "هَذِهِ العَمَلِيَّة تَتَطَلَّبُ مُصادَقةً إضافيَة.\nللاِستِمرار، يُرجَى إدخَالُ كَلِمَةُ المُرُورِ الخاصَّةِ بِك."; -"device_details_delete_prompt_title" = "المُصادَقَة"; -"device_details_rename_prompt_message" = "إنَّ اِسمَ الجَلسَةِ العَامّ مَرئيٌّ لِلأشخَاصِ الَّذِينَ تَتَواصَلُ مَعَهُم"; -"device_details_rename_prompt_title" = "اِسمُ الجَلسَة"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_last_seen" = "آخِرُ ظُهور\n"; -"device_details_identifier" = "المُعَرِّف\n"; -"device_details_name" = "الاِسمُ العَامّ\n"; - -// Devices -"device_details_title" = "مَعلُومَاتُ الجَلسَة\n"; -"notification_settings_room_rule_title" = "الغُرفَة: '%@'"; -"settings_enter_validation_token_for" = "أدخِل رَمزَ المُصادَقَة لِـ %@:"; -"settings_enable_push_notifications" = "تَفعِيلُ دَفعِ الإِشعَارات"; -"settings_enable_inapp_notifications" = "تَفعِيلُ الإِشعَاراتِ دَاخِلَ التَّطبِيق"; - -// Settings -"settings" = "الإعدَادَات"; -"room_displayname_more_than_two_members" = "العُضو %@ وَعَدَد %@ آخَرُون"; -"room_displayname_two_members" = "العُضو %@ وَ %@"; - -// room display name -"room_displayname_empty_room" = "غُرفَةٌ فَارِغَة"; -"notice_in_reply_to" = "رَدًّا عَلَى"; -"notice_sticker" = "مُلصَق"; -"notice_crypto_error_unknown_inbound_session_id" = "إنَّ جَلسَةَ المُرسِل لَم تُرسِل إلَينا المَفاتيح لِهَذِهِ الرِّسَالَة."; -"notice_crypto_unable_to_decrypt" = "** يَتَعَذَّرُ فَكَّ التَّعميَة: %@ **"; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "لَقَد جَعَلَ %@ الرَّسائِلَ المُستَقبَليَّة مَرئيَّةٌ لِلجَميع، مُنذُ أنِ اِنضَمُّوا."; -"notice_room_history_visible_to_members_from_joined_point" = "لَقَد جَعَلَ %@ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة، مِنَ النُّقطَةِ الَّتي اِنضَمُّوا فِيهَا."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "لَقَد جَعَلَ %@ الرَّسائِلَ المُستَقبَليَّة مَرئيَّةٌ لِلجَميع، مُنذُ أن تَمَّت دَعوَتُهُم."; -"notice_room_history_visible_to_members_from_invited_point" = "لَقَد جَعَلَ %@ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة، مِنَ النُّقطَةِ الَّتي تَمَّت دَعوَتُهُم فِيهَا."; -"notice_room_history_visible_to_members_for_dm" = "لَقَد جَعَلَ %@ الرَّسائِلَ المُستَقبَليَّة مَرئيَّةٌ لِجَميعِ أعضاءِ الغُرفَة."; -"notice_room_history_visible_to_members" = "لَقَد جَعَلَ %@ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة."; -"notice_room_history_visible_to_anyone" = "لَقَد جَعَلَ %@ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِأَيّ شَخص."; -"notice_error_unknown_event_type" = "حَدثٌ غَيرُ مَعرُوفِ النَّوع"; -"notice_error_unexpected_event" = "حَدَثٌ غَيرُ مُتَوَقَّع"; -"notice_error_unsupported_event" = "حَدَثٌ غَيرُ مَدعُوم"; -"notice_redaction" = "لَقَد نَقَّحَ %@ حَدَث (المُعَرِّف: %@)"; -"notice_feedback" = "حَدَثُ اِنطِباع (المُعَرِّف: %@): %@"; -"notice_unsupported_attachment" = "مُرفَقٌ غَيرُ مَدعُوم: %@"; -"notice_invalid_attachment" = "مُرفَقٌ غَيرُ صَالِح"; -"notice_file_attachment" = "مُرفَقُ مَلَفّ"; -"notice_location_attachment" = "مُرفَقُ مَوقِعٍ جُغرَافِيّ"; -"notice_video_attachment" = "مُرفَق مَقطَع مَرئي"; -"notice_audio_attachment" = "مُرفَق صَوت"; -"notice_image_attachment" = "مُرفَق صُّورَة"; -"notice_encryption_enabled_unknown_algorithm" = "لَقَد شَغَّلَ %1$@ تَعميَة النِّهايَة-إلى-النِّهايَة (خَوارِزميَّة غَير مُتَعَرَّف عَليها %2$@)."; -"notice_encryption_enabled_ok" = "لَقَد شَغَّلَ %@ تَعميَة النِّهايَة-إلى-النِّهايَة."; -"power_level" = "مُستَوى القُوَّة"; -"public" = "عَامّ"; -"private" = "خاصّ"; -"default" = "الاِفتراضي"; -"not_supported_yet" = "غَيرُ مَدعُومَةٍ حَتَّى الآن"; -"error_common_message" = "لَقَد حَدَثَ خَطَأ. يُرجَى المُحاوَلَة مَرَّةً أُخرَى."; -"error" = "خَطَأ"; -"unsent" = "غَيرُ مُرسَلَة"; -"offline" = "غَيرُ مُتَّصِل"; - -// Others -"user_id_title" = "مُعَرِّف المُستَخدِم:"; -"e2e_passphrase_not_match" = "عِبارَاتُ المُرُورِ يَجِبُ أن تَكُونَ مُتَطابَقة"; -"e2e_passphrase_create" = "إنشاءُ عِبارَةِ مُرُور"; -"e2e_passphrase_empty" = "عِبارَةُ المُرُورِ يَجِبُ ألَا تَكونَ خَالِيَة"; -"e2e_passphrase_confirm" = "تَأكيدُ عِبارَةِ المُرُور"; -"e2e_export_prompt" = "تُتيحُ لَكَ هَذِهِ العَمَلِيَّة تَصدير مَفاتيح الرَّسائِل الَّتي قَد تَلَقَّيتَها فِي الغُرَف المُعَمّاة إلى مَلَفّ مَحَلِّيّ. يُمكِنُكَ بَعدَ ذَلِكَ أن تَستَورِدَ المَلَفّ إلى عَميل Matrix آخر في المُستَقبَل، لِكَي يَتَمَكَّن هَذَا العَميل أيضًا مِن فَكّ تَعمِيَة هَذِهِ الرَّسائِل.\nالمَلَفّ الَّذِي قَد تَمَّ تَصديرُه سَيَسمَحُ لِأيّ شَخص يُمكِنَهُ قِرَاءته أن يَفُكّ تَعمِيَة أيّ رَسائِل مُعمّاة يُمكِنُكَ رُؤيَتها، لِذَلِك يَجِبُ أن تَكُونَ حَريصًا عَلَى إبقائه آمِن."; -"e2e_export" = "تَصدير"; - -// E2E export -"e2e_export_room_keys" = "تَصديرُ مَفاتيحِ الغُرفَة"; -"e2e_passphrase_enter" = "أدخِل عِبارَةَ المُرُور"; -"e2e_import" = "اِستيراد"; -"e2e_import_prompt" = "تُتِيحُ لَكَ هَذِهِ العَمَلِيَّة اِستيراد المَفاتيح الَّتي قَد صَدَّرتَهَا مُسبقًا مِن عَميل Matrix آخر. أنتَ سَتَتَمَكَّن بَعدَ ذَلِك مِن فَكّ تَّعميَة جَميع رَسائِل الَّتي يُمكِن لِلعَميل الآخر فَكّ تَعمِيَتها.\nإنَّ المَلَفّ الْمُصَدَّر مَحميّ بِعِبارَة مُرُور. يَجِبُ إدخال عِبارَة المُرُور هُنا لِفَكّ تَعمِيَة المَلَفّ."; - -// E2E import -"e2e_import_room_keys" = "اِستيرادُ مَفاتيحِ الغُرفَة"; -"format_time_d" = "ي"; -"format_time_h" = "س"; -"format_time_m" = "د"; - -// Time -"format_time_s" = "ث"; -"search_searching" = "يَجري البَحث..."; - -// Search -"search_no_results" = "لَا تُوجَدُ نَتائِج"; -"group_section" = "المَجمُوعات"; - -// Groups -"group_invite_section" = "الدَّعَوات"; -"contact_local_contacts" = "جِهاتُ الاِتِّصالِ المَحَلِّيَّة"; - -// Contacts -"contact_mx_users" = "مُستَخدِمُو Matrix"; -"attachment_e2e_keys_import" = "يَجري الاِستيراد..."; -"attachment_e2e_keys_file_prompt" = "يَحتَوي هَذَا المَلَفّ عَلَى مَفاتيح تَعمِيَة قَد تمَّ تَصديرُها مِن عَميلِ Matrix.\nهَل تُريدُ عَرضَ مُحتَوى المَلفّ أمِ اِستيرادُ المَفاتيحِ الَّتي يَحويها؟"; - -// Settings screen -"settings_title_config" = "الإعداد"; -"notice_room_third_party_registered_invite_by_you" = "أنتَ قَد قَبلتَ دَعوَة %@"; -"notice_room_third_party_revoked_invite" = "لَقَد ألغَى %@ دَعوَة %@ لِلاِنضِمام إلى الغُرفَة"; -"notice_room_third_party_registered_invite" = "لَقَد قَبَلَ %@ دَعوَةَ %@‏"; -"ssl_only_accept" = "فَقَطّ اِقبَل الشَّهادَة إذا نَشَرَ مُدير الخادِم بَصمَة تُطابِق البَصمَة أعلَاه."; -"ssl_expected_existing_expl" = "لَقَد تَغَيَّرَت الشَّهادَة الَّتي قَد كانَت مَوثُوقَة مُسبَقًا إلى أُخرَى غَير مَوثُوقَة. مِنَ المُمكِن أنَّ الخادِم قَد جَدَّدَ شَهادَته. تَواصَل مَعَ المُدير لِلحُصُول عَلَى البَصمَة المُتَوَقَّعَة."; -"ssl_unexpected_existing_expl" = "تَمَّ تَغيِير الشَّهادَة الَّتي قَد كانَت مَوثُوقة مِن قِبَل هاتِفك. هَذَا غَيرُ طَبِيعِيّ لِلغَايَة. يُوصَى بِعَدَم قُبُول هَذِهِ الشَّهادَة الجَديدَة."; -"ssl_cert_new_account_expl" = "إذَا قَالَ مُديرُ الخادِم أنَّ هَذَا مُتَوَقَّع، فَتَأكَّد مِن تَطابُق البَصمَة أدناه مَعَ البَصمَة الَّتي قَد قَدَّمَها."; -"ssl_cert_not_trust" = "هَذَا قَد يَعني أنَّ شَخصًا ما يَعتَرِضُ حَرَكَة المُرُور الخَاصَّةِ بِك بِخُبث، أو أنَّ هَاتِفَكَ لا يَثِقُ في الشَّهادَة المُقَدَّمَة مِنَ الخادِمِ البَعيد."; -"notification_settings_per_word_info" = "تُطابَق الكَلِمات مَعَ حالَة الأحرُف بِشَكل غَير حَساس، وَقَد تَتَضَمَّن حَرف البَدَل *. وَبِالتَّالي:\nإنَّ foo تَتَطابَق مَعَ السِّلسِلَة foo المُحاطَة بِمُحَدِّدِات الكَلِمَة (مِثل عَلامات التَّرقيم وَالمَسافَة البَيضاء أو بِدايَة/نِهايَة السَّطر).\nإنَّ *foo تَتَطابَق مَعَ أي كَلِمَة تَبدَأُ بِـ foo.\nإنَّ *foo* تَتَطابَق مع أي كَلِمَة مِن هَذَا القَبيل وَتَتَضَمَّن الثَّلاث أحرُف foo."; -"notification_settings_global_info" = "تَُحفَظُ إعدادات الإشعَارات في حِسابِ المُستَخدِم الخاصِّ بِك وَتَتِمُّ مُشارَكَتَها بَينَ جَمِيعِ العُمَلاء الَّذينَ يَدعَمُونَها (بِما في ذَلِكَ إشعَاراتُ سَطحِ المَكتَب).\n\nيَتِمُّ تَطبيق القَواعِد بِالتَرتيب؛ أوَّل قاعِدَة تَتَطَابَق تُحَدِّد النَّتيجَة لِلرِسالَة.\nإذًا: الإِشعَارات وَفقًا لِلكَلِمَة أكثَرُ أولَويَّة مِنَ الإِشعَارات وَفقًا لِلغُرفَة الَّتِي أيضًا أكثَرُ أولَويَّة مِنَ الإِشعَارات وَفقًا لِلمُرسِل.\nبِالنِّسبَةِ لِلقَواعِد المُتَعَدِّدَة مِن نَفسِ النَّوع، تَكُونُ الأَولَويَّة لِأوَّل قاعِدَة تَتَطابَق في القائِمَة."; -"login_error_login_email_not_yet" = "لَم يُنقَر عَلَى الرَّابِط الَّذي في البَريد الإلِكتُرونيّ حَتَّى الآن"; -"ssl_could_not_verify" = "تَعَذَّرَ التَّحَقُّق مِن هُوِيَّة الخَادِم البَعيد."; -"ssl_fingerprint_hash" = "بَصمَة (%@):"; -"ssl_remain_offline" = "تَجاهُل"; -"ssl_logout_account" = "تَسجِيلُ الخُرُوج"; - -// unrecognized SSL certificate -"ssl_trust" = "الوُثُوق"; -"call_invite_expired" = "لَقَد اِنتَهَت صَلاحيَّةُ دَعوَة المُكالَمَة"; -"incoming_voice_call" = "مُكالَمَةٌ صَوتيَّةٌ وَارِدَة"; -"incoming_video_call" = "مُكالَمَةٌ مَرئيَّةٌ وَارِدَة"; -"call_ring" = "تَجري المُكالَمَة…"; -"call_ended" = "اِنتَهَت المُكالَمَة"; -"call_connecting" = "الاِتِّصالُ جارٍ…"; - -// Settings keys - -// call string -"call_waiting" = "يَجري الاِنتِظار…"; -"settings_config_user_id" = "مُعَرِّفُ المُستَخدِم: %@"; -"settings_config_identity_server" = "خادِم الهُويَّة: %@"; - -// gcm section -"settings_config_home_server" = "الخادِم الرَّئيس: %@"; -"notification_settings_notify_all_other" = "أخطِرني لِكَافَّةِ الرَّسائِل/الغُرَف الأُخرَى"; -"notification_settings_by_default" = "بِشَكلٍ اِفتِراضي..."; -"notification_settings_suppress_from_bots" = "كَتْمُ الإشعَارات مِنَ الرُّوبُوتَات"; -"notification_settings_receive_a_call" = "أخطِرني عِندَما أَتَلَقَّى مُكالَمَة"; -"notification_settings_people_join_leave_rooms" = "أخطِرني عِندَما يَنضَمّ الأشخاص أو يُغادِرُوا الغُرَف"; -"notification_settings_invite_to_a_new_room" = "أخطِرني عِندَما أُدعَى إلى غُرفَة جَديدَة"; -"notification_settings_just_sent_to_me" = "أخطِرني بِالصَّوت حَولَ الرَّسَائِل الَّتي أُرسِلَت إليَّ فَقَط"; -"notification_settings_contain_my_display_name" = "أخطِرني بِالصَّوت حَولَ الرَّسَائِل الَّتي تَحتَوي عَلَى الاِسم الظّاهِر الخاصّ بِي"; -"notification_settings_contain_my_user_name" = "أخطِرني بِالصَّوت حَولَ الرَّسَائِل الَّتي تَحتَوي عَلَى اِسم المُستَخدِم الخاصّ بِي"; -"notification_settings_other_alerts" = "تَنبيهاتٌ أُخرَى"; -"notification_settings_select_room" = "حَّدِد غُرفَة"; -"notification_settings_sender_hint" = "user:domain.com@"; -"notification_settings_per_sender_notifications" = "الإِشعَاراتٌ وَفقًا لِلمُرسِل"; -"notification_settings_per_room_notifications" = "الإِشعَاراتُ وَفقًا لِلغُرفَة"; -"notification_settings_custom_sound" = "صَوتٌ مُخَصَّص"; -"notification_settings_highlight" = "إبرَاز"; -"notification_settings_word_to_match" = "كَلِمَةٌ لِلمُطابَقَة"; -"notification_settings_never_notify" = "لا تُخطِرني أبَدًا"; -"notification_settings_always_notify" = "أخطِرني دَومًا"; -"notification_settings_per_word_notifications" = "الإِشعَاراتُ وَفقًا لِلكَلِمَة"; -"notification_settings_enable_notifications_warning" = "جَميعُ الإِشعَاراتِ مُعَطَّلَةٌ حالِيًّا لِكُلِ الأجهِزَة."; -"notification_settings_enable_notifications" = "تَفعِيلُ الإِشعَارات"; - -// Notification settings screen -"notification_settings_disable_all" = "تَعطيلُ كَافَّةِ الإِشعَارات"; -"settings_title_notifications" = "الإِشعَارات"; - -// contacts list screen -"invitation_message" = "أوَدُّ أن أتَحَدَّثَ مَعكَ بِاستِخدامِ matrix. يرُجَى زيارَةُ المَوقِع https://matrix.org لِلحُصُولِ عَلَى مَزيدٍ مِنَ المَعلُومات."; - -// members list Screen - -// accounts list Screen - -// image size selection - -// invitation members list Screen - -// room creation dialog Screen - -// room info dialog Screen - -// room details dialog screen -"room_details_title" = "تَفاصيلُ الغُرفَة"; -"login_error_must_start_http" = "عُنوانُ URL يَجِبُ أن يَبدَأ بِـ //:[s]http"; - -// Login Screen -"login_error_already_logged_in" = "مُسَجِّل الدُّخُولِ بِالفِعل"; -"message_unsaved_changes" = "تُوجَدُ تَغيِيرات غَير مَحفُوظَة. المُغادَرَة سَوفَ تَستَبعِدَها."; -"unban" = "رَفع-الحَظْر"; -"ban" = "حَظْر"; -"kick" = "طَرد"; -"invite" = "اُدعُ"; -"num_members_other" = "عَدَد %@ مُستَخدِم"; -"num_members_one" = "عَدَد %@ مُستَخدِم"; -"membership_ban" = "حَظْر"; -"membership_leave" = "غادَر"; -"membership_invite" = "مَدعُوّ"; -"create_account" = "إنشاءُ حِساب"; -"login" = "تَسجيلُ الدُّخُول"; -"create_room" = "إنشاءُ غُرفَة"; - -// actions -"action_logout" = "تَسجِيلُ الخُرُوج"; -"view" = "الاِطِّلاع"; -"delete" = "حَذف"; -"share" = "مُشارَكَة"; -"redact" = "إزالَة"; -"resend" = "إعادَة الإرسَال"; -"copy_button_name" = "نَسخ"; -"send" = "إرسَال"; -"leave" = "المُغادَرَة"; -"save" = "حِفظ"; -"cancel" = "إلغَاء"; - -// Room Screen - -// general errors - -// Home Screen - -// Last seen time - -// call events - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /console/src/main/res/values/strings.xml. -*/ - - -// titles - -// button names -"ok" = "حَسَنًا"; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "أنتَ قَد جَعَلتَ الرَّسائِلَ المُستَقبَليَّة مَرئيَّة لِلجَميع، مُنذُ أنِ اِنضَمُّوا."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "أنتَ قَد جَعَلتَ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة، مِن النُّقطَة الَّتي اِنضَمُّوا فِيهَا."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "أنتَ قَد جَعَلتَ الرَّسائِلَ المُستَقبَليَّة مَرئيَّة لِلجَميع، مُنذُ أن تَمَّت دَعوَتُهُم."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "أنتَ قَد جَعَلتَ تَأريخ الغُرفَة المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة، مِنَ النُّقطَةِ الَّتي تَمَّت دَعوَتُهُم فِيهَا."; -"notice_room_history_visible_to_members_by_you_for_dm" = "أنتَ قَد جَعَلتَ الرَّسائِل المُستَقبَليَّة مَرئيَّة لِجَميع أعضاء الغُرفَة."; -"notice_room_history_visible_to_members_by_you" = "أنتَ قَد جَعَلتَ تَأريخَ الغُرفَةِ المُستَقبَليّ مَرئيٌّ لِجَميعِ أعضاءِ الغُرفَة."; -"notice_room_history_visible_to_anyone_by_you" = "أنتَ قَد جَعَلتَ تَأريخ الغُرفَة المُستَقبَليّ مَرئي لِأَيّ شَخص."; -"notice_redaction_by_you" = "أنتَ قَد نَقَّحتَ حَدَث (المُعَرِّف: %@))"; -"notice_encryption_enabled_unknown_algorithm_by_you" = "أنتَ قَد شَغَّلتَ تَعمِيَة النِّهايَة-إلى-النِّهايَة. (خَوارِزميَّة غَير مُتَعَرَّف عَليها %@)."; -"notice_encryption_enabled_ok_by_you" = "أنتَ قَد فعَّلتَ تَعمِيَة النِّهايَة-إلى-النِّهايَة."; -"notice_room_created_by_you_for_dm" = "أنتَ قَد اِنضَمَمت."; -"notice_room_created_by_you" = "أنتَ قَد أنشأتَ الغُرفَة وَهَيَّأَتَها."; -"notice_profile_change_redacted_by_you" = "أنتَ قَد حدَّثتَ مَلفَّكَ الشَّخصي %@"; -"notice_event_redacted_by_you" = " بِواسِطَتِك"; -"notice_room_topic_removed_by_you" = "أنتَ قَد أزلتَ المَوضُوع"; -"notice_room_name_removed_by_you_for_dm" = "أنتَ قَد أزَلتَ الاِسم"; -"notice_room_name_removed_by_you" = "أنتَ قَد أزَلتَ اِسم الغُرفَة"; -"notice_conference_call_request_by_you" = "أنتَ قَد طَلبتَ عَقد اِجتِمَاع VoIP"; -"notice_ended_video_call_by_you" = "أنتَ قَد أنهيتَ المُكالَمَة"; -"notice_answered_video_call_by_you" = "أنتَ قَد أجَبتَ عَلَى المُكالَمَة"; -"notice_placed_video_call_by_you" = "أنتَ قَد أجرَيتَ مُكالَمَةً مَرئيَّة"; -"notice_placed_voice_call_by_you" = "أنتَ قَد أجرَيتَ مُكالَمَةً صَوتيَّة"; -"notice_room_name_changed_by_you_for_dm" = "أنتَ قَد غيَّرتَ الاِسم إلى %@."; -"notice_room_name_changed_by_you" = "أنتَ قَد غيَّرتَ اِسمَ الغُرفَةِ إلى %@."; -"notice_topic_changed_by_you" = "أنتَ قَد غيَّرتَ المَوضُوع إلى \"%@\"."; -"notice_display_name_removed_by_you" = "أنتَ قَد أزَلتَ اِسمكَ الظّاهِر"; -"notice_display_name_changed_from_by_you" = "أنتَ قَد غيَّرتَ اِسمكَ الظّاهِر مِن %@ إلى %@"; -"notice_display_name_set_by_you" = "أنتَ قَد عيَّنتَ اِسمكَ الظّاهِر إلى %@"; -"notice_avatar_url_changed_by_you" = "أنتَ قَد غيَّرتَ صُّورَتكَ الرَّمزية"; -"notice_room_withdraw_by_you" = "أنتَ قَد سَحبتَ دَعوَة %@"; -"notice_room_ban_by_you" = "أنتَ قَد حَظرتَ %@"; -"notice_room_unban_by_you" = "أنتَ قَد رَفعتَ الحَظرَ عَن %@"; -"notice_room_kick_by_you" = "أنتَ قَد طَردتَ %@"; -"notice_room_reject_by_you" = "أنتَ قَد رَفضتَ الدَعوَة"; -"notice_room_join_by_you" = "أنتَ قَد اِنضَمَمت"; -"notice_room_leave_by_you" = "أنتَ قَد غادَرت"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "أنتَ قد ألغيتَ دَعوَة %@"; -"notice_room_third_party_revoked_invite_by_you" = "أنتَ قَد ألغيتَ دَعوَة %@ لِلاِنضِمام إلى الغُرفَة"; -"notice_room_third_party_invite_by_you_for_dm" = "أنتَ قَد دَعوتَ %@"; -"notice_room_third_party_invite_by_you" = "أنتَ قَد أرسَلتَ دَعوَةً إلى %@ لِلاِنضِمامِ إلى الغُرفَة"; -"notice_room_invite_you" = "لَقَد دَعاكَ %@"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "أنتَ قد دَعوتَ %@"; -"notice_conference_call_finished" = "لَقَد اِنتَهَى اِجتِمَاع VoIP"; -"notice_conference_call_started" = "لَقَد بَدأ اِجتِمَاع VoIP"; -"notice_conference_call_request" = "لَقَد طَلَبَ %@ عَقد اِجتِمَاع VoIP"; -"notice_ended_video_call" = "لَقَد أنهَى %@ المُكالَمَة"; -"notice_answered_video_call" = "لَقَد أجابَ %@ عَلَى المُكالَمَة"; -"notice_placed_video_call" = "لَقَد أجرَى %@ مُكالَمَة مَرئيَّة"; -"notice_placed_voice_call" = "لَقَد أجرَى %@ مُكالَمَة صَوتيَّة"; -"notice_room_name_changed_for_dm" = "لَقَد غيَّرَ %@ الاِسم إلى %@."; -"notice_room_name_changed" = "لَقَد غيَّرَ %@ اِسم الغُرفَة إلى %@."; -"notice_topic_changed" = "لَقَد غيَّرَ %@ المَوضُوع إلى \"%@\"."; -"notice_display_name_removed" = "لَقَد أزالَ %@ اِسمهُ الظّاهِر"; -"notice_display_name_changed_from" = "لَقَد غيَّرَ %@ اِسمُهُ الظّاهِر مِن %@ إلى %@"; -"notice_display_name_set" = "لَقَد عيَّنَ %@ اِسمُهُ الظّاهِر إلى %@"; -"notice_avatar_url_changed" = "لَقَد غيَّرَ %@ صُّورَتَهُ الرَّمزية"; -"notice_room_reason" = ". السَّبَب: %@"; -"notice_room_withdraw" = "لَقَد سَحَبَ %@ دَعوَة %@"; -"notice_room_ban" = "إنَّ %@ قَد حَظَرَ %@"; -"notice_room_unban" = "لَقَد رَفَعَ %@ الحَظرَ عَن %@"; -"notice_room_kick" = "إنَّ %@ قَد طَرَدَ %@"; -"notice_room_reject" = "لَقَد رَفَضَ %@ الدَّعوَة"; -"notice_room_leave" = "لَقَد غَادَرَ %@"; -"notice_room_third_party_invite" = "لَقَد أرسَلَ %@ دَعوَةً إلى %@ لِلاِنضِمامِ إلى الغُرفَة"; -"notice_room_join" = "لَقَد اِنضَمَّ %@"; -"notice_room_third_party_revoked_invite_for_dm" = "لَقَد ألغَى %@ دَعوَة %@"; -"notice_room_third_party_invite_for_dm" = "إنَّ %@ قَد أضافَ %@"; - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /matrix-sdk/src/main/res/values/strings.xml. -*/ - -"notice_room_invite" = "إنَّ %@ قَد أضافَ %@"; -"language_picker_default_language" = "الاِفتراضي (%@)"; - -// Language picker -"language_picker_title" = "اِختَر لُغَةً"; - -// Country picker -"country_picker_title" = "اِختَر بَلَدًا"; -"local_contacts_access_discovery_warning" = "لاِكتِشاف جِهات الاِتِّصال الَّتي تَستَخدِمُ Matrix بِالفِعل، يُمكِنُ لِـ%@ إرسَال عَناوين البَريد الإلِكتُرونيّ وأرقام الهَواتِف الَّتي في دَفتَرِ العَناوين الخاصِّ بِك إلى خادِمِ هُويَّة Matrix المُختار. يَتِّمُ تَجزِئة البَياناتِ الشَّخصيَّة قَبلَ إرسالِها حَيثُما كانَت مَدعُومَة - يُرجى مُراجَعَة سياسَة الخُصُوصيَّة الخاصَّة بِخادِم الهُويَّة لِلحُصُولِ عَلَى المَزيدِ مِنَ التَّفاصيل."; -"local_contacts_access_discovery_warning_title" = "اِكتِشافُ المُستَخدِمين"; -"local_contacts_access_not_granted" = "اِكتِشافُ المُستَخدِمين مِن جِهاتِ الاِتِّصالِ المَحَلِّيَّة يَتَطَلَّب الوُصُول إلَى جِهاتِ الاِتِّصالِ الخاصّةِ بِك لَكِنّ %@ لَيسَ لَدَيهِ الاِذن لاِستِخدامَها"; -"microphone_access_not_granted_for_call" = "المُكالَمَاتُ المَرئيَّة تَتَطَلَّب الوُصُول إلَى المِيكرُوفُون لَكِنّ %@ لَيسَ لَدَيهِ الاِذن لاِستِخدامه"; - -// Permissions -"camera_access_not_granted_for_call" = "المُكالَمَاتُ المَرئيَّة تَتَطَلَّب الوُصُول إلَى الكاميرة لَكِنّ %@ لَيسَ لَدَيهِ الاِذن لاِستِخدامها"; -"ssl_homeserver_url" = "عُنوانُ URL لِلخادِم الرَّئيس: %@"; -"user_id_placeholder" = "مِثال: bob:homeserver@"; -"network_error_not_reachable" = "يُرجَى التَّحَقُّق مِن اِتِّصالَكَ بِالشَبَكَة"; -"call_more_actions_dialpad" = "لَوحَةُ الاِتِّصَال"; -"call_more_actions_transfer" = "النَّقل"; -"call_more_actions_audio_use_device" = "مُكَبِّر صَوت الجِّهَاز"; -"call_more_actions_audio_use_headset" = "اِستِخدامُ صَوتَ سمَّاعَةِ الرَّأس"; -"call_more_actions_change_audio_device" = "تَغيِيرُ جِهَازِ الصَوت"; -"call_more_actions_unhold" = "الاِستِئنَاف"; -"call_more_actions_hold" = "التَّمَسُّك"; -"call_remote_holded" = "لقد عَلَّقَ %@ المكالمة"; -"call_holded" = "أنتَ قَد عَلَّقتَ المُكالَمَة"; -"notice_declined_video_call_by_you" = "أنتَ قَد رَفَضتَ المُكالَمَة"; -"notice_declined_video_call" = "لَقَد رَفضَ %@ المُكالَمَة"; -"resume_call" = "اِستِئنَاف"; -"call_transfer_to_user" = "التَّحويلُ إلَى %@"; -"call_consulting_with_user" = "اِستِشارَة مَعَ %@"; -"call_video_with_user" = "مُكالَمَةٌ مَرئيَّةٌ مَع %@"; -"call_voice_with_user" = "مُكالَمَةٌ صَوتيَّةٌ مَع %@"; -"call_ringing" = "الرَّنِينُ جَارٍ…"; -"e2e_passphrase_too_short" = "عِبارَة المُرُور قَصِيرَةٌ جِدًا (يَجِبُ ألَّا يَقِلَّ طُولهَا عَن %d أحرف)"; -"microphone_access_not_granted_for_voice_message" = "الرَسائِلُ الصَوتيَّةُ تتطَلَبُ الوصُولَ إلَى المِيكرُوفُون لَكِنَ %@ ليسَ لَديهِ إذنٌ لِاستِخدَامِه"; -"message_reply_to_sender_sent_a_voice_message" = "أرسَلَ رِسَالَةً صَوتيَّة."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/bg.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/bg.lproj/MatrixKit.strings deleted file mode 100644 index 0cb86edfd..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/bg.lproj/MatrixKit.strings +++ /dev/null @@ -1,466 +0,0 @@ -"view" = "Виж"; -"back" = "Назад"; -"continue" = "Продължи"; -"leave" = "Напусни"; -"invite" = "Покани"; -"retry" = "Опитай отново"; -"cancel" = "Отказ"; -"save" = "Запази"; -// room details dialog screen -"room_details_title" = "Информация"; -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Регистрация:"; -"login_server_url_placeholder" = "URL (напр. https://matrix.org)"; -"login_home_server_title" = "Home сървър адрес:"; -"login_home_server_info" = "Сървърът Ви съхранява цялата кореспонденция и профилни данни"; -"login_identity_server_title" = "Адрес на сървър за самоличност:"; -"login_identity_server_info" = "Matrix предоставя сървъри за самоличност, които проследяват кои имейли и т.н. на кои Matrix идентификатори принадлежат. В момента съществува само https://matrix.org."; -"login_user_id_placeholder" = "Matrix ID (напр. @ivan:matrix.org или ivan)"; -"login_password_placeholder" = "Парола"; -"login_optional_field" = "по избор"; -"login_display_name_placeholder" = "Име (напр. Иван Георгиев)"; -"login_email_info" = "Задайте имейл адрес, за да позволите на другите потребители да Ви намерят по-лесно в Matrix и да можете да възстановите Вашата парола в бъдеще."; -"login_email_placeholder" = "Имейл адрес"; -"login_prompt_email_token" = "Моля, въведете кода за потвърждение от имейл адреса:"; -"login_error_title" = "Неуспешно влизане в профила"; -"login_error_no_login_flow" = "Не успяхме да извлечем информация за автентикация от този Home сървър"; -"login_error_do_not_support_login_flows" = "В момента не поддържаме методите за влизане, определени от този Home сървър"; -"login_error_registration_is_not_supported" = "В момента не се поддържа регистрация"; -"login_error_forbidden" = "Невалидно потребителско име или парола"; -"login_error_unknown_token" = "Не е разпознат указаният тоукън за достъп"; -"login_error_bad_json" = "Грешно формиран JSON"; -"login_error_not_json" = "Не съдържаше валиден JSON"; -"login_error_limit_exceeded" = "Бяха изпратени твърде много заявки"; -"login_error_user_in_use" = "Това потребителско име е вече заето"; -"login_error_login_email_not_yet" = "Все още не сте кликнали върху връзката в имейла"; -"login_use_fallback" = "Използване на страница заместител"; -"login_leave_fallback" = "Откажи"; -"login_invalid_param" = "Невалиден параметър"; -"register_error_title" = "Неуспешна регистрация"; -"login_error_forgot_password_is_not_supported" = "В момента не се поддържа \"Забравена парола\""; -"login_mobile_device" = "Мобилно устройство"; -"login_tablet_device" = "Таблет"; -"login_desktop_device" = "Работен плот"; -// Action -"no" = "Не"; -"yes" = "Да"; -"abort" = "Прекрати"; -"close" = "Затвори"; -"discard" = "Откажи"; -"dismiss" = "Затвори"; -"sign_up" = "Регистрация"; -"submit" = "Изпрати"; -"submit_code" = "Изпрати код"; -"set_default_power_level" = "Възвръщане нивото на достъп"; -"set_moderator" = "Направи модератор"; -"set_admin" = "Направи администратор"; -"start_chat" = "Започни чат"; -"start_voice_call" = "Започни гласов разговор"; -"start_video_call" = "Започни видео разговор"; -"mention" = "Спомени"; -"select_account" = "Изберете профил"; -"attach_media" = "Прикачи файл от галерията"; -"capture_media" = "Направи снимка/видео"; -"invite_user" = "Покани matrix потребител"; -"resend_message" = "Изпрати съобщението отново"; -"reset_to_default" = "Връщане към ниво по подразбиране"; -"select_all" = "Избери всички"; -"cancel_upload" = "Откажи качването"; -"cancel_download" = "Откажи свалянето"; -"show_details" = "Покажи детайлите"; -"answer_call" = "Отговори на повикването"; -"reject_call" = "Откажи повикването"; -"ignore" = "Игнорирай"; -"unignore" = "Премахни игнорирането"; -// Events formatter -"notice_avatar_changed_too" = "(аватарът също беше променен)"; -"notice_room_name_removed" = "%@ премахна името на стаята"; -"notice_room_topic_removed" = "%@ премахна темата"; -"notice_event_redacted" = "<изтрито%@>"; -"notice_event_redacted_by" = " от %@"; -"notice_event_redacted_reason" = " [причина: %@]"; -"notice_profile_change_redacted" = "%@ обнови своя профил %@"; -"notice_room_created" = "%@ създаде и конфигурира стаята."; -"notice_room_join_rule" = "Правилото за присъединяване е: %@"; -"notice_room_power_level_intro" = "Нивата на достъп на членовете в стаята са:"; -"end_call" = "Прекрати разговора"; -"notice_room_power_level_acting_requirement" = "Минималните нива на достъп, които потребител трябва да има за следните действия са:"; -"notice_room_power_level_event_requirement" = "Минималните нива на достъп отнасящи се към събития са:"; -"notice_room_aliases" = "Адресите на стаята са: %@"; -"notice_room_related_groups" = "Групите, асоциирани с тази стая, са: %@"; -"notice_encrypted_message" = "Шифровано съобщение"; -"notice_encryption_enabled" = "%@ включи шифроването от край до край (алгоритъм %@)"; -"notice_image_attachment" = "прикачена снимка"; -"notice_audio_attachment" = "прикачено аудио"; -"notice_video_attachment" = "прикачено видео"; -"notice_location_attachment" = "прикачено местоположение"; -"notice_file_attachment" = "прикачен файл"; -"notice_invalid_attachment" = "невалидно прикачване"; -"notice_unsupported_attachment" = "Прикачен файл, който не се поддържа: %@"; -"notice_feedback" = "Събитие за обратна връзка (id: %@): %@"; -"notice_redaction" = "%@ изтри събитие (id: %@)"; -"notice_error_unsupported_event" = "Събитие, което не се поддържа"; -"notice_error_unexpected_event" = "Неочаквано събитие"; -"notice_error_unknown_event_type" = "Непознат вид на събитието"; -"notice_room_history_visible_to_anyone" = "%@ направи бъдещата история на стаята видима за всеки."; -"notice_room_history_visible_to_members" = "%@ направи бъдещата история на стаята видима за всички членове."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ направи бъдещата история на стаята видима за всички членове, от момента на поканването им в нея."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ направи бъдещата история на стаята видима за всички членове, от момента на присъединяването им в нея."; -"notice_crypto_unable_to_decrypt" = "** Неуспешно разшифроване: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "Сесията на подателя не изпрати ключовете за това съобщение."; -// room display name -"room_displayname_empty_room" = "Празна стая"; -"room_displayname_two_members" = "%@ и %@"; -"room_displayname_more_than_two_members" = "%@ и %u други"; -// Settings -"settings" = "Настройки"; -"settings_enable_inapp_notifications" = "Включване на известия в приложението"; -"settings_enable_push_notifications" = "Включване на известия"; -"settings_enter_validation_token_for" = "Въведете код за потвърждение за %@:"; -"notification_settings_room_rule_title" = "Стая: '%@'"; -// Devices -"device_details_title" = "Информация за сесията\n"; -"device_details_name" = "Публично име\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Последно видян\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "Публичното име на сесията е видимо за всеки, с който комуникирате"; -"device_details_delete_prompt_title" = "Автентикация"; -"device_details_delete_prompt_message" = "Тази операция изискра допълнителна автентикация.\nЗа да продължите, моля, въведете Вашата парола."; -// Encryption information -"room_event_encryption_info_title" = "Информация за шифроване от край до край\n\n"; -"room_event_encryption_info_event" = "Информация за събитие\n"; -"room_event_encryption_info_event_user_id" = "ID на потребител\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519 ключ за самоличност\n"; -"room_event_encryption_info_event_fingerprint_key" = "Заявен ключов отпечатък Ed25519\n"; -"room_event_encryption_info_event_algorithm" = "Алгоритъм\n"; -"room_event_encryption_info_event_session_id" = "ID на сесия\n"; -"room_event_encryption_info_event_decryption_error" = "Грешка при разшифроване\n"; -"room_event_encryption_info_event_unencrypted" = "нешифрован"; -"room_event_encryption_info_event_none" = "няма"; -"room_event_encryption_info_device" = "\nИнформация за сесията на подателя\n"; -"room_event_encryption_info_device_unknown" = "неизвестна сесия\n"; -"room_event_encryption_info_device_name" = "Публично име\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "Потвърждение\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519 отпечатък\n"; -"room_event_encryption_info_device_verified" = "Потвърдено"; -"room_event_encryption_info_device_not_verified" = "НЕ е потвърдено"; -"room_event_encryption_info_device_blocked" = "В черния списък"; -"room_event_encryption_info_unblock" = "Отблокирай"; -"room_event_encryption_info_block" = "Блокирай"; -"room_event_encryption_info_verify" = "Потвърди..."; -"room_event_encryption_info_unverify" = "Махни потвържд."; -"room_event_encryption_verify_title" = "Потвърди сесията\n\n"; -"room_event_encryption_verify_ok" = "Потвърди"; -// Account -"account_save_changes" = "Запази промените"; -"account_link_email" = "Свържи имейл"; -"account_linked_emails" = "Свързани имейли"; -"account_email_validation_title" = "Очакване на потвърждение"; -"account_email_validation_message" = "Моля, проверете своя имейл адрес и натиснете връзката, която той съдържа. След като направите това, натиснете продължи."; -"account_email_validation_error" = "Неуспешно потвърждение на имейл адрес. Моля, проверете своя имейл адрес и натиснете връзката, която той съдържа. След като направите това, натиснете продължи"; -"account_msisdn_validation_title" = "Очакване на потвърждение"; -"account_msisdn_validation_message" = "Изпратихме Ви SMS с код за активиране. Моля, въведете този код по-долу."; -"account_msisdn_validation_error" = "Неуспешно потвърждение на телефонен номер."; -"account_error_display_name_change_failed" = "Неуспешна смяна на име"; -"account_error_picture_change_failed" = "Неуспешна смяна на профилната снимка"; -"account_error_matrix_session_is_not_opened" = "Matrix сесията не е отворена"; -"account_error_email_wrong_title" = "Невалиден имейл адрес"; -"account_error_email_wrong_description" = "Това не изглежда да е валиден имейл адрес"; -"account_error_msisdn_wrong_title" = "Невалиден телефонен номер"; -"account_error_msisdn_wrong_description" = "Това не изглежда да е валиден телефонен номер"; -// Room creation -"room_creation_name_title" = "Име на стая:"; -"room_creation_name_placeholder" = "(напр. lunchGroup)"; -"room_creation_alias_title" = "Псевдоним на стая:"; -"room_creation_alias_placeholder" = "(напр. #foo:example.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(напр. #foo%@)"; -"room_creation_participants_title" = "Участници:"; -"room_creation_participants_placeholder" = "(напр. @ivan:homeserver1; @georgi:homeserver2...)"; -// Room -"room_please_select" = "Моля, изберете стая"; -"room_error_join_failed_title" = "Неуспешно присъединяване към стаята"; -"room_error_join_failed_empty_room" = "В момента не е възможно да се присъедините отново към празна стая."; -"room_error_name_edition_not_authorized" = "Нямате право да редактирате името на тази стая"; -"room_error_topic_edition_not_authorized" = "Нямате право да редактирате темата на тази стая"; -"room_error_cannot_load_timeline" = "Неуспешно зареждане на хронологията"; -"room_error_timeline_event_not_found_title" = "Неуспешно зареждане на позицията в хронологията"; -"room_error_timeline_event_not_found" = "Беше направен опит да се зареди конкретна точка в хронологията на тази стая, но не я намери"; -"room_left" = "Вие напуснахте стаята"; -"room_no_power_to_create_conference_call" = "Трябва да имате разрешение за изпращане на покани, за да може да започнете групов разговор в тази стая"; -"room_no_conference_call_in_encrypted_rooms" = "Не се поддържат групови разговори в шифровани стаи"; -// Room members -"room_member_ignore_prompt" = "Сигурни ли сте, че искате да скриете всички съобщения от този потребител?"; -"room_member_power_level_prompt" = "Няма да можете да възвърнете тази промяна, тъй като повишавате този потребител до същото ниво на достъп като Вашето.\nСигурни ли сте?"; -// Attachment -"attachment_size_prompt" = "Изпратете с размер:"; -"attachment_original" = "Оригинален: %@"; -"attachment_small" = "Малък: %@"; -"attachment_medium" = "Среден: %@"; -"attachment_large" = "Голям: %@"; -"attachment_cancel_download" = "Отказване на свалянето?"; -"attachment_cancel_upload" = "Отказване на качването?"; -"attachment_multiselection_size_prompt" = "Изпратете снимките с размер:"; -"attachment_multiselection_original" = "Оригинален"; -"attachment_e2e_keys_file_prompt" = "Файлът съдържа ключове за шифроване, експортирани от Matrix клиент.\nИскате ли да видите съдържанието на файла или да импортирате ключовете, които съдържа?"; -"attachment_e2e_keys_import" = "Импортиране..."; -// Contacts -"contact_mx_users" = "Matrix потребители"; -"contact_local_contacts" = "Локални контакти"; -// Groups -"group_invite_section" = "Покани"; -"group_section" = "Групи"; -// Search -"search_no_results" = "Няма резултати"; -"search_searching" = "В процес на търсене..."; -// Time -"format_time_s" = "сек"; -"format_time_m" = "мин"; -"format_time_h" = "ч"; -"format_time_d" = "д"; -// E2E import -"e2e_import_room_keys" = "Импортиране на ключове за стая"; -"e2e_import_prompt" = "Този процес позволява да импортирате ключове за шифроване, които преди сте експортирали от друг Matrix клиент. Тогава ще можете да разшифровате всяко съобщение, което другият клиент може да разшифрова. Експортираният файл може да бъде предпазен с парола. Трябва да въведете парола тук, за да разшифровате файла."; -"e2e_import" = "Импортирай"; -"e2e_passphrase_enter" = "Въведи парола"; -// E2E export -"e2e_export_room_keys" = "Експортиране на ключове за стая"; -"e2e_export_prompt" = "Този процес Ви позволява да експортирате във файл ключовете за съобщения в шифровани стаи. Така ще можете да импортирате файла в друг Matrix клиент, така че той също да може да разшифрова такива съобщения.\nЕкспортираният файл ще позволи на всеки, който може да го прочете, да разшифрова всяко шифровано съобщение, което можете да видите. Трябва да го държите на сигурно място."; -"e2e_export" = "Експортирай"; -"e2e_passphrase_confirm" = "Потвърди парола"; -"e2e_passphrase_empty" = "Паролата не трябва да е празна"; -"e2e_passphrase_not_match" = "Паролите трябва да съвпадат"; -// Others -"user_id_title" = "ID на потребител:"; -"settings_config_user_id" = "ID на потребител: %@"; -"offline" = "офлайн"; -"unsent" = "Неизпратено"; -"error" = "Грешка"; -"not_supported_yet" = "Все още не се поддържа"; -"default" = "по подразбиране"; -"private" = "Лична"; -"public" = "Публична"; -"power_level" = "Ниво на достъп"; -"network_error_not_reachable" = "Моля, проверете интернет връзката си"; -"user_id_placeholder" = "напр.: @ivan:homeserver"; -"ssl_homeserver_url" = "Адрес на Home сървър: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Видео разговорите изискват достъп до камерата, но %@ няма разрешение да я използва"; -"microphone_access_not_granted_for_call" = "Разговорите изискват достъп до микрофона, но %@ няма разрешение да го използва"; -"local_contacts_access_not_granted" = "Откриване на потребители от локални контакти изисква достъп до контактите Ви, но %@ няма разрешение да ги използва"; -"local_contacts_access_discovery_warning_title" = "Откриване на потребители"; -"local_contacts_access_discovery_warning" = "За да открие контакти използващи Matrix, %@ може да изпрати имейл адресите и телефонните номера от телефонния указател към избрания от вас Matrix сървър за самоличност. Ако се поддържа, личните данни могат да бъдат хеширани преди изпращане - вижте политиката за поверителност на сървъра за самоличност за повече информация."; -// Country picker -"country_picker_title" = "Избор на държава"; -// Language picker -"language_picker_title" = "Избор на език"; -"language_picker_default_language" = "По подразбиране (%@)"; -"notice_room_invite" = "%@ покани %@"; -"notice_room_third_party_invite" = "%@ изпрати покана на %@ да се присъедини към стаята"; -"notice_room_third_party_registered_invite" = "%@ прие поканата за %@"; -"notice_room_join" = "%@ се присъедини"; -"notice_room_leave" = "%@ напусна"; -"notice_room_reject" = "%@ отхвърли поканата"; -"notice_room_kick" = "%@ изгони %@"; -"notice_room_unban" = "%@ отблокира %@"; -"notice_room_ban" = "%@ блокира %@"; -"notice_room_withdraw" = "%@ оттегли поканата си за %@"; -"notice_room_reason" = ". Причина: %@"; -"notice_avatar_url_changed" = "%@ смени своята профилна снимка"; -"notice_display_name_set" = "%@ си сложи име %@"; -"notice_display_name_changed_from" = "%@ смени своето име от %@ на %@"; -"notice_display_name_removed" = "%@ премахна своето име"; -"notice_topic_changed" = "%@ промени темата на \"%@\"."; -"notice_room_name_changed" = "%@ промени името на стаята на %@."; -"notice_placed_voice_call" = "%@ започна гласов разговор"; -"notice_placed_video_call" = "%@ започна видео разговор"; -"notice_answered_video_call" = "%@ отговори на повикването"; -"notice_ended_video_call" = "%@ прекрати разговора"; -"notice_conference_call_request" = "%@ заяви VoIP групов разговор"; -"notice_conference_call_started" = "Започна VoIP конференция"; -"notice_conference_call_finished" = "VoIP конференцията приключи"; -// button names -"ok" = "ОК"; -"send" = "Изпрати"; -"copy_button_name" = "Копирай"; -"resend" = "Изпрати отново"; -"redact" = "Премахни"; -"share" = "Сподели"; -"set_power_level" = "Ниво на достъп"; -"delete" = "Изтрий"; -// actions -"action_logout" = "Излез"; -"create_room" = "Създай стая"; -"login" = "Влез"; -"create_account" = "Създай профил"; -"membership_invite" = "Поканен"; -"membership_leave" = "Напуснал"; -"membership_ban" = "Блокиран"; -"num_members_one" = "%@ потребител"; -"num_members_other" = "%@ потребители"; -"kick" = "Изгони"; -"ban" = "Блокирай"; -"unban" = "Отблокирай"; -"message_unsaved_changes" = "Има незапазени промени. При напускане ще се загубят."; -// Login Screen -"login_error_already_logged_in" = "Вече сте в профила си"; -"login_error_must_start_http" = "URL адресът трябва да започва с http[s]://"; -// contacts list screen -"invitation_message" = "Бих искал да си пиша с Вас в matrix. За повече информация, моля, посетете уебсайта http://matrix.org."; -// Settings screen -"settings_title_config" = "Конфигурация"; -"settings_title_notifications" = "Известия"; -// Notification settings screen -"notification_settings_disable_all" = "Изключване на всички известия"; -"notification_settings_enable_notifications" = "Включване на известия"; -"notification_settings_enable_notifications_warning" = "В момента всички известия към всички устройства са изключени."; -"notification_settings_always_notify" = "Известяване винаги"; -"notification_settings_never_notify" = "Известяване никога"; -"notification_settings_word_to_match" = "дума, която да потърсим"; -"notification_settings_highlight" = "Подчертаване"; -"notification_settings_custom_sound" = "Индивидуален звук"; -"notification_settings_per_room_notifications" = "Известия за конкретна стая"; -"notification_settings_per_sender_notifications" = "Известия за конкретен подател"; -"notification_settings_sender_hint" = "@потребител:domain.com"; -"notification_settings_select_room" = "Избиране на стая"; -"notification_settings_other_alerts" = "Други известия"; -"notification_settings_contain_my_user_name" = "Известявай ме със звук за съобщения, съдържащи потребителското ми име"; -"notification_settings_contain_my_display_name" = "Известявай ме със звук за съобщения, съдържащи името ми"; -"notification_settings_just_sent_to_me" = "Известявай ме със звук за съобщения изпратени само до мен"; -"notification_settings_invite_to_a_new_room" = "Известявай ме, когато съм поканен в нова стая"; -"notification_settings_people_join_leave_rooms" = "Известявай ме, когато хората се присъединяват или напускат стаи"; -"notification_settings_receive_a_call" = "Известявай ме, когато получавам обаждане"; -"notification_settings_suppress_from_bots" = "Блокирай известията от ботове"; -"notification_settings_by_default" = "По подразбиране..."; -"notification_settings_notify_all_other" = "Известявай ме за всички други съобщения/стаи"; -"notification_settings_per_word_notifications" = "Известия за конкретна дума"; -// gcm section -"settings_config_home_server" = "Home сървър: %@"; -"settings_config_identity_server" = "Сървър за самоличност: %@"; -// call string -"call_waiting" = "Изчакване..."; -"call_connecting" = "Свързване…"; -"call_ended" = "Разговорът приключи"; -"call_ring" = "Позвъняване..."; -"incoming_video_call" = "Входящо видео повикване"; -"incoming_voice_call" = "Входящо гласово повикване"; -"call_invite_expired" = "Поканата за разговор изтече"; -// unrecognized SSL certificate -"ssl_trust" = "Довери се"; -"ssl_logout_account" = "Излез"; -"ssl_remain_offline" = "Игнорирай"; -"ssl_fingerprint_hash" = "Отпечатък (%@):"; -"ssl_could_not_verify" = "Неуспешно потвърждаване на самоличността на отдалечения сървър."; -"ssl_cert_not_trust" = "Това може да означава, че някой злонамерено прихваща Вашата връзка, или че телефонът Ви не се доверява на сертификата, предоставен от отдалечения сървър."; -"ssl_cert_new_account_expl" = "Ако администраторът на сървъра е обявил, че това е нормално, уверете се, че отпечатъкът по-долу съвпада с този, предоставен от него."; -"ssl_unexpected_existing_expl" = "Сертификатът е различен от този, на който телефонът Ви се доверява. Това е МНОГО НЕОБИЧАЙНО. Препоръчваме да НЕ ПРИЕМАТЕ този нов серфитикат."; -"ssl_expected_existing_expl" = "Сертификатът се промени от такъв, който е бил доверен, на такъв който вече не е. Сървърът може да е подновил своя сертификат. Свържете се с администратора за правилния отпечатък."; -"ssl_only_accept" = "Приемайте сертификата САМО ако администратора на сървъра е публикувал отпечатък, който съвпада с този по-горе."; -"room_event_encryption_verify_message" = "За да потвърдите, че на това устройство може да се вярва, моля свържете се със собственика му по друг начин (напр. на живо или чрез телефонен разговор) и го попитайте дали ключът, който той вижда в неговите настройки на потребителя за това устройство, съвпада с ключа по-долу:\n\n\tИме на сесията: %@\n\tID на сесията: %@\n\tКлюч на сесията: %@\n\nАко съвпада, моля натиснете бутона за потвърждение по-долу. Ако не, то тогава някой друг имитира тази сесия и вероятно искате вместо това да натиснете бутона за черен списък.\n\nВ бъдеще този процес на потвърждение ще бъде по-лесен."; -"notification_settings_global_info" = "Настройки на известията се пазят в потребителския Ви профил и се споделят измежду всички клиенти, които ги поддържат (включително и известия на работния плот).\n\nПравилата се проверяват по ред; първото съвпадащо правило дефинира резултата за съобщението.\nТака че: Известията за конкретна дума са по-важни от известията за конкретна стая, които пък са по-важни от известията за конкретен потребител.\nАко има няколко еднотипни правила, с приоритет е първото съвпадащо."; -"notification_settings_per_word_info" = "Съвпаденията за думите се правят без взимане под внимание на малка/главна буква. Могат да съдържат и * wildcard символ. Така че:\nfoo намира съвпадения за низа foo, ограден от разделители за дума (напр. пунктуация и празно място или начало/край на ред).\nfoo* намира съвпадения във всяка дума започваща с foo.\n*foo* намира съвпадения във всяка дума включваща някъде в себе си низа foo."; -"notice_sticker" = "стикер"; -"notice_in_reply_to" = "В отговор на"; -"error_common_message" = "Възникна грешка. Моля опитайте пак по-късно."; -// Reply to message -"message_reply_to_sender_sent_an_image" = "изпрати снимка."; -"message_reply_to_sender_sent_a_video" = "изпрати видео."; -"message_reply_to_sender_sent_an_audio_file" = "изпрати аудио файл."; -"message_reply_to_sender_sent_a_file" = "изпрати файл."; -"message_reply_to_message_to_reply_to_prefix" = "В отговор на"; -"login_error_resource_limit_exceeded_title" = "Надхвърлен лимит за ресурс"; -"login_error_resource_limit_exceeded_message_default" = "Този сървър е надхвърлил някой свой лимит."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Този сървър е достигнал своя лимит за потребители на месец."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nМоля, свържете се с администратора на услугата за да продължите да я използвате."; -"login_error_resource_limit_exceeded_contact_button" = "Свържи се с администратора"; -"e2e_passphrase_create" = "Създай парола"; -"account_error_push_not_allowed" = "Уведомленията не са разрешени"; -"notice_room_third_party_revoked_invite" = "%@ оттегли поканата за присъединяването на %@ към стаята"; -"device_details_rename_prompt_title" = "Име на сесията"; -"notice_encryption_enabled_ok" = "%@ включи шифроване от-край-до-край."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ включи шифроване от-край-до-край (неразпознат алгоритъм %2$@)."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Направихте бъдещите съобщения видими за всички, от момента на присъединяването им."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Направихте бъдещата история на стаята видима за всички нейни членове, от момента на присъединяването им."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Направихте бъдещите съобщения видими за всички, от момента на поканването им."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Направихте бъдещата история на стаята видима за всички нейни членове, от момента на поканването им."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Направихте бъдещите съобщения видими за всички членове на стаята."; -"notice_room_history_visible_to_members_by_you" = "Направихте бъдещата история на стаята видима за всички нейни членове."; -"notice_room_history_visible_to_anyone_by_you" = "Направихте бъдещата история на стаята видима за всички."; -"notice_redaction_by_you" = "Редактирахте събитие (идентификатор: %@)"; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Включихте шифроване от-край-до-край (непознат алгоритъм %@)."; -"notice_encryption_enabled_ok_by_you" = "Включихте шифроване от-край-до-край."; -"notice_room_created_by_you_for_dm" = "Присъединихте се."; -"notice_room_created_by_you" = "Създадохте и конфигурирахте стаята."; -"notice_profile_change_redacted_by_you" = "Обновихте %@ профила си"; -"notice_event_redacted_by_you" = " от вас"; -"notice_room_topic_removed_by_you" = "Премахнахте темата"; -"notice_room_name_removed_by_you_for_dm" = "Премахнахте името"; -"notice_room_name_removed_by_you" = "Премахнахте името на стаята"; -"notice_conference_call_request_by_you" = "Направихте заявка за VoIP конференция"; -"notice_ended_video_call_by_you" = "Прекратихте разговора"; -"notice_answered_video_call_by_you" = "Отговорихте на разговора"; -"notice_placed_video_call_by_you" = "Започнахте видео разговор"; -"notice_placed_voice_call_by_you" = "Започнахте гласов разговор"; -"notice_room_name_changed_by_you_for_dm" = "Променихте името на %@."; -"notice_room_name_changed_by_you" = "Променихте името на стаята на %@."; -"notice_topic_changed_by_you" = "Променихте темата на \"%@\"."; -"notice_display_name_removed_by_you" = "Премахнахте името си"; -"notice_display_name_changed_from_by_you" = "Променихте името си от %@ на %@"; -"notice_display_name_set_by_you" = "Променихте името си на %@"; -"notice_avatar_url_changed_by_you" = "Променихте снимката си"; -"notice_room_withdraw_by_you" = "Оттеглихте поканата на %@"; -"notice_room_ban_by_you" = "Блокирахте %@"; -"notice_room_unban_by_you" = "Отблокирахте %@"; -"notice_room_kick_by_you" = "Изгонихте %@"; -"notice_room_reject_by_you" = "Отхвърлихте поканата"; -"notice_room_leave_by_you" = "Напуснахте"; -"notice_room_join_by_you" = "Присъединихте се"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Оттеглихте поканата на %@"; -"notice_room_third_party_revoked_invite_by_you" = "Оттеглихте поканата от %@ за присъединяване към стаята"; -"notice_room_third_party_registered_invite_by_you" = "Приехте поканата за %@"; -"notice_room_third_party_invite_by_you_for_dm" = "Поканихте %@"; -"notice_room_third_party_invite_by_you" = "Изпратихте покана към %@ за присъединяване в стаята"; -"notice_room_invite_you" = "%@ ви покани"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "Поканихте %@"; -"notice_room_name_changed_for_dm" = "%@ промени името на %@."; -"notice_room_third_party_revoked_invite_for_dm" = "%@ оттегли поканата от %@"; -"notice_room_third_party_invite_for_dm" = "%@ покани %@"; -"room_left_for_dm" = "Напуснахте"; -"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" = "%@ направи бъдещите съобщения видими за всички членове в стаята."; -"notice_room_aliases_for_dm" = "Псевдонимите са: %@"; -"notice_room_power_level_intro_for_dm" = "Нивата на достъп на членовете са:"; -"notice_room_join_rule_public_by_you_for_dm" = "Направихте стаята публична."; -"notice_room_join_rule_public_by_you" = "Направихте тази стая публична."; -"notice_room_join_rule_public_for_dm" = "%@ направи стаята публична."; -"notice_room_join_rule_public" = "%@ направи стаята публична."; -"notice_room_join_rule_invite_by_you_for_dm" = "Направихте достъпа да е само за поканени."; -"notice_room_join_rule_invite_by_you" = "Направихте тази стая достъпна само за поканени."; -"notice_room_join_rule_invite_for_dm" = "%@ направи достъпа да е само за поканени."; -// New -"notice_room_join_rule_invite" = "%@ направи стаята достъпна само за поканени."; -"notice_room_created_for_dm" = "%@ се присъедини."; -"notice_room_name_removed_for_dm" = "%@ премахна името"; -"call_transfer_to_user" = "Прехвърли към %@"; -"call_consulting_with_user" = "Консултация с %@"; -"call_video_with_user" = "Видео разговор с %@"; -"call_voice_with_user" = "Гласов разговор с %@"; -"call_more_actions_dialpad" = "Панел за набиране"; -"call_more_actions_transfer" = "Прехвърляне"; -"call_more_actions_audio_use_headset" = "Използвай звук от слушалките"; -"call_more_actions_audio_use_device" = "Използвай звук от устройството"; -"call_more_actions_change_audio_device" = "Смени аудио устройството"; -"call_more_actions_unhold" = "Възобнови"; -"call_more_actions_hold" = "Задръж"; -"call_holded" = "Задържахте разговора"; -"call_remote_holded" = "%@ задържа разговора"; -"call_ringing" = "Звънене…"; -"notice_declined_video_call_by_you" = "Отказахте разговора"; -"notice_declined_video_call" = "%@ отказа разговора"; -"e2e_passphrase_too_short" = "Паролата е прекалено кратка (трябва да е дълга поне %d символа)"; -"resume_call" = "Възобнови"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ca.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ca.lproj/MatrixKit.strings deleted file mode 100644 index 7c376a636..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ca.lproj/MatrixKit.strings +++ /dev/null @@ -1,363 +0,0 @@ -"matrix" = "Matrix"; -"login_password_placeholder" = "Contrasenya"; -"login_optional_field" = "opcional"; -"login_email_placeholder" = "Adreça de correu electrònic"; -"view" = "Veure"; -"back" = "Torna"; -"continue" = "Continua"; -"leave" = "Sortir"; -"invite" = "Convida"; -"retry" = "Torna a provar"; -"cancel" = "Cancel·lar"; -"save" = "Desar"; -// Login Screen -"login_create_account" = "Crear compte:"; -"login_server_url_placeholder" = "URL (ex. https://matrix.org)"; -"login_home_server_title" = "Servidor hoste:"; -"login_home_server_info" = "El teu servidor hoste desa totes les teves converses i dades del compte"; -"login_identity_server_title" = "Servidor d'identitat:"; -"login_identity_server_info" = "Matrix proporciona servidors d'identitat per fer un seguiment dels correus electrònics etc. que pertanyen als identificadors Matrix. Actualment només existeix https://matrix.org."; -"login_user_id_placeholder" = "ID a Matrix (ex @bob:matrix.org o bob)"; -"login_display_name_placeholder" = "Mostra nom (ex. Bob Obson)"; -// room details dialog screen -"room_details_title" = "Detalls de la sala"; -"login_email_info" = "Especificar una adreça de correu electrònic permet que altres usuaris et trobin més fàcilment a Matrix i et proporcionarà una manera de restablir la teva contrasenya en el futur."; -"login_prompt_email_token" = "Introduïu el teu codi de validació de correu electrònic:"; -"login_error_title" = "Error d'inici de sessió"; -"login_error_no_login_flow" = "No hem pogut recuperar la informació d'autenticació d'aquest servidor hoste"; -"login_error_do_not_support_login_flows" = "Actualment no admetem cap o tots els fluxos d'inici de sessió definits per aquest servidor hoste"; -"login_error_registration_is_not_supported" = "El registre no és suportat per ara"; -"login_error_forbidden" = "Nom d'usuari/contrasenya invàlid"; -"login_error_unknown_token" = "No s'ha reconegut el token d'accés especificat"; -"login_error_bad_json" = "JSON incorrecte"; -"login_error_not_json" = "No contenia JSON vàlid"; -"login_error_limit_exceeded" = "S'han enviat massa sol·licituds"; -"login_error_user_in_use" = "Aquest nom d'usuari ja està en ús"; -"login_error_login_email_not_yet" = "L'enllaç del correu electrònic que encara no heu fet clic"; -"login_use_fallback" = "Usa la pàgina de devolució"; -"login_leave_fallback" = "Cancel·lar"; -"login_invalid_param" = "Paràmetre invàlid"; -"register_error_title" = "Error de registre"; -"login_error_forgot_password_is_not_supported" = "Contrasenya oblidada encara no es suportat"; -"login_mobile_device" = "Mòbil"; -"login_tablet_device" = "Tableta"; -"login_desktop_device" = "Escriptori"; -// Action -"no" = "No"; -"yes" = "Sí"; -"abort" = "Avortar"; -"close" = "Tanca"; -"discard" = "Descarta"; -"dismiss" = "Omet"; -"sign_up" = "Registre"; -"submit" = "Presentar"; -"submit_code" = "Presentar codi"; -"set_default_power_level" = "Restablir el nivell de potència"; -"set_moderator" = "Establir el Moderador"; -"set_admin" = "Establir l'Administrador"; -"start_chat" = "Iniciar xat"; -"start_voice_call" = "Iniciar trucada de veu"; -"start_video_call" = "Iniciar vídeo trucada"; -"mention" = "Mencionar"; -"select_account" = "Selecciona un compte"; -"attach_media" = "Adjunta mitjans de la biblioteca"; -"capture_media" = "Fes una foto o un vídeo"; -"invite_user" = "Convida usuari Matrix"; -"reset_to_default" = "Estableix per defecte"; -"resend_message" = "Reenvia el missatge"; -"select_all" = "Selecciona-ho tot"; -"cancel_upload" = "Cancel·la la pujada"; -"cancel_download" = "Cancel·la la descàrrega"; -"show_details" = "Mostra els detalls"; -"answer_call" = "Respon la trucada"; -"reject_call" = "Rebutja la trucada"; -"end_call" = "Penja"; -"ignore" = "Ignora"; -"unignore" = "Deixa de ignorar"; -// Events formatter -"notice_avatar_changed_too" = "(també s'ha canviat l'avatar)"; -"notice_room_name_removed" = "%@ ha eliminat el nom de la sala"; -"notice_room_topic_removed" = "%@ ha eliminat el tema"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " per %@"; -"notice_event_redacted_reason" = " [motiu: %@]"; -"notice_profile_change_redacted" = "%@ ha actualitzat el seu perfil %@"; -"notice_room_created" = "%@ ha creat la sala"; -"notice_room_join_rule" = "La norma per entrar és: %@"; -"notice_room_power_level_intro" = "El nivell de potència dels participants és:"; -"notice_room_power_level_acting_requirement" = "Els nivells de potència mínims que un usuari ha de tenir abans d'actuar són:"; -"notice_room_power_level_event_requirement" = "Els nivells mínims de potència relacionats als esdeveniments són:"; -"notice_room_aliases" = "Els àlies de la sala són: %@"; -"notice_room_related_groups" = "Els grups associats amb aquesta sala són: %@"; -"notice_encrypted_message" = "Missatge xifrat"; -"notice_encryption_enabled" = "%@ ha activat el xifrat punt a punt (algoritme %@)"; -"notice_image_attachment" = "adjunt d'imatge"; -"notice_audio_attachment" = "adjunt d'àudio"; -"notice_video_attachment" = "adjunt de vídeo"; -"notice_location_attachment" = "adjunt de localització"; -"notice_file_attachment" = "adjunt de fitxer"; -"notice_invalid_attachment" = "adjunt invàlid"; -"notice_unsupported_attachment" = "Adjunt no suportat: %@"; -"notice_feedback" = "Esdeveniment de resposta (id: %@): %@"; -"notice_redaction" = "%@ ha redactat un esdeveniment (id: %@)"; -"notice_error_unsupported_event" = "Esdeveniment no suportat"; -"notice_error_unexpected_event" = "Esdeveniment inesperat"; -"notice_error_unknown_event_type" = "Tipus desconegut d'esdeveniment"; -"notice_room_history_visible_to_anyone" = "%@ ha fet visible per qualsevol l'històric futur de la sala."; -"notice_room_history_visible_to_members" = "%@ ha fet visible per tots els participants l'històric futur de la sala."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ ha fet visible l'històric futur de la sala per a tots els membres, a partir de que hi són convidats."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ ha fet visible l'històric futur de la sala a tots els membres, des de que entren a la sala."; -"notice_crypto_unable_to_decrypt" = "** No es pot desxifrar: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "El dispositiu del remitent no ha enviat les claus per aquest missatge."; -// room display name -"room_displayname_empty_room" = "Sala buida"; -"room_displayname_two_members" = "%@ i %@"; -"room_displayname_more_than_two_members" = "%@ i %u més"; -// Settings -"settings" = "Configuració"; -"settings_enable_inapp_notifications" = "Habilitar les notificacions de les App integrades"; -"settings_enable_push_notifications" = "Activar notificacions push"; -"settings_enter_validation_token_for" = "Introduir el codi de validació per %@:"; -"notification_settings_room_rule_title" = "Sala: '%@'"; -// Devices -"device_details_title" = "Informació del dispositiu\n"; -"device_details_name" = "Nom\n"; -"device_details_identifier" = "ID del dispositiu\n"; -"device_details_last_seen" = "Vist per últim cop\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "Nom del dispositiu:"; -"device_details_delete_prompt_title" = "Autenticació"; -"device_details_delete_prompt_message" = "Aquesta operació necessita que t'autentiquis.\nPer continuar, introdueix la teva contrasenya."; -// Encryption information -"room_event_encryption_info_title" = "Informació del xifrat punt a punt\n\n"; -"room_event_encryption_info_event" = "Informació del esdeveniment\n"; -"room_event_encryption_info_event_user_id" = "ID d'usuari\n"; -"room_event_encryption_info_event_identity_key" = "Clau de la identitat Curve25519\n"; -"room_event_encryption_info_event_fingerprint_key" = "Empremta digital Ed25519 reclamada\n"; -"room_event_encryption_info_event_algorithm" = "Algoritme\n"; -"room_event_encryption_info_event_session_id" = "ID de la sessió\n"; -"room_event_encryption_info_event_decryption_error" = "Error de desxifrat\n"; -"room_event_encryption_info_event_unencrypted" = "no xifrat"; -"room_event_encryption_info_event_none" = "cap"; -"room_event_encryption_info_device" = "\nInformació del dispositiu del remitent\n"; -"room_event_encryption_info_device_unknown" = "dispositiu desconegut\n"; -"room_event_encryption_info_device_name" = "Nom\n"; -"room_event_encryption_info_device_id" = "ID del dispositiu\n"; -"room_event_encryption_info_device_verification" = "Verificació\n"; -"room_event_encryption_info_device_fingerprint" = "Empremta digital Ed25519\n"; -"room_event_encryption_info_device_verified" = "Verificat"; -"room_event_encryption_info_device_not_verified" = "NO verificat"; -"room_event_encryption_info_device_blocked" = "Bloquejat"; -"room_event_encryption_info_verify" = "Verifica..."; -"room_event_encryption_info_unverify" = "No verificar"; -"room_event_encryption_info_block" = "Llista negre"; -"room_event_encryption_info_unblock" = "Desbloquejar"; -"room_event_encryption_verify_title" = "Verifica el dispositiu\n\n"; -"room_event_encryption_verify_message" = "Per a verificar que aquest dispositiu pot ser confiable si us plau contacta el seu propietari per altres mijans (ex. trucant-lo al telèfon) i pregunta-li si la clau que veu a la configuració d'usuari d'aquest dispositiu coincideix amb la clau següent:\n\n\tNom del dispositiu: %@\n\tID del dispositiu: %@\n\tClau del dispositiu: %@\n\nSi coincideix, prem el botó verificar de sota. Si no coincideix es que algú altre està interceptant aquest dispositiu i probablement vols prema el botó de bloquejar a canvi.\n\nEn el futur aquest procés de verificació serà més sofisticat."; -"room_event_encryption_verify_ok" = "Verifica"; -// Account -"account_save_changes" = "Desar canvis"; -"account_link_email" = "Vincular correu electrònic"; -"account_linked_emails" = "Correus electrònics vinculats"; -"account_email_validation_title" = "Verificació pendent"; -"account_email_validation_message" = "Revisa el teu correu electrònic i fes clic a l'enllaç que conté. Un cop fet això, fes clic a continua."; -"account_email_validation_error" = "No ha estat possible verificar l'adreça de correu electrònic. Mira el correu electrònic i fes clic en l'enllaç que conté. Un cop fet això, fes clic per continuar"; -"account_msisdn_validation_title" = "Verificació pendent"; -"account_msisdn_validation_message" = "Hem enviat un SMS amb un codi d'activació. Introdueix aquest codi a continuació."; -"account_msisdn_validation_error" = "No es pot verificar el número de telèfon."; -"account_error_display_name_change_failed" = "Ha fallat el canvi del nom a mostrar"; -"account_error_picture_change_failed" = "Ha fallat el canvi de foto"; -"account_error_matrix_session_is_not_opened" = "No està oberta la sessió Matrix"; -"account_error_email_wrong_title" = "Adreça de correu electrònic no valida"; -"account_error_email_wrong_description" = "Aquest no sembla ser un correu electrònic vàlid"; -"account_error_msisdn_wrong_title" = "Número de telèfon invalid"; -"account_error_msisdn_wrong_description" = "Aquest no sembla ser un número de telèfon vàlid"; -// Room creation -"room_creation_name_title" = "Nom de la sala:"; -"room_creation_name_placeholder" = "(ex. collaesmorzar)"; -"room_creation_alias_title" = "Àlies de sala:"; -"room_creation_alias_placeholder" = "(ex. #foo:exemple.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(ex. #foo%@)"; -"room_creation_participants_title" = "Participants:"; -"room_creation_participants_placeholder" = "(ex. @jordi:servidorhoste1; @juan:servidorhoste2...)"; -// Room -"room_please_select" = "Si us plau tria una sala"; -"room_error_join_failed_title" = "No s'ha pogut entrar a la sala"; -"room_error_join_failed_empty_room" = "Actualment no es pot tornar a entrar a una sala buida."; -"room_error_name_edition_not_authorized" = "No tens permís per editar el nom d'aquesta sala"; -"room_error_topic_edition_not_authorized" = "No tens permís per editar el tema d'aquesta sala"; -"room_error_cannot_load_timeline" = "No s'ha pogut carregar la línia de temps"; -"room_error_timeline_event_not_found_title" = "No s'ha pogut carregar la posició de la línia de temps"; -"room_error_timeline_event_not_found" = "Aquesta aplicació estava intentant carregar un punt especific en la línia de temps d'aquesta sala però no l'ha trobat"; -"room_left" = "Has sortit de la sala"; -"room_no_power_to_create_conference_call" = "Necessites permís per a convidar a iniciar una conferència en aquesta sala"; -"room_no_conference_call_in_encrypted_rooms" = "No es poden fer conferències en sales xifrades"; -// Room members -"room_member_ignore_prompt" = "Estàs segur que vols amagar tots els missatges d'aquest usuari?"; -"room_member_power_level_prompt" = "Si puges aquest usuari al mateix nivell de poder que el teu després no podràs desfer el canvi.\nEstàs segur?"; -// Attachment -"attachment_size_prompt" = "Ho vols enviar com a:"; -"attachment_original" = "Mida actual: %@"; -"attachment_small" = "Petit: %@"; -"attachment_medium" = "Mitjà: %@"; -"attachment_large" = "Gran: %@"; -"attachment_cancel_download" = "Cancel·lar la descàrrega?"; -"attachment_cancel_upload" = "Cancel·lar la pujada?"; -"attachment_multiselection_size_prompt" = "Vols enviar imatges com a:"; -"attachment_multiselection_original" = "Mida actual"; -"attachment_e2e_keys_file_prompt" = "Aquest fitxer conté claus xifrades exportades des d'un client Matrix.\nVols veure el contingut del fitxer o importar les claus que conté?"; -"attachment_e2e_keys_import" = "Importa..."; -// Contacts -"contact_mx_users" = "Usuaris de Matrix"; -"contact_local_contacts" = "Contactes locals"; -// Groups -"group_invite_section" = "Convits"; -"group_section" = "Grups"; -// Search -"search_no_results" = "Sense resultats"; -"search_searching" = "Cercant..."; -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "h"; -"format_time_d" = "d"; -// E2E import -"e2e_import_room_keys" = "Importa les claus de la sala"; -"e2e_import_prompt" = "Aquest procés et pemet importar les claus de xifratge que previament has exportat des de un altre client Matrix. Després podràs desxifrar qualsevol missatge que l'altre client pugui xifrar.\nEl fitxer exportat està protegit amb una contrasenya. Hauries de introduir la contrasenya aquí per desxifrar-l'ho."; -"e2e_import" = "Importa"; -"e2e_passphrase_enter" = "Introduir contrasenya"; -// E2E export -"e2e_export_room_keys" = "Exporta les claus E2E de la sala"; -"e2e_export_prompt" = "Aquest procés et permet exportar a un fitxer local les claus dels missatges que has rebut de sales xifrades. A continuació, podràs importar el fitxer a un altre client Matrix en el futur, de manera que aquest client també podrà desxifrar aquests missatges.\nEl fitxer exportat permetrà que qualsevol que pugui llegir-lo per desxifrar qualsevol dels missatges xifrats que tu pots veure, així que has de tenir cura de mantenir-lo segur."; -"e2e_export" = "Exporta les claus E2E"; -"e2e_passphrase_confirm" = "Confirma la contrasenya"; -"e2e_passphrase_empty" = "La contrasenya no ha de estar buida"; -"e2e_passphrase_not_match" = "Les contrasenyes han de coincidir"; -// Others -"user_id_title" = "ID d'usuari:"; -"offline" = "fora de línia"; -"unsent" = "No enviats"; -"error" = "Error"; -"not_supported_yet" = "Encara no suportat"; -"default" = "per defecte"; -"private" = "Privat"; -"public" = "Públic"; -"power_level" = "Nivell de potència"; -"network_error_not_reachable" = "Si us plau verifica la teva connexió de xarxa"; -"user_id_placeholder" = "ex: @jordi:servidorhoste"; -"ssl_homeserver_url" = "URL del Servidor Hoste: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Les vídeo trucades necessiten permís per accedir a la Càmera però %@ no té permís per utilitzar-la"; -"microphone_access_not_granted_for_call" = "Les trucades necessiten accedir al Micròfon però %@ no té permís per utilitzar-lo"; -"local_contacts_access_not_granted" = "El descobriment dels usuaris en els contactes locals requereix l'accés als vostres contactes, però %@ no té permís per utilitzar-lo"; -"local_contacts_access_discovery_warning_title" = "Descobriment d'usuaris"; -"local_contacts_access_discovery_warning" = "%@ vol pujar les adreces de correu i els números de telèfon dels teus Contactes per a poder descobrir usuaris"; -// Country picker -"country_picker_title" = "Escull un país"; -// Language picker -"language_picker_title" = "Escull l'idioma"; -"language_picker_default_language" = "Per defecte (%@)"; -"notice_room_invite" = "%@ ha convidat a %@"; -"notice_room_third_party_invite" = "%@ ha enviat una invitació %@ per entrar a la sala"; -"notice_room_third_party_registered_invite" = "%@ ha acceptat la invitació per a %@"; -"notice_room_join" = "%@ s'ha unit a la sala"; -"notice_room_leave" = "%@ ha marxat"; -"notice_room_reject" = "%@ ha rebutjat la invitació"; -"notice_room_kick" = "%@ ha fet fora a %@"; -"notice_room_unban" = "%@ ha readmès a %@"; -"notice_room_ban" = "%@ ha expulsat a %@"; -"notice_room_withdraw" = "%@ ha anul·lat la invitació de %@"; -"notice_room_reason" = ". Motiu: %@"; -"notice_avatar_url_changed" = "%@ ha canviat el seu avatar"; -"notice_display_name_set" = "%@ ha canviat el seu nom a %@"; -"notice_display_name_changed_from" = "%@ ha canviat el seu nom de %@ a %@"; -"notice_display_name_removed" = "%@ ha eliminat el seu nom visible"; -"notice_topic_changed" = "%@ ha canviat el tema a: %@"; -"notice_room_name_changed" = "%@ ha canviat el nom de la sala a: %@"; -"notice_placed_voice_call" = "%@ ha iniciat una trucada de veu"; -"notice_placed_video_call" = "%@ ha iniciat una vídeo conferència"; -"notice_answered_video_call" = "%@ ha contestat la trucada"; -"notice_ended_video_call" = "%@ ha finalitzat la trucada"; -"notice_conference_call_request" = "%@ ha sol·licitat una conferència VoIP"; -"notice_conference_call_started" = "Conferència VoIP iniciada"; -"notice_conference_call_finished" = "Conferència VoIP finalitzada"; -// button names -"ok" = "D'acord"; -"send" = "Envia"; -"copy_button_name" = "Copia"; -"resend" = "Reenvia"; -"redact" = "Elimina"; -"share" = "Comparteix"; -"set_power_level" = "Nivell de potència"; -"delete" = "Esborra"; -// actions -"action_logout" = "Tancar sessió"; -"create_room" = "Crear sala"; -"login" = "Iniciar sessió"; -"create_account" = "Crear compte"; -"membership_invite" = "Convidat"; -"membership_leave" = "Ha sortit"; -"membership_ban" = "Expulsat"; -"num_members_one" = "usuari %@"; -"num_members_other" = "Usuaris de %@"; -"kick" = "Fer fora"; -"ban" = "Expulsa"; -"unban" = "Readmetre"; -"message_unsaved_changes" = "Hi ha canvis no desats. Si ho deixes es perdran."; -// Login Screen -"login_error_already_logged_in" = "Ja autenticat"; -"login_error_must_start_http" = "La URL ha de començar per http[s]://"; -// contacts list screen -"invitation_message" = "M'agradaría xatejar amb tu amb matrix. Si us plau visita el lloc http://matrix.org per a més informació."; -// Settings screen -"settings_title_config" = "Configuració"; -"settings_title_notifications" = "Notificacions"; -// Notification settings screen -"notification_settings_disable_all" = "Desactiva totes les notificacions"; -"notification_settings_enable_notifications" = "Activa les notificacions"; -"notification_settings_enable_notifications_warning" = "Totes les notificacions de tots els dispositius estan actualment desactivades."; -"notification_settings_global_info" = "Els ajustos de les notificacions son desades en el teu compte i compartides amb tots els clients que les suporten (incloent les notificacions d'escriptori).\n\nLes normes son aplicades en ordre; la primera norma que coincideix defineix el resultat del missatge.\nPer tant: es notificacions per paraula són més importants que les notificacions per sales i aquestes són més importants que les notificacions per remitents.\nPer a diverses normes del mateix tipus, la primera de la llista que coincideix té prioritat."; -"notification_settings_per_word_notifications" = "Notificacions per paraula"; -"notification_settings_per_word_info" = "Les paraules coincideixen amb el cas de forma insensible i poden incloure un comodí *. Per tant:\nfoo coincideix amb la cadena foo rodejada de delimitadors de paraules (p. ex. puntuació i espai en blanc o inici/final de línia).\nfoo* coincideix amb qualsevol paraula que començi per foo.\n* foo* coincideix amb qualsevol paraula que inclogui les 3 lletres foo."; -"notification_settings_always_notify" = "Notifica sempre"; -"notification_settings_never_notify" = "Mai notifica"; -"notification_settings_word_to_match" = "paraula coincident"; -"notification_settings_highlight" = "Ressaltat"; -"notification_settings_custom_sound" = "So personaltizat"; -"notification_settings_per_room_notifications" = "Notificacions per sala"; -"notification_settings_per_sender_notifications" = "Notificacions per remitent"; -"notification_settings_sender_hint" = "@usuari:domini.com"; -"notification_settings_select_room" = "Escull una sala"; -"notification_settings_other_alerts" = "Altres avisos"; -"notification_settings_contain_my_user_name" = "Notificar-me amb un so els missatges que continguin el meu nom d'usuari"; -"notification_settings_contain_my_display_name" = "Notificar-me amb un so els missatges que continguin el meu nom visible"; -"notification_settings_just_sent_to_me" = "Notificar-me amb un so els missatges enviats per mi"; -"notification_settings_invite_to_a_new_room" = "Notificar-me quan sigui convidat a una nova sala"; -"notification_settings_people_join_leave_rooms" = "Notificar-me quan algú entri o marxi de les sales"; -"notification_settings_receive_a_call" = "Notificar-me quan rebi una trucada"; -"notification_settings_suppress_from_bots" = "Suprimir les notificacions de robots"; -"notification_settings_by_default" = "Per defecte..."; -"notification_settings_notify_all_other" = "Notifica tots els altres missatges/sales"; -// gcm section -"settings_config_home_server" = "Servidor hoste: %@"; -"settings_config_identity_server" = "Servidor d'identitat: %@"; -"settings_config_user_id" = "ID d'usuari: %@"; -// call string -"call_waiting" = "Esperant..."; -"call_connecting" = "Establint la trucada..."; -"call_ended" = "Trucada finalitzada"; -"call_ring" = "Trucant..."; -"incoming_video_call" = "Vídeo trucada entrant"; -"incoming_voice_call" = "Trucada de veu entrant"; -"call_invite_expired" = "Invitació de trucada ha caducat"; -// unrecognized SSL certificate -"ssl_trust" = "Confia"; -"ssl_logout_account" = "Tancar sessió"; -"ssl_remain_offline" = "Ignora"; -"ssl_fingerprint_hash" = "Empremta digital (%@):"; -"ssl_could_not_verify" = "No s'ha pogut verificar la identitat del servidor remot."; -"ssl_cert_not_trust" = "Això pot voler dir que algú està maliciosament interceptant el tràfic o que el teu telèfon no confia en el certificat proporcionat pel servidor remot."; -"ssl_cert_new_account_expl" = "Si l'administrador del servidor ha dit que això és correcte, assegura't que la següent empremta digital coincideix amb la que t'ha donat."; -"ssl_unexpected_existing_expl" = "El certificat ha canviat respecte al que el teu telèfon hi havia confiat. Això es MOLT INUSUAL. Es recomana que NO ACCEPTIS aquest nou certificat."; -"ssl_expected_existing_expl" = "El certificat ha canviat del prèviament confiat a un que no es confiable. El servidor pot haver renovat el certificat. Posa't en contacte amb l'administrador del servidor per obtenir l'empremta digital desitjada."; -"ssl_only_accept" = "NOMÉS accepteu el certificat si l'administrador del servidor ha publicat una empremta digital que coincideixi amb l'anterior."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/cy.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/cy.lproj/MatrixKit.strings deleted file mode 100644 index 6bed7d575..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/cy.lproj/MatrixKit.strings +++ /dev/null @@ -1,383 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Creu cyfrif:"; -"login_server_url_placeholder" = "URL (e.e. https://matrix.org)"; -"login_home_server_title" = "URL Hafanweinydd:"; -"login_home_server_info" = "Mae'ch hafanweinydd yn cadw'ch holl sgyrsiau a gwybodaeth cyfrif"; -"login_identity_server_title" = "URL Gweinydd Adnabod:"; -"login_identity_server_info" = "Mae Matrix yn darparu gweinyddwyr adnabod i olrhain pa e-byst ac ati sy'n perthyn i IDau Matrix. Dim ond https://matrix.org sy'n bodoli ar hyn o bryd."; -"login_user_id_placeholder" = "ID Matrix (e.g. @bob:matrix.org neu bob)"; -"login_password_placeholder" = "Cyfrinair"; -"login_optional_field" = "dewisol"; -"login_display_name_placeholder" = "Enw arddangos (e.e. Jac y Jwc)"; -"login_email_info" = "Mae nodi cyfeiriad e-bost yn caniatáu i ddefnyddwyr eraill ddod o hyd i chi ar Matrix yn haws, a bydd yn rhoi ffordd i chi ailosod eich cyfrinair yn y dyfodol."; -"login_email_placeholder" = "Cyfeiriad E-bost"; -"login_prompt_email_token" = "Rhowch eich tocyn gwirio e-bost:"; -"login_error_title" = "Methwyd Mewngofnodi"; -"login_error_no_login_flow" = "Methom ni â chasglu gwybodaeth gwirio gan y Hafanweinydd hwn"; -"login_error_do_not_support_login_flows" = "Ar hyn o bryd nid ydym yn cefnogi unrhyw lif mewngofnodi, neu'rrhan ohono, a ddiffinnir gan y Hafanweinydd hwn"; -"login_error_registration_is_not_supported" = "Ni chefnogir cofrestru ar hyn o bryd"; -"login_error_forbidden" = "Enw defnyddiwr/cyfrinair annilys"; -"login_error_unknown_token" = "Ni chydnabuwyd y tocyn mynediad a nodwyd"; -"login_error_bad_json" = "JSON camffurfiedig"; -"login_error_not_json" = "Nid oedd yn cynnwys JSON dilys"; -"login_error_limit_exceeded" = "Mae gormod o geisiadau wedi'u hanfon"; -"login_error_user_in_use" = "Defnyddir yr enw defnyddiwr hwn eisoes"; -"login_error_login_email_not_yet" = "Nid yw'r ddolen e-bost wedi'i chlicio eto"; -"login_use_fallback" = "Defnyddiwch dudalen wrth gefn"; -"login_leave_fallback" = "Canslo"; -"login_invalid_param" = "Paramadr Annilys"; -"register_error_title" = "Methwyd Cofrestri"; -"login_error_forgot_password_is_not_supported" = "Ni chefnogir cyfrinair anghofedig ar hyn o bryd"; -"login_mobile_device" = "Ffôn Symudol"; -"login_tablet_device" = "Llechen"; -"login_desktop_device" = "Cyfrifiadur"; -"login_error_resource_limit_exceeded_title" = "Ty hwnt i'r Terfyn Adnoddau"; -"login_error_resource_limit_exceeded_message_default" = "Mae'r hafanweinydd hwn wedi rhagori ar un o'i derfynau adnoddau."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Mae'r hafanweinydd hwn wedi cyrraedd ei derfyn Defnyddiwr Gweithredol Misol."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nCysylltwch â'ch gweinyddwr gwasanaeth i barhau i ddefnyddio'r gwasanaeth hwn."; -"login_error_resource_limit_exceeded_contact_button" = "Cysylltu â Gweinyddwr"; -// Action -"no" = "Na"; -"yes" = "Ie"; -"abort" = "Cefnu"; -"back" = "Yn ôl"; -"close" = "Cau"; -"continue" = "Parhau"; -"discard" = "Taflu"; -"dismiss" = "Wfftio"; -"retry" = "Ailgynnig"; -"sign_up" = "Cofrestri"; -"submit" = "Anfon"; -"submit_code" = "Anfon côd"; -"set_power_level" = "Gosod Lefel Pŵer"; -"set_default_power_level" = "Ail-osod Lefel Pŵer"; -"set_moderator" = "Gosod Cymredolwr"; -"set_admin" = "Gosod Gweinyddwr"; -"start_chat" = "Dechrau Sgwrs"; -"start_voice_call" = "Dechrau Galwad Llais"; -"start_video_call" = "Dechrau Galwad Fideo"; -"mention" = "Crybwyll"; -"select_account" = "Dewis cyfrif"; -"attach_media" = "Ategu Cyfryngau o'r Llyfrgell"; -"capture_media" = "Tynnu Llun/Fideo"; -"invite_user" = "Gwahodd Defnyddiwr Matrix"; -"reset_to_default" = "Ailosod i'r diofyn"; -"resend_message" = "Ail-anfon y neges"; -"select_all" = "Dewis y cyfan"; -"cancel_upload" = "Canslo Uwchlwytho"; -"cancel_download" = "Canslo Lawrlwytho"; -"show_details" = "Dangos Manylion"; -"answer_call" = "Ateb Galwad"; -"reject_call" = "Gwrthod Galwad"; -"end_call" = "Gorffen Galwad"; -"ignore" = "Anwybyddu"; -"unignore" = "Dad-anwybyddu"; -// Events formatter -"notice_avatar_changed_too" = "(newidiwyd rhithffurf hefyd)"; -"notice_room_name_removed" = "Tynnodd %@ enw'r ystafell"; -"notice_room_topic_removed" = "Fe wnaeth %@ ddileu'r pwnc"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " gan %@"; -"notice_event_redacted_reason" = " [rheswm: %@]"; -"notice_profile_change_redacted" = "Diweddarodd %@ eu proffil %@"; -"notice_room_created" = "Creodd %@ yr ystafell"; -"notice_room_join_rule" = "Y rheol ymuno yw: %@"; -"notice_room_power_level_intro" = "Lefel pŵer aelodau'r ystafell yw:"; -"notice_room_power_level_acting_requirement" = "Y lefelau pŵer lleiaf y mae'n rhaid i ddefnyddiwr eu cael cyn gweithredu yw:"; -"notice_room_power_level_event_requirement" = "Isafswm y lefelau pŵer sy'n gysylltiedig â digwyddiadau yw:"; -"notice_room_aliases" = "Arallenwau'r ystafell yw: %@"; -"notice_room_related_groups" = "Y grwpiau sy'n gysylltiedig â'r ystafell hon yw: %@"; -"notice_encrypted_message" = "Neges amgryptiedig"; -"notice_encryption_enabled" = "Trodd %@ ar amgryptio o'r dechrau i'r diwedd (algorithm %@)"; -"notice_image_attachment" = "atodiad llun"; -"notice_audio_attachment" = "atodiad sain"; -"notice_video_attachment" = "atodiad fideo"; -"notice_location_attachment" = "atodiad lleoliad"; -"notice_file_attachment" = "atodiad ffeil"; -"notice_invalid_attachment" = "atodiad annilys"; -"notice_unsupported_attachment" = "Atodiad heb gefnogaeth: %@"; -"notice_feedback" = "Digwyddiad adborth (id: %@): %@"; -"notice_redaction" = "Golygodd %@ ddigwyddiad (id: %@)"; -"notice_error_unsupported_event" = "Digwyddiad heb gefnogaeth"; -"notice_error_unexpected_event" = "Digwyddiad annisgwyl"; -"notice_error_unknown_event_type" = "Math digwyddiad anhysbys"; -"notice_room_history_visible_to_anyone" = "Gwnaeth %@ hanes ystafell y dyfodol yn weladwy i unrhyw un."; -"notice_room_history_visible_to_members" = "Gwnaeth %@ hanes ystafell y dyfodol yn weladwy i holl aelodau'r ystafell."; -"notice_room_history_visible_to_members_from_invited_point" = "Gwnaeth %@ hanes ystafell y dyfodol yn weladwy i holl aelodau'r ystafell, o'r pwynt y cawsant eu gwahodd."; -"notice_room_history_visible_to_members_from_joined_point" = "Gwnaeth %@ hanes ystafell y dyfodol yn weladwy i holl aelodau'r ystafell, o'r pwynt yr ymunon nhw ag ef."; -"notice_crypto_unable_to_decrypt" = "** Methu dadgryptio: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "Nid yw sesiwn yr anfonwr wedi anfon yr allweddi ar gyfer y neges hon atom."; -"notice_sticker" = "sticer"; -"notice_in_reply_to" = "Mewn ateb i"; -// room display name -"room_displayname_empty_room" = "Ystafell gwag"; -"room_displayname_two_members" = "%@ a %@"; -"room_displayname_more_than_two_members" = "%@ a %@ eraill"; -// Settings -"settings" = "Gosodiadau"; -"settings_enable_inapp_notifications" = "Galluogi hysbysiadau Mewn-App"; -"settings_enable_push_notifications" = "Galluogi gwth-hysbysiadau"; -"settings_enter_validation_token_for" = "Rhowch docyn dilysu ar gyfer %@:"; -"notification_settings_room_rule_title" = "Ystafell: '%@'"; -// Devices -"device_details_title" = "Gwybodaeth sesiwn\n"; -"device_details_name" = "Enw Cyhoeddus\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Gwelwyd ddiweddaf\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_title" = "Enw Sesiwn"; -"device_details_rename_prompt_message" = "Mae enw cyhoeddus sessiwn yn weladwy i'r bobl rydych chi'n cyfathrebu â nhw"; -"device_details_delete_prompt_title" = "Dilysu"; -"device_details_delete_prompt_message" = "Mae angen dilysu ychwanegol ar gyfer y gweithgaredd hon.\nI barhau, nodwch eich cyfrinair."; -// Encryption information -"room_event_encryption_info_title" = "Gwybodaeth amgryptio dechrau i'r diwedd\n\n"; -"room_event_encryption_info_event" = "Gwybodaeth digwyddiad\n"; -"room_event_encryption_info_event_user_id" = "ID Defnyddiwr\n"; -"room_event_encryption_info_event_identity_key" = "Allwedd adnabod Curve25519\n"; -"room_event_encryption_info_event_fingerprint_key" = "Allwedd llofnod Ed25519 â hawliedig\n"; -"room_event_encryption_info_event_algorithm" = "Algorithm\n"; -"room_event_encryption_info_event_session_id" = "ID Sesiwn\n"; -"room_event_encryption_info_event_decryption_error" = "Gwall Dadgryptio\n"; -"room_event_encryption_info_event_unencrypted" = "digryptiedig"; -"room_event_encryption_info_event_none" = "dim"; -"room_event_encryption_info_device" = "\nGwybodaeth am sesiwn yr anfonwr\n"; -"room_event_encryption_info_device_unknown" = "sesiwn anhysbys\n"; -"room_event_encryption_info_device_name" = "Enw Cyhoeddus\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "Gwirio\n"; -"room_event_encryption_info_device_fingerprint" = "Llofnod Ed25519\n"; -"room_event_encryption_info_device_verified" = "Wedi Gwirio"; -"room_event_encryption_info_device_not_verified" = "HEB ei wirio"; -"room_event_encryption_info_device_blocked" = "Gwaharddiedig"; -"room_event_encryption_info_verify" = "Gwirio…"; -"room_event_encryption_info_unverify" = "Dad-wirio"; -"room_event_encryption_info_block" = "Gwahardd"; -"room_event_encryption_info_unblock" = "Dad-wahardd"; -"room_event_encryption_verify_title" = "Gwirio sesiwn\n\n"; -"room_event_encryption_verify_message" = "I wirio y gellir ymddiried yn y sesiwn hon, cysylltwch â'i pherchennog gan ddefnyddio rhyw fodd arall (e.e. yn bersonol neu alwad ffôn) a gofynnwch iddynt a yw'r allwedd a welant yn eu Gosodiadau Defnyddiwr ar gyfer y sesiwn hon yn cyfateb i'r allwedd isod:\n\nEnw'r sesiwn: %@\nID y sesiwn: %@\nAllwedd y sesiwn: %@\n\nOs yw'n cyd-fynd, pwyswch y botwm gwirio isod. Os nad yw'n gwneud hynny, yna mae rhywun arall yn rhyng-gipio'r sesiwn hon ac mae'n debyg eich y dylech wasgu'r botwm gwahardd yn lle.\n\nYn y dyfodol bydd y broses gwirio hon yn fwy soffistigedig."; -"room_event_encryption_verify_ok" = "Gwirio"; -// Account -"account_save_changes" = "Cadw newidiadau"; -"account_link_email" = "Dolen E-bost"; -"account_linked_emails" = "E-byst cysylltiedig"; -"account_email_validation_title" = "Aros am wirio"; -"account_email_validation_message" = "Gwiriwch eich e-bost a chliciwch ar y ddolen sydd ynddo. Ar ôl gwneud hyn, cliciwch parhau."; -"account_email_validation_error" = "Methu gwirio cyfeiriad e-bost. Gwiriwch eich e-bost a chliciwch ar y ddolen sydd ynddo. Ar ôl gwneud hyn, cliciwch parhau"; -"account_msisdn_validation_title" = "Aros am wirio"; -"account_msisdn_validation_message" = "Rydyn ni wedi anfon neges testyn gyda chod actifadu. Rhowch y cod hwn isod."; -"account_msisdn_validation_error" = "Methu gwirio rhif ffôn."; -"account_error_display_name_change_failed" = "Methwyd newid enw arddangos"; -"account_error_picture_change_failed" = "Methwyd newid llun"; -"account_error_matrix_session_is_not_opened" = "Nid yw 'r sesiwn Matrix yn agored"; -"account_error_email_wrong_title" = "Cyfeiriad E-bost Annilys"; -"account_error_email_wrong_description" = "Nid yw hwn yn edrych fel cyfeiriad e-bost dilys"; -"account_error_msisdn_wrong_title" = "Rhif Ffôn Annilys"; -"account_error_msisdn_wrong_description" = "Nid yw hwn yn edrych fel rhif ffôn dilys"; -"account_error_push_not_allowed" = "Ni chaniateir hysbysiadau"; -// Room creation -"room_creation_name_title" = "Enw ystafell:"; -"room_creation_name_placeholder" = "(e.e. criwCinio)"; -"room_creation_alias_title" = "Arallenw ystafell:"; -"room_creation_alias_placeholder" = "(e.e. #foo:example.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(e.e. #foo%@)"; -"room_creation_participants_title" = "Cyfranogwyr:"; -"room_creation_participants_placeholder" = "(e.e. @daf:hafanweinydd1; @gwil:hafanweinydd2...)"; -// Room -"room_please_select" = "Dewisiwch ystafell"; -"room_error_join_failed_title" = "Methwyd ymuno â'r ystafell"; -"room_error_join_failed_empty_room" = "Ar hyn o bryd nid yw'n bosibl ail-ymuno ag ystafell wag."; -"room_error_name_edition_not_authorized" = "Nid oes gennych awdurdod i olygu enw'r ystafell hon"; -"room_error_topic_edition_not_authorized" = "Nid oes gennych awdurdod i olygu pwnc yr ystafell hon"; -"room_error_cannot_load_timeline" = "Methwyd llwytho llinell amser"; -"room_error_timeline_event_not_found_title" = "Methwyd llwytho safle llinell amser"; -"room_error_timeline_event_not_found" = "Roedd y rhaglen yn ceisio llwytho pwynt penodol yn llinell amser yr ystafell hon ond nid oedd yn gallu dod o hyd iddo"; -"room_left" = "Gadawsoch yr ystafell"; -"room_no_power_to_create_conference_call" = "Mae angen caniatâd arnoch i wahodd i ddechrau cynhadledd yn yr ystafell hon"; -"room_no_conference_call_in_encrypted_rooms" = "Ni chefnogir galwadau cynhadledd mewn ystafelloedd wedi'u hamgryptio"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "anfonwyd llun."; -"message_reply_to_sender_sent_a_video" = "anfonwyd fideo."; -"message_reply_to_sender_sent_an_audio_file" = "anfonwyd ffeil sain."; -"message_reply_to_sender_sent_a_file" = "anfonwyd ffeil."; -"message_reply_to_message_to_reply_to_prefix" = "Mewn ateb i"; -// Room members -"room_member_ignore_prompt" = "Ydych chi'n siŵr eich bod chi eisiau cuddio pob neges oddi wrth y defnyddiwr hwn?"; -"room_member_power_level_prompt" = "Ni fyddwch yn gallu dadwneud y newid hwn gan eich bod yn hyrwyddo'r defnyddiwr i gael yr un lefel pŵer â chi'ch hun.\nYdych chi'n siwr?"; -// Attachment -"attachment_size_prompt" = "Ydych chi am anfon fel:"; -"attachment_original" = "Maint Gwirioneddol: %@"; -"attachment_small" = "Bach: %@"; -"attachment_medium" = "Canolig: %@"; -"attachment_large" = "Mawr: %@"; -"attachment_cancel_download" = "Canslo y lawrlwythiad?"; -"attachment_cancel_upload" = "Canslo yr uwchlwythiad?"; -"attachment_multiselection_size_prompt" = "Hoffech chi anfon llun fel:"; -"attachment_multiselection_original" = "Maint Gwirioneddol"; -"attachment_e2e_keys_file_prompt" = "Mae'r ffeil hon yn cynnwys allweddi amgryptio a allfudwyd o gleient Matrix.\nYdych chi eisiau gweld cynnwys y ffeil neu fewnfudo'r allweddi sydd ynddo?"; -"attachment_e2e_keys_import" = "Mewnfudo..."; -// Contacts -"contact_mx_users" = "Defnyddwyr Matrix"; -"contact_local_contacts" = "Cysylltiadau Lleol"; -// Groups -"group_invite_section" = "Gwahoddiadau"; -"group_section" = "Grwpiau"; -// Search -"search_no_results" = "Dum Canluniadau"; -"search_searching" = "Chwilio ar y gweill..."; -// Time -"format_time_s" = "e"; -"format_time_m" = "m"; -"format_time_h" = "a"; -"format_time_d" = "d"; -// E2E import -"e2e_import_room_keys" = "Mewnfudo allweddi ystafell"; -"e2e_import_prompt" = "Mae'r broses hon yn caniatáu ichi fewnfudo allweddi amgryptio yr oeddech wedi'u hallfudo o'r blaen o gleient Matrix arall. Yna byddwch yn gallu dadgryptio unrhyw negeseuon y gallai'r cleient arall eu dadgryptio.\nMae'r ffeil allfudo wedi'i gwarchod gyda chyfrinair. Dylech nodi'r cyfrinair yma, i ddadgryptio'r ffeil."; -"e2e_import" = "Mewnfudo"; -"e2e_passphrase_enter" = "Rhowch cyfrinair"; -// E2E export -"e2e_export_room_keys" = "Allfudo allweddi ystafell"; -"e2e_export_prompt" = "Mae'r broses hon yn caniatáu ichi allfudo i ffeil leol yr allweddi ar gyfer negeseuon rydych wedi'u derbyn mewn ystafelloedd amgryptiedig. Yna byddwch chi'n gallu mewnfudo'r ffeil i gleient Matrix arall yn y dyfodol, fel y bydd y cleient hwnnw hefyd yn gallu dadgryptio'r negeseuon hyn.\nBydd y ffeil a allfudir yn caniatáu i unrhyw un sy'n gallu ei darllen ddadgryptio unrhyw negeseuon amgryptiedig y gallwch eu gweld, felly dylech fod yn ofalus i'w cadw'n ddiogel."; -"e2e_export" = "Allfudo"; -"e2e_passphrase_confirm" = "Cadarnhau cyfrinair"; -"e2e_passphrase_empty" = "Ni chaniateir cyfrinair gwag"; -"e2e_passphrase_not_match" = "Rhaid i'r cyfrineiriau gyfateb"; -"e2e_passphrase_create" = "Creu cyfrinair"; -// Others -"user_id_title" = "ID Defnyddiwr:"; -"offline" = "all-lein"; -"unsent" = "Heb eu danfon"; -"error" = "Gwall"; -"error_common_message" = "Digwyddodd gwall. Rhowch gynning eto nes ymlaen."; -"not_supported_yet" = "Heb ei gefnogi eto"; -"default" = "diofyn"; -"private" = "Preifat"; -"public" = "Cyhoeddus"; -"power_level" = "Lefel Pŵer"; -"network_error_not_reachable" = "Gwiriwch eich cysylltedd rhwydwaith"; -"user_id_placeholder" = "eng: @gwil:hafanweinydd"; -"ssl_homeserver_url" = "URL Hafanweinydd: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Mae galwadau fideo angen mynediad i'r Camera ond nid oes gan %@ ganiatâd i'w ddefnyddio"; -"microphone_access_not_granted_for_call" = "Mae galwadau fideo angen mynediad i'r Meicroffon ond nid oes gan %@ ganiatâd i'w ddefnyddio"; -"local_contacts_access_not_granted" = "Mae darganfyddiad defnyddwyr o gysylltiadau lleol angen mynediad i'ch cysylltiadau ond nid oes gan %@ ganiatâd i'w ddefnyddio"; -"local_contacts_access_discovery_warning_title" = "Darganfod defnyddwyr"; -"local_contacts_access_discovery_warning" = "I ddarganfod cysylltiadau sydd eisoes yn defnyddio Matrix, gall %@ anfon cyfeiriadau e-bost a rhifau ffôn yn eich llyfr cyfeiriadau at y gweinydd adnabod Matrix o'ch dewis. Pan gânt eu cefnogi, mae data personol yn cael ei amgodio cyn ei anfon - gwiriwch bolisi preifatrwydd eich gweinydd adnabod i gael mwy o fanylion."; -// Country picker -"country_picker_title" = "Dewiswch wlad"; -// Language picker -"language_picker_title" = "Dewiswch iaith"; -"language_picker_default_language" = "Diofyn (%@)"; -"notice_room_invite" = "Mae %@ wedi gwahodd %@"; -"notice_room_third_party_invite" = "Anfonodd %@ wahoddiad i %@ i ymuno â'r ystafell"; -"notice_room_third_party_registered_invite" = "Derbyniodd %@ y gwahoddiad am %@"; -"notice_room_third_party_revoked_invite" = "Tynnodd %@ y gwahoddiad i %@ ymuno â'r ystafell"; -"notice_room_join" = "Ymunodd %@"; -"notice_room_leave" = "Gadawodd %@"; -"notice_room_reject" = "Gwrthododd %@ y gwahoddiad"; -"notice_room_kick" = "Ciciodd %@ %@"; -"notice_room_unban" = "Dad-waharddodd %@ %@"; -"notice_room_ban" = "Gwaharddod %@ %@"; -"notice_room_withdraw" = "Tynnodd %@ wahoddiad %@ yn ôl"; -"notice_room_reason" = ". Rheswm: %@"; -"notice_avatar_url_changed" = "Newidiodd %@ eu rhithffurf"; -"notice_display_name_set" = "Gosododd %@ eu henw arddangos i %@"; -"notice_display_name_changed_from" = "Newidiodd %@ eu henw arddangos o %@ i %@"; -"notice_display_name_removed" = "Tynnodd %@ eu henw arddangos"; -"notice_topic_changed" = "Newidiodd %@ y pwnc i: %@"; -"notice_room_name_changed" = "Newidiodd %@ enw'r ystafell i: %@"; -"notice_placed_voice_call" = "Gosododd %@ alwad llais"; -"notice_placed_video_call" = "Gosododd %@ alwad fideo"; -"notice_answered_video_call" = "Atebodd %@ y galwad"; -"notice_ended_video_call" = "Gorffenodd %@ y galwad"; -"notice_conference_call_request" = "Gofynnodd %@ am gynhadledd VoIP"; -"notice_conference_call_started" = "Dechreuwyd cynhadledd VoIP"; -"notice_conference_call_finished" = "Gorffenwyd cynhadledd VoIP"; -// button names -"ok" = "Iawn"; -"cancel" = "Canslo"; -"save" = "Cadw"; -"leave" = "Gadael"; -"send" = "Anfon"; -"copy_button_name" = "Copi"; -"resend" = "Ail-anfon"; -"redact" = "Tynnu"; -"share" = "Rhannu"; -"delete" = "Dileu"; -"view" = "Gweld"; -// actions -"action_logout" = "Allgofnodi"; -"create_room" = "Creu Ystafell"; -"login" = "Mewngofnodi"; -"create_account" = "Creu Cyfrif"; -"membership_invite" = "Gwahoddwyd"; -"membership_leave" = "Gadawodd"; -"membership_ban" = "Gwaharddedig"; -"num_members_one" = "%@ defnyddiwr"; -"num_members_other" = "%@ defnyddiwr"; -"invite" = "Gwahodd"; -"kick" = "Cic"; -"ban" = "Gwahardd"; -"unban" = "Dad-wahardd"; -"message_unsaved_changes" = "Mae yna newidiadau heb eu cadw. Bydd gadael yn golygu eu colli."; -// Login Screen -"login_error_already_logged_in" = "Wedi mewngofnodi eisoes"; -"login_error_must_start_http" = "Rhaid i URL ddechrau â http[s]://"; -// room details dialog screen -"room_details_title" = "Manylion Ystafell"; -// contacts list screen -"invitation_message" = "Hoffwn sgwrsio â chi gyda Matrix. Os gwelwch yn dda, ewch i'r wefan https://matrix.org i gael mwy o wybodaeth."; -// Settings screen -"settings_title_config" = "Gosodiadau"; -"settings_title_notifications" = "Hysbysebiadau"; -// Notification settings screen -"notification_settings_disable_all" = "Analluogi pob hysbysiad"; -"notification_settings_enable_notifications" = "Galluogi hysbysiadau"; -"notification_settings_enable_notifications_warning" = "Ar hyn o bryd mae pob hysbysiad wedi eu hanalluogi ar gyfer pob dyfais."; -"notification_settings_global_info" = "Mae gosodiadau hysbysiadau yn cael eu cadw i'ch cyfrif defnyddiwr ac yn cael eu rhannu rhwng yr holl gleientiaid sy'n eu cefnogi (gan gynnwys hysbysiadau cyfrifiadur).\n\nCymhwysir rheolau mewn trefn; mae'r rheol gyntaf sy'n cyfateb yn diffinio canlyniad y neges.\nFelly: Mae hysbysiadau fesul gair yn bwysicach na hysbysiadau fesul ystafell sy'n bwysicach na hysbysiadau fesul anfonwr.\nAr gyfer rheolau lluosog o'r un math, mae'r un gyntaf yn y rhestr sy'n cyfateb yn cael blaenoriaeth."; -"notification_settings_per_word_notifications" = "Hysbysiadau fesul gair"; -"notification_settings_per_word_info" = "Mae geiriau'n cyfateb priflythrennau a rhai bach, a gallant gynnwys * cerdyn gwyllt. Felly:\nmae foo yn cyd-fynd â'r testyn foo wedi'i amgylchynu gan amffinyddion geiriau (e.e. atalnodi a gofod gwyn neu ddechrau / diwedd llinell).\nmae foo* yn cyfateb i unrhyw air o'r fath sy'n dechrau foo.\nmae *foo* yn cyfateb i unrhyw air o'r fath sy'n cynnwys y 3 llythyren foo."; -"notification_settings_always_notify" = "Rhowch wybod bob amser"; -"notification_settings_never_notify" = "Peidiwch byth â hysbysu"; -"notification_settings_word_to_match" = "gair yw gyfateb"; -"notification_settings_highlight" = "Amlygiad"; -"notification_settings_custom_sound" = "Sain addasol"; -"notification_settings_per_room_notifications" = "Hysbysiadau fesul ystafell"; -"notification_settings_per_sender_notifications" = "Hysbysiadau fesul anfonwr"; -"notification_settings_sender_hint" = "@defnyddiwr:parth.com"; -"notification_settings_select_room" = "Dewisiwch ystafell"; -"notification_settings_other_alerts" = "Rhybuddion Eraill"; -"notification_settings_contain_my_user_name" = "Rhowch wybod i mi gyda sain am negeseuon sy'n cynnwys fy enw defnyddiwr"; -"notification_settings_contain_my_display_name" = "Rhowch wybod i mi gyda sain am negeseuon sy'n cynnwys fy enw arddangos"; -"notification_settings_just_sent_to_me" = "Rhowch wybod i mi gyda sain am negeseuon â anfonwyd ataf yn unig"; -"notification_settings_invite_to_a_new_room" = "Rhowch wybod i mi pan gaf wahoddiad i ystafell newydd"; -"notification_settings_people_join_leave_rooms" = "Rhowch wybod i mi pan fydd pobl yn ymuno neu'n gadael ystafelloedd"; -"notification_settings_receive_a_call" = "Rhowch wybod i mi pan fyddaf yn derbyn galwad"; -"notification_settings_suppress_from_bots" = "Atal hysbysiadau o botiau"; -"notification_settings_by_default" = "Yn ddiofyn..."; -"notification_settings_notify_all_other" = "Hysbysu am yr holl negeseuon / ystafelloedd eraill"; -// gcm section -"settings_config_home_server" = "Hafanweinydd: %@"; -"settings_config_identity_server" = "Gweinydd adnabod: %@"; -"settings_config_user_id" = "ID Defnyddiwr: %@"; -// call string -"call_waiting" = "Aros..."; -"call_connecting" = "Cysylltu galwad..."; -"call_ended" = "Gorffenwyd y galwad"; -"call_ring" = "Yn galw..."; -"incoming_video_call" = "Galwad Fideo sy'n dod i mewn"; -"incoming_voice_call" = "Galwad Llais sy'n dod i mewn"; -"call_invite_expired" = "Gwahoddiad Galwad wedi dod i ben"; -// unrecognized SSL certificate -"ssl_trust" = "Ymddiried"; -"ssl_logout_account" = "Allgofnodi"; -"ssl_remain_offline" = "Anwybyddu"; -"ssl_fingerprint_hash" = "Llofnod (%@):"; -"ssl_could_not_verify" = "Methwyd gwirio gweinyddwr adnabod pell."; -"ssl_cert_not_trust" = "Gallai hyn olygu bod rhywun yn rhyng-gipio eich traffig yn faleisus, neu nad yw'ch ffôn yn ymddiried yn y dystysgrif a ddarperir gan y gweinydd pell."; -"ssl_cert_new_account_expl" = "Os yw gweinyddwr y gweinydd wedi dweud bod disgwyl hyn, sicrhewch fod yr llofnod isod yn cyfateb i'r llofnod a ddarperir ganddynt."; -"ssl_unexpected_existing_expl" = "Mae'r dystysgrif wedi newid o un yr oedd eich ffôn yn ymddiried ynddo. Mae hyn yn ANNISGWYL IAWN. Argymhellir i chi BEIDIO Â DERBYN y dystysgrif newydd hon."; -"ssl_expected_existing_expl" = "Mae'r dystysgrif wedi newid o un yr ymddiriedwyd ynddo o'r blaen i un nad oes ymddiried ynddo. Efallai bod y gweinydd wedi adnewyddu ei dystysgrif. Cysylltwch â gweinyddwr y gweinydd i gael y llofnod disgwyliedig."; -"ssl_only_accept" = "Peidiwch a derbyn y dystysgrif ONIBAI bod gweinyddwr y gweinydd wedi cyhoeddi llofnod sy'n cyfateb i'r un uchod."; -"notice_encryption_enabled_ok" = "Trodd %@ amgryptio o'r dechrau i'r diwedd ymlaen."; -"notice_encryption_enabled_unknown_algorithm" = "Trodd %@ amgryptio o'r dechrau i'r diwedd ymlaen (algorithm anghydnabyddedig %2$@)."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/da.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/da.lproj/MatrixKit.strings deleted file mode 100644 index 8b1378917..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/da.lproj/MatrixKit.strings +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/de.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/de.lproj/MatrixKit.strings deleted file mode 100644 index df701a6b6..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/de.lproj/MatrixKit.strings +++ /dev/null @@ -1,508 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Konto erstellen:"; -"login_server_url_placeholder" = "URL (z.B. https://matrix.org)"; -"login_home_server_title" = "Heimserver-URL:"; -"login_home_server_info" = "Dein Heimserver speichert alle deine Gespräche und Benutzerkontodaten"; -"login_identity_server_title" = "Identitätsserver-URL:"; -"login_identity_server_info" = "Matrix stellt Identitätsserver bereit, um feststellen zu können, welche E-Mail-Adressen, etc. zu welchen Matrix-IDs gehören. Momentan existiert nur https://vector.im."; -"login_user_id_placeholder" = "Matrix-ID (z.B. @bob:matrix.org oder bob)"; -"login_password_placeholder" = "Passwort"; -"login_optional_field" = "optional"; -"login_display_name_placeholder" = "Anzeigename (z.B. Peter Pan)"; -"login_email_placeholder" = "E-Mail-Adresse"; -"login_error_title" = "Anmeldung fehlgeschlagen"; -"login_email_info" = "Die Eingabe einer E-Mail-Adresse erleichtert es anderen Benutzern, dich auf Matrix zu finden. Außerdem kannst du mit der hinterlegten E-Mail-Adresse dein Passwort zurücksetzen."; -"login_prompt_email_token" = "Gib das E-Mail-Validierungstoken ein:"; -"login_error_no_login_flow" = "Die Authentifizierungsinformation von diesem Heimserver konnte nicht abgerufen werden"; -"login_error_do_not_support_login_flows" = "Momentan werden einige oder alle der von diesem Heimserver definierten Authentifizierungspfade nicht unterstützt"; -"login_error_registration_is_not_supported" = "Registrierung wird momentan nicht unterstützt"; -"login_error_forbidden" = "Benutzername oder Passwort ungültig"; -"login_error_unknown_token" = "Das angegebene Zugriffstoken wurde nicht erkannt"; -"login_error_bad_json" = "Deformiertes JSON"; -"login_error_not_json" = "Enthielt kein valides JSON"; -"login_error_limit_exceeded" = "Zu viele Anfragen wurden gesendet"; -"login_error_user_in_use" = "Dieser Benutzername wird bereits verwendet"; -"login_error_login_email_not_yet" = "Der Email-Link wurde noch nicht angeklickt"; -"login_use_fallback" = "Benutze die Ersatzseite"; -"login_leave_fallback" = "Abbrechen"; -"login_invalid_param" = "Ungültiger Parameter"; -"register_error_title" = "Registrierung fehlgeschlagen"; -"login_error_forgot_password_is_not_supported" = "\"Passwort vergessen\" wird momentan nicht unterstützt"; -"login_mobile_device" = "Mobilgerät"; -"login_tablet_device" = "Tablet"; -"login_desktop_device" = "Desktop"; -"login_error_resource_limit_exceeded_title" = "Ressourcengrenzwert überschritten"; -"login_error_resource_limit_exceeded_message_default" = "Dieser Heimserver hat eine seiner Ressourcengrenzwerte überschritten."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Dieser Heimserver hat sein Grenzwert an monatlich aktiven Nutzern erreicht."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nBitte kontaktiere deinen Dienstadministrator um mit der Nutzung dieses Dienstes fortzufahren."; -"login_error_resource_limit_exceeded_contact_button" = "Kontaktiere Administrator"; -// Action -"no" = "Nein"; -"yes" = "Ja"; -"abort" = "Abbrechen"; -"back" = "Zurück"; -"close" = "Schließen"; -"continue" = "Fortsetzen"; -"discard" = "Verwerfen"; -"dismiss" = "Ablehnen"; -"retry" = "Wiederholen"; -"sign_up" = "Registrieren"; -"submit" = "Absenden"; -"submit_code" = "Code übermitteln"; -"set_power_level" = "Berechtigungsstufe setzen"; -"set_default_power_level" = "Berechtigungsstufe zurücksetzen"; -"set_moderator" = "Moderator setzen"; -"set_admin" = "Administrator setzen"; -"start_chat" = "Chat starten"; -"start_voice_call" = "Sprachanruf starten"; -"start_video_call" = "Videoanruf starten"; -"mention" = "Erwähnung"; -"select_account" = "Wähle ein Konto"; -"attach_media" = "Medien aus der Bibliothek anhängen"; -"capture_media" = "Foto/Video aufnehmen"; -"invite_user" = "Matrixbenutzer einladen"; -"reset_to_default" = "Auf Standardeinstellungen zurücksetzen"; -"resend_message" = "Nachricht erneut senden"; -"select_all" = "Alles auswählen"; -"cancel_upload" = "Hochladen abbrechen"; -"cancel_download" = "Herunterladen abbrechen"; -"show_details" = "Zeige Details"; -"answer_call" = "Anruf annehmen"; -"reject_call" = "Anruf abweisen"; -"end_call" = "Anruf beenden"; -"ignore" = "Ignorieren"; -"unignore" = "Ignorieren aufheben"; -// Events formatter -"notice_avatar_changed_too" = "(Avatar wurde auch geändert)"; -"notice_room_name_removed" = "%@ hat den Raumnamen gelöscht"; -"notice_room_name_removed_for_dm" = "%@ hat den Namen gelöscht"; -"notice_room_topic_removed" = "%@ hat das Raumthema gelöscht"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " durch %@"; -"notice_event_redacted_reason" = " [Grund: %@]"; -"notice_profile_change_redacted" = "%@ aktualisierte sein Profil %@"; -"notice_room_created" = "%@ hat den Raum erstellt und konfiguriert."; -"notice_room_created_for_dm" = "%@ ist beigetreten."; -// Old -"notice_room_join_rule" = "Die Beitrittsregel ist: %@"; -// New -"notice_room_join_rule_invite" = "%@ hat den Raum auf \"nur-einladen\" gestellt."; -"notice_room_join_rule_invite_for_dm" = "%@ hat auf Einladungen beschränkt."; -"notice_room_join_rule_invite_by_you" = "Du hast den Raumbeitritt auf Einladungen beschränkt."; -"notice_room_join_rule_invite_by_you_for_dm" = "Du hast dies auf Einladungen beschränkt."; -"notice_room_join_rule_public" = "%@ hat den Raum öffentlich gemacht."; -"notice_room_join_rule_public_for_dm" = "%@ hat es öffentlich gemacht."; -"notice_room_join_rule_public_by_you" = "Du hast den Raum öffentlich gemacht."; -"notice_room_join_rule_public_by_you_for_dm" = "Du hast es öffentlich gemacht."; -"notice_room_power_level_intro" = "Die Berechtigungsstufe der Teilnehmer ist:"; -"notice_room_power_level_intro_for_dm" = "Die Berechtigungsstufe der Teilnehmer ist:"; -"notice_room_power_level_acting_requirement" = "Die minimale Berechtigungsstufe, die ein Benutzer zum Handeln benötigt:"; -"notice_room_power_level_event_requirement" = "Die minimalen Berechtigungsstufen bezogen auf Ereignisse:"; -"notice_room_aliases" = "Die Raumnamenaliase sind: %@"; -"notice_room_aliases_for_dm" = "Die Namenaliase sind: %@"; -"notice_room_related_groups" = "Die Gruppen, die mit diesem Raum verknüpft sind: %@"; -"notice_encrypted_message" = "Verschlüsselte Nachricht"; -"notice_encryption_enabled_ok" = "%@ hat die Ende-zu-Ende-Verschlüsselung aktiviert."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ hat die Ende-zu-Ende-Verschlüsselung aktiviert (unbekannter Algorithmus %2$@)."; -"notice_image_attachment" = "angehängtes Bild"; -"notice_audio_attachment" = "Audioanhang"; -"notice_video_attachment" = "Videoanhang"; -"notice_location_attachment" = "Standortanhang"; -"notice_file_attachment" = "Dateianhang"; -"notice_invalid_attachment" = "Ungültige Anhang"; -"notice_unsupported_attachment" = "Nicht unterstützter Anhang: %@"; -"notice_feedback" = "Rückmeldeereignis (id: %@): %@"; -"notice_redaction" = "%@ hat Ereignis geschwärzt (id: %@)"; -"notice_error_unsupported_event" = "Nicht unterstütztes Ereignis"; -"notice_error_unexpected_event" = "Unerwartetes Ereignis"; -"notice_error_unknown_event_type" = "Unbekannter Ereignistyp"; -"notice_room_history_visible_to_anyone" = "%@ hat den zukünftigen Raumverlauf für alle sichtbar gemacht."; -"notice_room_history_visible_to_members" = "%@ hat den zukünftigen Raumverlauf für alle Raumteilnehmer sichtbar gemacht."; -"notice_room_history_visible_to_members_for_dm" = "%@ hat die folgenden Nachrichten für alle Teilnehmer des Raumes sichtbar gemacht."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ hat den zukünftigen Raumverlauf für alle Raumteilnehmer ab deren Einladung sichtbar gemacht."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ hat den zukünftigen Verlauf für alle Raumteilnehmer ab deren Einladung sichtbar gemacht."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ hat den zukünftigen Raumverlauf für alle Raumteilnehmer ab deren Einladung sichtbar gemacht."; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ hat den zukünftigen Verlauf für alle Raumteilnehmer ab deren Einladung sichtbar gemacht."; -"notice_crypto_unable_to_decrypt" = "** Entschlüsselung nicht möglich: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "Die absendende Sitzung hat uns keine Schlüssel für diese Nachricht gesendet."; -"notice_sticker" = "Aufkleber"; -"notice_in_reply_to" = "Als Antwort auf"; -// room display name -"room_displayname_empty_room" = "Leerer Raum"; -"room_displayname_two_members" = "%@ und %@"; -"room_displayname_more_than_two_members" = "%@ und %u andere"; -// Settings -"settings" = "Einstellungen"; -"settings_enable_inapp_notifications" = "Benachrichtigungen innerhalb der App aktivieren"; -"settings_enable_push_notifications" = "Puschbenachrichtigungen aktivieren"; -"settings_enter_validation_token_for" = "Eingabe Validierungstoken für %@:"; -"notification_settings_room_rule_title" = "Raum: '%@'"; -// Devices -"device_details_title" = "Sitzungsinformation\n"; -"device_details_name" = "Öffentlicher Name\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Zuletzt gesehen:\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_title" = "Sitzungsname"; -"device_details_rename_prompt_message" = "Der öffentliche Name einer Sitzung ist für Personen sichtbar, mit denen Sie kommunizieren"; -"device_details_delete_prompt_title" = "Authentifizierung"; -"device_details_delete_prompt_message" = "Diese Aktion erfordert zusätzliche Authentifizierung.\nBitte gib dein Passwort ein."; -// Encryption information -"room_event_encryption_info_title" = "Ende-zu-Ende Verschlüsselungsinformation\n\n"; -"room_event_encryption_info_event" = "Ereignis Information\n"; -"room_event_encryption_info_event_user_id" = "Benutzer-ID\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519 Identitätsschlüssel\n"; -"room_event_encryption_info_event_fingerprint_key" = "Verlangter Ed25519-Fingerabdruck\n"; -"room_event_encryption_info_event_algorithm" = "Algorithmus\n"; -"room_event_encryption_info_event_session_id" = "Sitzungs-ID\n"; -"room_event_encryption_info_event_decryption_error" = "Entschlüsselungsfehler\n"; -"room_event_encryption_info_event_unencrypted" = "nicht verschlüsselt"; -"room_event_encryption_info_event_none" = "keine"; -"room_event_encryption_info_device" = "\nAbsendersitzungsinformation\n"; -"room_event_encryption_info_device_unknown" = "Unbekannte Sitzung\n"; -"room_event_encryption_info_device_name" = "Öffentlicher Name\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "Überprüfung\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519-Fingerabdruck\n"; -"room_event_encryption_info_device_verified" = "Überprüft"; -"room_event_encryption_info_device_not_verified" = "NICHT verifiziert"; -"room_event_encryption_info_device_blocked" = "auf schwarzer Liste"; -"room_event_encryption_info_verify" = "Überprüfe..."; -"room_event_encryption_info_unverify" = "Verifizierung widerrufen"; -"room_event_encryption_info_block" = "Blockieren"; -"room_event_encryption_info_unblock" = "Blockierung aufheben"; -"room_event_encryption_verify_title" = "Überprüfe Sitzung\n\n"; -"room_event_encryption_verify_message" = "Um zu prüfen, dass dieser Sitzung vertraut werden kann, kontaktiere bitte den Eigentümer über einen anderen Weg (z.B. in Person oder mit einem Telefonanruf) und frage ihn, ob der Schlüssel, den er in seinen Benutzereinstellungen für diese Sitzung sieht, dem folgenden Schlüssel entspricht:\n\n\tSitzungs-Name: %@\n\tSitzungs-ID: %@\n\tSitzungsschlüssel: %@\n\nWenn es übereinstimmt, die \"Überprüfe\" Schaltfläche drücken. Wenn nicht, dann hört jemand anderes diese Sitzung ab und du willst stattdessen vermutlich die Schaltfläche \"Blockieren\" drücken.\n\nIn Zukunft wird dieser Überprüfungsprozess ausgefeilter sein."; -"room_event_encryption_verify_ok" = "Überprüfe"; -// Account -"account_save_changes" = "Änderungen speichern"; -"account_link_email" = "Verbinde E-Mail-Adresse"; -"account_linked_emails" = "Verbundene E-Mail-Adressen"; -"account_email_validation_title" = "Verifizierung ausstehend"; -"account_email_validation_message" = "Bitte prüfe deine E-Mails und klicke auf den enthaltenen Link. Wenn dies erledigt ist, klicke auf \"Fortsetzen\"."; -"account_email_validation_error" = "Kann E-Mail-Adresse nicht verifizieren. Bitte prüfe deine E-Mails und klicke auf den enthaltenen Link. Wenn das erledigt ist, Schaltfläche \"Fortfahren\" drücken"; -"account_msisdn_validation_title" = "Verifizierung ausstehend"; -"account_msisdn_validation_message" = "Wir haben eine SMS mit einem Aktivierungscode gesendet. Bitte den Code unten eingeben."; -"account_msisdn_validation_error" = "Kann Telefonnummer nicht verifizieren."; -"account_error_display_name_change_failed" = "Änderung des Anzeigenamens fehlgeschlagen"; -"account_error_picture_change_failed" = "Änderung des Bildes fehlgeschlagen"; -"account_error_matrix_session_is_not_opened" = "Matrixsitzung ist nicht geöffnet"; -"account_error_email_wrong_title" = "Ungültige E-Mail-Adresse"; -"account_error_email_wrong_description" = "Sieht nicht aus wie eine gültige E-Mail-Adresse"; -"account_error_msisdn_wrong_title" = "Ungültige Telefonnummer"; -"account_error_msisdn_wrong_description" = "Sieht nicht wie eine valide Telefonnummer aus"; -"account_error_push_not_allowed" = "Benachrichtigungen nicht erlaubt"; -// Room creation -"room_creation_name_title" = "Raumname:"; -"room_creation_name_placeholder" = "(z.B. MittagessenGruppe)"; -"room_creation_alias_title" = "Raumalias:"; -"room_creation_alias_placeholder" = "(z.B. #foo:example.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(z.B. #foo%@)"; -"room_creation_participants_title" = "Teilnehmer:"; -"room_creation_participants_placeholder" = "(z.B. @laura:heimserver1; @thomas:heimserver2...)"; -// Room -"room_please_select" = "Bitte wähle einen Raum"; -"room_error_join_failed_title" = "Konnte Raum nicht betreten"; -"room_error_join_failed_empty_room" = "Es ist aktuell nicht möglich einen leeren Raum zu betreten."; -"room_error_name_edition_not_authorized" = "Du bist nicht authorisiert den Raumnamen zu ändern"; -"room_error_topic_edition_not_authorized" = "Du bist nicht authorisiert das Raumthema zu ändern"; -"room_error_cannot_load_timeline" = "Konnte Verlauf nicht laden"; -"room_error_timeline_event_not_found_title" = "Konnte Position im Verlauf nicht laden"; -"room_error_timeline_event_not_found" = "Konnte spezifischen Punkt im Verlauf dieses Raumes nicht finden"; -"room_left" = "Du hast den Raum verlassen"; -"room_left_for_dm" = "Du hast die Unterhaltung verlassen"; -"room_no_power_to_create_conference_call" = "Einladungsberechtigung benötigt, um Konferenz in diesem Raum zu starten"; -"room_no_conference_call_in_encrypted_rooms" = "Konferenzgespräche sind in verschlüsselten Räumen nicht unterstützt"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "sandte ein Bild."; -"message_reply_to_sender_sent_a_video" = "sandte ein Video."; -"message_reply_to_sender_sent_an_audio_file" = "sandte eine Audiodatei."; -"message_reply_to_sender_sent_a_file" = "sandte eine Datei."; -"message_reply_to_message_to_reply_to_prefix" = "Als Antwort auf"; -// Room members -"room_member_ignore_prompt" = "Sicher, dass alle Nachrichten von diesem Benutzer versteckt werden sollen?"; -"room_member_power_level_prompt" = "Du kannst diese Änderung nicht rückgangig machen, weil du dem Benutzer die gleiche Berechtigungsstufe gibst, die du selbst hast.\nBist du sicher?"; -// Attachment -"attachment_size_prompt" = "Möchtest du senden als:"; -"attachment_original" = "Originalgröße (%@)"; -"attachment_small" = "Klein (~%@)"; -"attachment_medium" = "Mittel (~%@)"; -"attachment_large" = "Groß (~%@)"; -"attachment_cancel_download" = "Herunterladen abbrechen?"; -"attachment_cancel_upload" = "Hochladen abbrechen?"; -"attachment_multiselection_size_prompt" = "Bilder senden als:"; -"attachment_multiselection_original" = "Originalgröße"; -"attachment_e2e_keys_file_prompt" = "Diese Datei enthält von einem Matrixclient exportierte Schlüssel.\nMöchtest du den Dateiinhalt sehen oder die Schlüssel importieren?"; -"attachment_e2e_keys_import" = "Importiere..."; -// Contacts -"contact_mx_users" = "Matrixbenutzer"; -"contact_local_contacts" = "Lokale Kontakte"; -// Groups -"group_invite_section" = "Einladungen"; -"group_section" = "Gruppen"; -// Search -"search_no_results" = "Nichts gefunden"; -"search_searching" = "Suche wird durchgeführt..."; -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "h"; -"format_time_d" = "t"; -// E2E import -"e2e_import_room_keys" = "Importiere Raumschlüssel"; -"e2e_import_prompt" = "Dieser Prozess erlaubt es dir, Schlüssel zu importieren, die du vorher von einem anderen Matrixclient exportiert hast. Du kannst anschließend alle Nachrichten entschlüsseln, die auch bereits der andere Client entschlüsseln konnte.\nDie Exportdatei ist mit einer Passphrase geschützt. Gib die Passphrase hier ein, um die Datei zu importieren."; -"e2e_import" = "Importieren"; -"e2e_passphrase_enter" = "Passphrase eingeben"; -// E2E export -"e2e_export_room_keys" = "Exportiere Raumschlüssel"; -"e2e_export_prompt" = "Dieser Prozeß erlaubt den Export von Schlüsseln, die du in verschlüsselten Räumen empfangen hast, in eine lokale Datei. Du kannst dann die Datei in einem anderen Matrixclient in Zukunft importieren, so dass dieser Client die Nachrichten auch entschlüsseln kann.\nDie exportierte Datei wird jedem der sie lesen kann erlauben, alle verschlüsselten Nachrichten sehen können, also verwahre die Datei sicher."; -"e2e_export" = "Exportiere"; -"e2e_passphrase_confirm" = "Passphrase bestätigen"; -"e2e_passphrase_empty" = "Die Passphrase darf nicht leer sein"; -"e2e_passphrase_not_match" = "Passphrasen stimmen nicht überein"; -"e2e_passphrase_create" = "Passphrase erzeugen"; -// Others -"user_id_title" = "Benutzer-ID:"; -"offline" = "offline"; -"unsent" = "Nicht gesendet"; -"error" = "Fehler"; -"error_common_message" = "Ein Fehler trat auf. Bitte später erneut probieren."; -"not_supported_yet" = "Noch nicht unterstützt"; -"default" = "Standard"; -"private" = "Privat"; -"public" = "Öffentlich"; -"power_level" = "Berechtigungsstufe"; -"network_error_not_reachable" = "Bitte Netzwerkverbindung prüfen"; -"user_id_placeholder" = "z. B.: @thomas:heimserver"; -"ssl_homeserver_url" = "Heimserver URL: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Video-Anrufe benötigen Zugriff auf die Kamera, aber %@ hat keine Berechtigung"; -"microphone_access_not_granted_for_call" = "Anrufe benötigen Zugriff auf das Mikrofon, aber %@ hat keine Berechtigung"; -"local_contacts_access_not_granted" = "Finden von Benutzern in lokalen Kontakten benötigt Zugriff auf die Kontakte, aber %@ hat keine Berechtigung"; -"local_contacts_access_discovery_warning_title" = "Benutzer finden"; -"local_contacts_access_discovery_warning" = "Um Kontakte zu erkennen, die Matrix bereits verwenden, kann %@ E-Mail-Adressen und Telefonnummern in Ihrem Adressbuch an den von Ihnen ausgewählten Matrix-Identitätsserver senden. Sofern dies unterstützt wird, werden personenbezogene Daten vor dem Senden gehasht. Weitere Informationen finden Sie in den Datenschutzrichtlinien Ihres Identitätsservers."; -// Country picker -"country_picker_title" = "Wähle ein Land"; -// Language picker -"language_picker_title" = "Wähle eine Sprache"; -"language_picker_default_language" = "Standard (%@)"; -"notice_room_invite" = "%@ hat %@ eingeladen"; -"notice_room_third_party_invite" = "%@ sendete eine Einladung an %@ den Raum zu betreten"; -"notice_room_third_party_invite_for_dm" = "%@ hat %@ eingeladen"; -"notice_room_third_party_registered_invite" = "%@ akzeptierte die Einladung für %@"; -"notice_room_third_party_revoked_invite" = "%@ hat die Einladung für %@, dem Raum beizutreten, zurückgezogen"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ hat %@'s Einladung zurückgezogen"; -"notice_room_join" = "%@ betrat den Raum"; -"notice_room_leave" = "%@ hat den Raum verlassen"; -"notice_room_reject" = "%@ lehnte die Einladung ab"; -"notice_room_kick" = "%@ hat %@ entfernt"; -"notice_room_unban" = "%@ entsperrte %@"; -"notice_room_ban" = "%@ sperrte %@"; -"notice_room_withdraw" = "%@ hat %@s Einladung zurückgezogen"; -"notice_room_reason" = ". Grund: %@"; -"notice_avatar_url_changed" = "%@ hat den eigenen Avatar geändert"; -"notice_display_name_set" = "%@ setzte den Anzeigenamen auf %@"; -"notice_display_name_changed_from" = "%@ änderte den Anzeigenamen von %@ auf %@"; -"notice_display_name_removed" = "%@ hat den Anzeigenamen entfernt"; -"notice_topic_changed" = "%@ wechselte das Thema zu %@."; -"notice_room_name_changed" = "%@ änderte den Raumnamen zu %@."; -"notice_room_name_changed_for_dm" = "%@ änderte den Raumnamen zu %@."; -"notice_placed_voice_call" = "%@ tätigte einen Sprachanruf"; -"notice_placed_video_call" = "%@ tätigte einen Videoanruf"; -"notice_answered_video_call" = "%@ hat den Anruf angenommen"; -"notice_ended_video_call" = "%@ hat den Anruf beendet"; -"notice_conference_call_request" = "%@ hat eine VoIP-Konferenz angefragt"; -"notice_conference_call_started" = "VoIP-Konferenz gestartet"; -"notice_conference_call_finished" = "VoIP-Konferenz beendet"; -// Notice Events with "You" -"notice_room_invite_by_you" = "Du hast %@ eingeladen"; -"notice_room_invite_you" = "%@ hat Dich eingeladen"; -"notice_room_third_party_invite_by_you" = "Du hast an %@ eine Einladung gesendet dem Raum beizutreten"; -"notice_room_third_party_invite_by_you_for_dm" = "Du hast %@ eingeladen"; -"notice_room_third_party_registered_invite_by_you" = "Du hast die Einladung für %@ angenommen"; -"notice_room_third_party_revoked_invite_by_you" = "Du hast die Einladung dem Raum %@ beizutreten abgelehnt"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Du hast die Einladung %@'s zurückgezogen"; -"notice_room_join_by_you" = "Du bist beigetreten"; -"notice_room_leave_by_you" = "Du bist ausgetreten"; -"notice_room_reject_by_you" = "Du hast die Einladung abgelehnt"; -"notice_room_kick_by_you" = "Du hast %@ entfernt"; -"notice_room_unban_by_you" = "Du hast %@ entbannt"; -"notice_room_ban_by_you" = "Du hast %@ gebannt"; -"notice_room_withdraw_by_you" = "Du hast die Einladung von %@ zurückgenommen"; -"notice_avatar_url_changed_by_you" = "Du hast dein Profilbild geändert"; -"notice_display_name_set_by_you" = "Du hast deinen Anzeigenamen auf %@ geändert"; -"notice_display_name_changed_from_by_you" = "Du hast deinen Anzeigenamen von %@ zu %@ geändert"; -"notice_display_name_removed_by_you" = "Du hast deinen Anzeigenamen entfernt"; -"notice_topic_changed_by_you" = "Du hast Das Thema zu %@ geändert."; -"notice_room_name_changed_by_you" = "Du hast den Raumnamen zu %@ geändert."; -"notice_room_name_changed_by_you_for_dm" = "Du hast den Namen zu %@ geändert."; -"notice_placed_voice_call_by_you" = "Du hast einen Audioanruf gestartet"; -"notice_placed_video_call_by_you" = "Du hast einen Videoanruf gestartet"; -"notice_answered_video_call_by_you" = "Du hast den Anruf angenommen"; -"notice_ended_video_call_by_you" = "Du hast den Anruf beendet"; -"notice_conference_call_request_by_you" = "Du hast eine VoIP-Konferenz angefordert"; -"notice_room_name_removed_by_you" = "Du hast den Raumnamen entfernt"; -"notice_room_name_removed_by_you_for_dm" = "Du hast den Namen entfernt"; -"notice_room_topic_removed_by_you" = "Du hast das Raumthema entfernt"; -"notice_event_redacted_by_you" = " von dir"; -"notice_profile_change_redacted_by_you" = "Du hast dein Profil %@ aktualisiert"; -"notice_room_created_by_you" = "Du hast den Raum erstellt und konfiguriert."; -"notice_room_created_by_you_for_dm" = "Du bist beigetreten."; -"notice_encryption_enabled_ok_by_you" = "Du hast Ende-zu-Ende-Verschlüsselung aktiviert."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Du hast Ende-zu-Ende-Verschlüsselung aktiviert (unbekannter Algorithmus %@)."; -"notice_redaction_by_you" = "Du hast ein Ereignis geschwärzt (ID: %@)"; -"notice_room_history_visible_to_anyone_by_you" = "Du hast den zukünftigen Nachrichtenverlauf für jeden sichtbar gemacht."; -"notice_room_history_visible_to_members_by_you" = "Du hast den zukünftigen Nachrichtenverlauf für alle Mitglieder des Raums sichtbar gemacht."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Du hast den zukünftigen Nachrichtenverlauf für alle Mitglieder des Raums sichtbar gemacht."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Du hast den zukünftigen Nachrichtenverlauf für alle Mitglieder des Raums ab deren Teilnahme sichtbar gemacht."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Du hast den zukünftigen Nachrichtenverlauf für alle sichtbar gemacht, sobald sie eingeladen werden."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Du hast den zukünftigen Nachrichtenverlauf für alle Mitglieder des Raums ab deren Teilnahme sichtbar gemacht."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Du hast den zukünftigen Nachrichtenverlauf für alle Mitglieder des Raums sichtbar gemacht, ab deren Teilnahme."; -// Room Screen - -// general errors - -// Home Screen - -// Last seen time - -// call events - -// titles - -// button names -"ok" = "OK"; -"cancel" = "Abbruch"; -"save" = "Speichern"; -"leave" = "Verlassen"; -"send" = "Senden"; -"copy_button_name" = "Kopieren"; -"resend" = "Erneut senden"; -"redact" = "Entfernen"; -"share" = "Teilen"; -"set_power_level" = "Berechtigungslevel"; -"delete" = "Löschen"; -"view" = "Ansehen"; -// actions -"action_logout" = "Abmelden"; -"create_room" = "Erstelle Raum"; -"login" = "Anmelden"; -"create_account" = "Erstelle Konto"; -"membership_invite" = "Eingeladen"; -"membership_leave" = "Verlassen"; -"membership_ban" = "Gesperrt"; -"num_members_one" = "%@ Benutzer"; -"num_members_other" = "%@ Benutzer"; -"invite" = "Einladen"; -"kick" = "Entfernen"; -"ban" = "Sperren"; -"unban" = "Entsperren"; -"message_unsaved_changes" = "Es gibt nicht gespeicherte Änderungen. Verlassen wird diese verwerfen."; -// Login Screen -"login_error_already_logged_in" = "Bereits angemeldet"; -"login_error_must_start_http" = "URL muss mit http[s]:// anfangen"; -// members list Screen - -// accounts list Screen - -// image size selection - -// invitation members list Screen - -// room creation dialog Screen - -// room info dialog Screen - -// room details dialog screen -"room_details_title" = "Raumdetails"; -// contacts list screen -"invitation_message" = "Ich würde gerne über Matrix mit dir chatten. Du kannst dich auf https://matrix.org darüber informieren."; -// Settings screen -"settings_title_config" = "Konfiguration"; -"settings_title_notifications" = "Benachrichtigungen"; -// Notification settings screen -"notification_settings_disable_all" = "Alle Benachrichtigungen ausschalten"; -"notification_settings_enable_notifications" = "Benachrichtigungen einschalten"; -"notification_settings_enable_notifications_warning" = "Alle Benachrichtigungen sind momentan für alle Geräte ausgeschaltet."; -"notification_settings_global_info" = "Benachrichtigungseinstellungen werden in deinem Benutzerkonto gespeichert und zwischen allen Clients die das unterstützen geteilt (inklusive Desktop Benachrichtigungen). \n\nRegeln werden der Reihe nach angewandt; die erste Regel, die zutrifft, bestimmt das Resultat für die Nachricht.\nPro-Wort-Benachrichtigungen sind wichtiger als Pro-Raum-Benachrichtigungen, die wichtiger sind wie Pro-Absender-Benachrichtigungen.\nBei mehrfachen Regeln des gleichen Typs wird die erste in der Liste die zutrifft angewendet."; -"notification_settings_per_word_notifications" = "Pro-Wort-Benachrichtigungen"; -"notification_settings_per_word_info" = "Suchwörter ignorieren Groß-/Kleinschreibung und können ein *-Platzhalter enthalten. Beispiele:\nfoo findet den String foo umgeben durch Trennzeichen (Satzzeichen, Leerzeichen, Zeilenanfang/ende).\nfoo* findet Worte die mit foo beginnen.\n*foo* findet jedes Wort das foo an beliebiger Stelle enthält."; -"notification_settings_always_notify" = "Immer benachrichtigen"; -"notification_settings_never_notify" = "Nie benachrichtigen"; -"notification_settings_word_to_match" = "übereinstimmende Wörter"; -"notification_settings_highlight" = "Hervorheben"; -"notification_settings_custom_sound" = "Individueller Klang"; -"notification_settings_per_room_notifications" = "Pro-Raum-Benachrichtigungen"; -"notification_settings_per_sender_notifications" = "Pro-Absender-Benachrichtigungen"; -"notification_settings_sender_hint" = "@benutzer:domaene.com"; -"notification_settings_select_room" = "Wähle einen Raum"; -"notification_settings_other_alerts" = "Andere Alarme"; -"notification_settings_contain_my_user_name" = "Klänge bei Nachrichten die meinen Benutzernamen enthalten"; -"notification_settings_contain_my_display_name" = "Klänge bei Nachrichten die meinen Anzeigenamen enthalten"; -"notification_settings_just_sent_to_me" = "Mich über gerade empfangene Nachrichten mit einem Klang informieren"; -"notification_settings_invite_to_a_new_room" = "Benachrichtige, wenn ich zu einem neuen Raum eingeladen werde"; -"notification_settings_people_join_leave_rooms" = "Benachrichtige, wenn Benutzer einen Raum betreten oder verlassen"; -"notification_settings_receive_a_call" = "Benachrichtige, wenn ich einen Anruf erhalte"; -"notification_settings_suppress_from_bots" = "Unterdrücke Benachrichtigungen von Bots"; -"notification_settings_by_default" = "Als Standard..."; -"notification_settings_notify_all_other" = "Benachrichtige für alle andereren Nachrichten/Räume"; -// gcm section -"settings_config_home_server" = "Heimserver: %@"; -"settings_config_identity_server" = "Identitätsserver: %@"; -"settings_config_user_id" = "Benutzer-ID: %@"; -// Settings keys - -// call string -"call_waiting" = "Warte..."; -"call_connecting" = "Verbinden…"; -"call_ended" = "Anruf beendet"; -"call_ring" = "Rufe an..."; -"incoming_video_call" = "Eingehender Videoanruf"; -"incoming_voice_call" = "Eingehender Sprachanruf"; -"call_invite_expired" = "Anrufeinladung abgelaufen"; -// unrecognized SSL certificate -"ssl_trust" = "Vertrauensstellung"; -"ssl_logout_account" = "Abmelden"; -"ssl_remain_offline" = "Ignorieren"; -"ssl_fingerprint_hash" = "Fingerabdruck (%@):"; -"ssl_could_not_verify" = "Konnte die Identität des Servers nicht verifizieren."; -"ssl_cert_not_trust" = "Das kann bedeuten, dass jemand den Datenverkehr mitliest, oder dass dein Gerät dem Zertifikat des Servers nicht vertraut."; -"ssl_cert_new_account_expl" = "Wenn der Server Administrator gesagt hat, dass dies erwartet wird, stelle sicher, dass der Fingerabdruck unten dem vom Administrator mitgeteilten Fingerabdruck entspricht."; -"ssl_unexpected_existing_expl" = "Das Zertifikat des Servers hat sich geändert, es ist nicht mehr das vertraute Zertifikat. Das ist SEHR UNGEWÖHNLICH! Es wird empfohlen das neue Zertifikat NICHT ZU AKZEPTIEREN."; -"ssl_expected_existing_expl" = "Das Zertifikat des Servers hat sich geändert, es ist nicht mehr das vertraute Zertifikat. Der Server könnte sein Zertifikat erneuert haben. Kontaktiere den Serveradministrator um den Fingerabdruck zu überprüfen."; -"ssl_only_accept" = "Akzeptiere AUSSCHLIESSLICH Zertifikate für die der Serveradministrator einen Fingerprint veröffentlicht hat."; -"call_more_actions_transfer" = "Übertragung"; -"call_more_actions_audio_use_headset" = "Kopfhörer verwenden"; -"call_more_actions_change_audio_device" = "Audiogerät ändern"; -"call_more_actions_unhold" = "Fortsetzen"; -"call_more_actions_hold" = "Halten"; -"call_holded" = "Du hast den Anurf pausiert"; -"call_remote_holded" = "%@ hat den Anruf pausiert"; -"notice_declined_video_call_by_you" = "Du hast den Anruf abgelehnt"; -"notice_declined_video_call" = "%@ hat den Anruf abgelehnt"; -"resume_call" = "Fortsetzen"; -"call_more_actions_dialpad" = "Ziffernblatt"; -"call_more_actions_audio_use_device" = "Lautsprecher"; -"call_transfer_to_user" = "Durchstellen zu %@"; -"call_video_with_user" = "Videoanruf mit %@"; -"call_voice_with_user" = "Sprachanruf mit %@"; -"call_ringing" = "Läuten…"; -"e2e_passphrase_too_short" = "Passphrase zu kurz (Minimum sind %d Zeichen)"; -"call_consulting_with_user" = "Bei %@ anfragen"; -"microphone_access_not_granted_for_voice_message" = "%@ fehlt die Berechtigung, für Sprachnachrichten auf das Mikrofon zuzugreifen"; -"message_reply_to_sender_sent_a_voice_message" = "hat eine Sprachnachricht gesendet."; -"attachment_size_prompt_title" = "Zum Senden die Größe auswählen"; -"attachment_large_with_resolution" = "Groß %@ (~%@)"; -"attachment_medium_with_resolution" = "Mittel %@ (~%@)"; -"attachment_small_with_resolution" = "Klein %@ (~%@)"; -"attachment_size_prompt_message" = "Dies kannst du in den Einstellungen abschalten."; -"auth_reset_password_error_not_found" = "Nicht gefunden"; -"auth_username_in_use" = "Benutzername bereits verwendet"; -"auth_invalid_user_name" = "Ungültiger Benutzername"; -"rename" = "Umbenennen"; -"attachment_unsupported_preview_message" = "Dieser Dateityp wird nicht unterstützt."; -"attachment_unsupported_preview_title" = "Vorschau kann nicht angezeigt werden"; -"auth_reset_password_error_unauthorized" = "Nicht Authorisiert"; -"message_reply_to_sender_sent_their_location" = "hat den eigenen Standort geteilt."; -"room_displayname_all_other_members_left" = "%@ (Verlassen)"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/en.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/en.lproj/MatrixKit.strings deleted file mode 100644 index 1b6c229ac..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/en.lproj/MatrixKit.strings +++ /dev/null @@ -1,582 +0,0 @@ -/* - Copyright 2015 OpenMarket Ltd - Copyright 2017 Vector Creations Ltd - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "Matrix"; - -// Login Screen -"login_create_account" = "Create account:"; -"login_server_url_placeholder" = "URL (e.g. https://matrix.org)"; -"login_home_server_title" = "Homeserver URL:"; -"login_home_server_info" = "Your homeserver stores all your conversations and account data"; -"login_identity_server_title" = "Identity server URL:"; -"login_identity_server_info" = "Matrix provides identity servers to track which emails etc. belong to which Matrix IDs. Only https://matrix.org currently exists."; -"login_user_id_placeholder" = "Matrix ID (e.g. @bob:matrix.org or bob)"; -"login_password_placeholder" = "Password"; -"login_optional_field" = "optional"; -"login_display_name_placeholder" = "Display name (e.g. Bob Obson)"; -"login_email_info" = "Specify an email address lets other users find you on Matrix more easily, and will give you a way to reset your password in the future."; -"login_email_placeholder" = "Email address"; -"login_prompt_email_token" = "Please enter your email validation token:"; -"login_error_title" = "Login Failed"; -"login_error_no_login_flow" = "We failed to retrieve authentication information from this homeserver"; -"login_error_do_not_support_login_flows" = "Currently we do not support any or all login flows defined by this homeserver"; -"login_error_registration_is_not_supported" = "Registration is not currently supported"; -"login_error_forbidden" = "Invalid username/password"; -"login_error_unknown_token" = "The access token specified was not recognised"; -"login_error_bad_json" = "Malformed JSON"; -"login_error_not_json" = "Did not contain valid JSON"; -"login_error_limit_exceeded" = "Too many requests have been sent"; -"login_error_user_in_use" = "This user name is already used"; -"login_error_login_email_not_yet" = "The email link which has not been clicked yet"; -"login_use_fallback" = "Use fallback page"; -"login_leave_fallback" = "Cancel"; -"login_invalid_param" = "Invalid parameter"; -"register_error_title" = "Registration Failed"; -"login_error_forgot_password_is_not_supported" = "Forgot password is not currently supported"; -"login_mobile_device"="Mobile"; -"login_tablet_device"="Tablet"; -"login_desktop_device"="Desktop"; -"login_error_resource_limit_exceeded_title" = "Resource Limit Exceeded"; -"login_error_resource_limit_exceeded_message_default" = "This homeserver has exceeded one of its resource limits."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "This homeserver has hit its Monthly Active User limit."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nPlease contact your service administrator to continue using this service."; -"login_error_resource_limit_exceeded_contact_button" = "Contact Administrator"; - -// Action -"no" = "No"; -"yes" = "Yes"; -"abort" = "Abort"; -"back" = "Back"; -"close" = "Close"; -"continue" = "Continue"; -"discard" = "Discard"; -"dismiss" = "Dismiss"; -"retry" = "Retry"; -"sign_up" = "Sign up"; -"submit" = "Submit"; -"submit_code" = "Submit code"; -"set_power_level" = "Set Power Level"; -"set_default_power_level" = "Reset 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 an account"; -"attach_media" = "Attach Media from Library"; -"capture_media" = "Take Photo/Video"; -"invite_user" = "Invite matrix User"; -"reset_to_default" = "Reset to default"; -"resend_message" = "Resend the message"; -"select_all" = "Select All"; -"cancel_upload" = "Cancel Upload"; -"cancel_download" = "Cancel Download"; -"show_details" = "Show Details"; -"answer_call" = "Answer Call"; -"reject_call" = "Reject Call"; -"end_call" = "End Call"; -"resume_call" = "Resume"; -"ignore" = "Ignore"; -"unignore" = "Unignore"; - -// Events formatter -"notice_avatar_changed_too" = "(avatar was changed too)"; -"notice_room_name_removed" = "%@ removed the room name"; -"notice_room_name_removed_for_dm" = "%@ removed the name"; -"notice_room_topic_removed" = "%@ removed the topic"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " by %@"; -"notice_event_redacted_reason" = " [reason: %@]"; -"notice_profile_change_redacted" = "%@ updated their profile %@"; -"notice_room_created" = "%@ created and configured the room."; -"notice_room_created_for_dm" = "%@ joined."; -// Old -"notice_room_join_rule" = "The join rule is: %@"; -// New -"notice_room_join_rule_invite" = "%@ made the room invite only."; -"notice_room_join_rule_invite_for_dm" = "%@ made this invite only."; -"notice_room_join_rule_invite_by_you" = "You made the room invite only."; -"notice_room_join_rule_invite_by_you_for_dm" = "You made this invite only."; -"notice_room_join_rule_public" = "%@ made the room public."; -"notice_room_join_rule_public_for_dm" = "%@ made this public."; -"notice_room_join_rule_public_by_you" = "You made the room public."; -"notice_room_join_rule_public_by_you_for_dm" = "You made this public."; -"notice_room_power_level_intro" = "The power level of room members are:"; -"notice_room_power_level_intro_for_dm" = "The power level of members are:"; -"notice_room_power_level_acting_requirement" = "The minimum power levels that a user must have before acting are:"; -"notice_room_power_level_event_requirement" = "The minimum power levels related to events are:"; -"notice_room_aliases" = "The room aliases are: %@"; -"notice_room_aliases_for_dm" = "The aliases are: %@"; -"notice_room_related_groups" = "The groups associated with this room are: %@"; -"notice_encrypted_message" = "Encrypted message"; -"notice_encryption_enabled_ok" = "%@ turned on end-to-end encryption."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ turned on end-to-end encryption (unrecognised algorithm %2$@)."; -"notice_image_attachment" = "image attachment"; -"notice_audio_attachment" = "audio attachment"; -"notice_video_attachment" = "video attachment"; -"notice_location_attachment" = "location attachment"; -"notice_file_attachment" = "file attachment"; -"notice_invalid_attachment" = "invalid attachment"; -"notice_unsupported_attachment" = "Unsupported attachment: %@"; -"notice_feedback" = "Feedback event (id: %@): %@"; -"notice_redaction" = "%@ redacted an event (id: %@)"; -"notice_error_unsupported_event" = "Unsupported event"; -"notice_error_unexpected_event" = "Unexpected event"; -"notice_error_unknown_event_type" = "Unknown event type"; -"notice_room_history_visible_to_anyone" = "%@ made future room history visible to anyone."; -"notice_room_history_visible_to_members" = "%@ made future room history visible to all room members."; -"notice_room_history_visible_to_members_for_dm" = "%@ made future messages visible to all room members."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ made future room history visible to all room members, from the point they are invited."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ made future messages visible to everyone, from when they get invited."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ made future room history visible to all room members, from the point they joined."; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ made future messages visible to everyone, from when they joined."; -"notice_crypto_unable_to_decrypt" = "** Unable to decrypt: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "The sender's session has not sent us the keys for this message."; -"notice_sticker" = "sticker"; -"notice_in_reply_to" = "In reply to"; - -// room display name -"room_displayname_empty_room" = "Empty room"; -"room_displayname_two_members" = "%@ and %@"; -"room_displayname_more_than_two_members" = "%@ and %@ others"; -"room_displayname_all_other_members_left" = "%@ (Left)"; - -// Settings -"settings" = "Settings"; -"settings_enable_inapp_notifications" = "Enable In-App notifications"; -"settings_enable_push_notifications" = "Enable push notifications"; -"settings_enter_validation_token_for" = "Enter validation token for %@:"; - -"notification_settings_room_rule_title" = "Room: '%@'"; - -// Devices -"device_details_title" = "Session information\n"; -"device_details_name" = "Public Name\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Last seen\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_title" = "Session Name"; -"device_details_rename_prompt_message" = "A session's public name is visible to people you communicate with"; -"device_details_delete_prompt_title" = "Authentication"; -"device_details_delete_prompt_message" = "This operation requires additional authentication.\nTo continue, please enter your password."; - -// Encryption information -"room_event_encryption_info_title" = "End-to-end encryption information\n\n"; -"room_event_encryption_info_event" = "Event information\n"; -"room_event_encryption_info_event_user_id" = "User ID\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519 identity key\n"; -"room_event_encryption_info_event_fingerprint_key" = "Claimed Ed25519 fingerprint key\n"; -"room_event_encryption_info_event_algorithm" = "Algorithm\n"; -"room_event_encryption_info_event_session_id" = "Session ID\n"; -"room_event_encryption_info_event_decryption_error" = "Decryption error\n"; -"room_event_encryption_info_event_unencrypted" = "unencrypted"; -"room_event_encryption_info_event_none" = "none"; -"room_event_encryption_info_device" = "\nSender session information\n"; -"room_event_encryption_info_device_unknown" = "unknown session\n"; -"room_event_encryption_info_device_name" = "Public Name\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "Verification\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519 fingerprint\n"; -"room_event_encryption_info_device_verified" = "Verified"; -"room_event_encryption_info_device_not_verified" = "NOT verified"; -"room_event_encryption_info_device_blocked" = "Blacklisted"; -"room_event_encryption_info_verify" = "Verify..."; -"room_event_encryption_info_unverify" = "Unverify"; -"room_event_encryption_info_block" = "Blacklist"; -"room_event_encryption_info_unblock" = "Unblacklist"; -"room_event_encryption_verify_title" = "Verify session\n\n"; -"room_event_encryption_verify_message" = "To verify that this session can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this session matches the key below:\n\n\tSession name: %@\n\tSession ID: %@\n\tSession key: %@\n\nIf it matches, press the verify button below. If it doesnt, then someone else is intercepting this session and you probably want to press the blacklist button instead.\n\nIn future this verification process will be more sophisticated."; -"room_event_encryption_verify_ok" = "Verify"; - -// Account -"account_save_changes" = "Save changes"; -"account_link_email" = "Link Email"; -"account_linked_emails" = "Linked emails"; - -"account_email_validation_title" = "Verification Pending"; -"account_email_validation_message" = "Please check your email and click on the link it contains. Once this is done, click continue."; -"account_email_validation_error" = "Unable to verify email address. Please check your email and click on the link it contains. Once this is done, click continue"; - -"account_msisdn_validation_title" = "Verification Pending"; -"account_msisdn_validation_message" = "We\'ve sent an SMS with an activation code. Please enter this code below."; -"account_msisdn_validation_error" = "Unable to verify phone number."; - -"account_error_display_name_change_failed" = "Display name change failed"; -"account_error_picture_change_failed" = "Picture change failed"; -"account_error_matrix_session_is_not_opened" = "Matrix session is not opened"; -"account_error_email_wrong_title" = "Invalid Email Address"; -"account_error_email_wrong_description" = "This doesn't appear to be a valid email address"; -"account_error_msisdn_wrong_title" = "Invalid Phone Number"; -"account_error_msisdn_wrong_description" = "This doesn't appear to be a valid phone number"; -"account_error_push_not_allowed" = "Notifications not allowed"; - -// Room creation -"room_creation_name_title" = "Room name:"; -"room_creation_name_placeholder" = "(e.g. lunchGroup)"; -"room_creation_alias_title" = "Room alias:"; -"room_creation_alias_placeholder" = "(e.g. #foo:example.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(e.g. #foo%@)"; -"room_creation_participants_title" = "Participants:"; -"room_creation_participants_placeholder" = "(e.g. @bob:homeserver1; @john:homeserver2...)"; - -// Room -"room_please_select" = "Please select a room"; -"room_error_join_failed_title" = "Failed to join room"; -"room_error_join_failed_empty_room" = "It is not currently possible to join an empty room."; -"room_error_name_edition_not_authorized" = "You are not authorized to edit this room name"; -"room_error_topic_edition_not_authorized" = "You are not authorized to edit this room topic"; -"room_error_cannot_load_timeline" = "Failed to load timeline"; -"room_error_timeline_event_not_found_title" = "Failed to load timeline position"; -"room_error_timeline_event_not_found" = "The application was trying to load a specific point in this room's timeline but was unable to find it"; -"room_left" = "You left the room"; -"room_left_for_dm" = "You left"; -"room_no_power_to_create_conference_call" = "You need permission to invite to start a conference in this room"; -"room_no_conference_call_in_encrypted_rooms" = "Conference calls are not supported in encrypted rooms"; - -// Reply to message -"message_reply_to_sender_sent_an_image" = "sent an image."; -"message_reply_to_sender_sent_a_video" = "sent a video."; -"message_reply_to_sender_sent_an_audio_file" = "sent an audio file."; -"message_reply_to_sender_sent_a_voice_message" = "sent a voice message."; -"message_reply_to_sender_sent_a_file" = "sent a file."; -"message_reply_to_sender_sent_their_location" = "has shared their location."; -"message_reply_to_message_to_reply_to_prefix" = "In reply to"; - -// Room members -"room_member_ignore_prompt" = "Are you sure you want to hide all messages from this user?"; -"room_member_power_level_prompt" = "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.\nAre you sure?"; - -// Attachment -"attachment_size_prompt" = "Do you want to send as:"; -"attachment_size_prompt_title" = "Confirm size to send"; -"attachment_size_prompt_message" = "You can turn this off in settings."; -"attachment_original" = "Actual Size (%@)"; -"attachment_small" = "Small (~%@)"; -"attachment_medium" = "Medium (~%@)"; -"attachment_large" = "Large (~%@)"; -"attachment_small_with_resolution" = "Small %@ (~%@)"; -"attachment_medium_with_resolution" = "Medium %@ (~%@)"; -"attachment_large_with_resolution" = "Large %@ (~%@)"; -"attachment_cancel_download" = "Cancel the download?"; -"attachment_cancel_upload" = "Cancel the upload?"; -"attachment_multiselection_size_prompt" = "Do you want to send images as:"; -"attachment_multiselection_original" = "Actual Size"; -"attachment_e2e_keys_file_prompt" = "This file contains encryption keys exported from a Matrix client.\nDo you want to view the file content or import the keys it contains?"; -"attachment_e2e_keys_import" = "Import..."; -"attachment_unsupported_preview_title" = "Unable to preview"; -"attachment_unsupported_preview_message" = "This file type is not supported."; - -// Contacts -"contact_mx_users" = "Matrix Users"; -"contact_local_contacts" = "Local Contacts"; - -// Groups -"group_invite_section" = "Invites"; -"group_section" = "Groups"; - -// Search -"search_no_results" = "No Results"; -"search_searching" = "Search in progress..."; - -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "h"; -"format_time_d" = "d"; - -// E2E import -"e2e_import_room_keys" = "Import room keys"; -"e2e_import_prompt" = "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.\nThe export file is protected with a passphrase. You should enter the passphrase here, to decrypt the file."; -"e2e_import" = "Import"; -"e2e_passphrase_enter" = "Enter passphrase"; - -// E2E export -"e2e_export_room_keys" = "Export room keys"; -"e2e_export_prompt" = "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.\nThe exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure."; -"e2e_export" = "Export"; -"e2e_passphrase_confirm" = "Confirm passphrase"; -"e2e_passphrase_empty" = "Passphrase must not be empty"; -"e2e_passphrase_too_short" = "Passphrase too short (It must be at a minimum %d characters in length)"; -"e2e_passphrase_not_match" = "Passphrases must match"; -"e2e_passphrase_create" = "Create passphrase"; - -// Others -"user_id_title" = "User ID:"; -"offline" = "offline"; -"unsent" = "Unsent"; -"error" = "Error"; -"error_common_message" = "An error occured. Please try again later."; -"not_supported_yet" = "Not supported yet"; -"default" = "default"; -"private" = "Private"; -"public" = "Public"; -"power_level" = "Power Level"; -"network_error_not_reachable" = "Please check your network connectivity"; -"user_id_placeholder" = "ex: @bob:homeserver"; -"ssl_homeserver_url" = "Homeserver URL: %@"; - -// Permissions -"camera_access_not_granted_for_call" = "Video calls require access to the Camera but %@ doesn't have permission to use it"; -"microphone_access_not_granted_for_call" = "Calls require access to the Microphone but %@ doesn't have permission to use it"; -"local_contacts_access_not_granted" = "Users discovery from local contacts requires access to you contacts but %@ doesn't have permission to use it"; - -"local_contacts_access_discovery_warning_title" = "Users discovery"; -"local_contacts_access_discovery_warning" = "To discover contacts already using Matrix, %@ can send email addresses and phone numbers in your address book to your chosen Matrix identity server. Where supported, personal data is hashed before sending - please check your identity server's privacy policy for more details."; - -"microphone_access_not_granted_for_voice_message" = "Voice messages require access to the Microphone but %@ doesn't have permission to use it"; - -// Country picker -"country_picker_title" = "Choose a country"; - -// Language picker -"language_picker_title" = "Choose a language"; -"language_picker_default_language" = "Default (%@)"; - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /matrix-sdk/src/main/res/values/strings.xml. -*/ - -"notice_room_invite" = "%@ invited %@"; -"notice_room_third_party_invite" = "%@ sent an invitation to %@ to join the room"; -"notice_room_third_party_invite_for_dm" = "%@ invited %@"; -"notice_room_third_party_registered_invite" = "%@ accepted the invitation for %@"; -"notice_room_third_party_revoked_invite" = "%@ revoked the invitation for %@ to join the room"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ revoked %@'s invitation"; -"notice_room_join" = "%@ joined"; -"notice_room_leave" = "%@ left"; -"notice_room_reject" = "%@ rejected the invitation"; -"notice_room_kick" = "%@ removed %@"; -"notice_room_unban" = "%@ unbanned %@"; -"notice_room_ban" = "%@ banned %@"; -"notice_room_withdraw" = "%@ withdrew %@'s invitation"; -"notice_room_reason" = ". Reason: %@"; -"notice_avatar_url_changed" = "%@ changed their avatar"; -"notice_display_name_set" = "%@ set their display name to %@"; -"notice_display_name_changed_from" = "%@ changed their display name from %@ to %@"; -"notice_display_name_removed" = "%@ removed their display name"; -"notice_topic_changed" = "%@ changed the topic to \"%@\"."; -"notice_room_name_changed" = "%@ changed the room name to %@."; -"notice_room_name_changed_for_dm" = "%@ changed the name to %@."; -"notice_placed_voice_call" = "%@ placed a voice call"; -"notice_placed_video_call" = "%@ placed a video call"; -"notice_answered_video_call" = "%@ answered the call"; -"notice_ended_video_call" = "%@ ended the call"; -"notice_declined_video_call" = "%@ declined the call"; -"notice_conference_call_request" = "%@ requested a VoIP conference"; -"notice_conference_call_started" = "VoIP conference started"; -"notice_conference_call_finished" = "VoIP conference finished"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "You invited %@"; -"notice_room_invite_you" = "%@ invited you"; -"notice_room_third_party_invite_by_you" = "You sent an invitation to %@ to join the room"; -"notice_room_third_party_invite_by_you_for_dm" = "You invited %@"; -"notice_room_third_party_registered_invite_by_you" = "You accepted the invitation for %@"; -"notice_room_third_party_revoked_invite_by_you" = "You revoked the invitation for %@ to join the room"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "You revoked %@'s invitation"; -"notice_room_join_by_you" = "You joined"; -"notice_room_leave_by_you" = "You left"; -"notice_room_reject_by_you" = "You rejected the invitation"; -"notice_room_kick_by_you" = "You removed %@"; -"notice_room_unban_by_you" = "You unbanned %@"; -"notice_room_ban_by_you" = "You banned %@"; -"notice_room_withdraw_by_you" = "You withdrew %@'s invitation"; -"notice_avatar_url_changed_by_you" = "You changed your avatar"; -"notice_display_name_set_by_you" = "You set your display name to %@"; -"notice_display_name_changed_from_by_you" = "You changed your display name from %@ to %@"; -"notice_display_name_removed_by_you" = "You removed your display name"; -"notice_topic_changed_by_you" = "You changed the topic to \"%@\"."; -"notice_room_name_changed_by_you" = "You changed the room name to %@."; -"notice_room_name_changed_by_you_for_dm" = "You changed the name to %@."; -"notice_placed_voice_call_by_you" = "You placed a voice call"; -"notice_placed_video_call_by_you" = "You placed a video call"; -"notice_answered_video_call_by_you" = "You answered the call"; -"notice_ended_video_call_by_you" = "You ended the call"; -"notice_declined_video_call_by_you" = "You declined the call"; -"notice_conference_call_request_by_you" = "You requested a VoIP conference"; -"notice_room_name_removed_by_you" = "You removed the room name"; -"notice_room_name_removed_by_you_for_dm" = "You removed the name"; -"notice_room_topic_removed_by_you" = "You removed the topic"; -"notice_event_redacted_by_you" = " by you"; -"notice_profile_change_redacted_by_you" = "You updated your profile %@"; -"notice_room_created_by_you" = "You created and configured the room."; -"notice_room_created_by_you_for_dm" = "You joined."; -"notice_encryption_enabled_ok_by_you" = "You turned on end-to-end encryption."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "You turned on end-to-end encryption (unrecognised algorithm %@)."; -"notice_redaction_by_you" = "You redacted an event (id: %@)"; -"notice_room_history_visible_to_anyone_by_you" = "You made future room history visible to anyone."; -"notice_room_history_visible_to_members_by_you" = "You made future room history visible to all room members."; -"notice_room_history_visible_to_members_by_you_for_dm" = "You made future messages visible to all room members."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "You made future room history visible to all room members, from the point they are invited."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "You made future messages visible to everyone, from when they get invited."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "You made future room history visible to all room members, from the point they joined."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "You made future messages visible to everyone, from when they joined."; - -// Room Screen - -// general errors - -// Home Screen - -// Last seen time - -// call events - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /console/src/main/res/values/strings.xml. -*/ - - -// titles - -// button names -"ok" = "OK"; -"cancel" = "Cancel"; -"save" = "Save"; -"leave" = "Leave"; -"send" = "Send"; -"copy_button_name" = "Copy"; -"resend" = "Resend"; -"redact" = "Remove"; -"share" = "Share"; -"delete" = "Delete"; -"view" = "View"; -"rename" = "Rename"; - -// actions -"action_logout" = "Logout"; -"create_room" = "Create Room"; -"login" = "Login"; -"create_account" = "Create Account"; -"membership_invite" = "Invited"; -"membership_leave" = "Left"; -"membership_ban" = "Banned"; -"num_members_one" = "%@ user"; -"num_members_other" = "%@ users"; -"invite" = "Invite"; -"kick" = "Remove from chat"; -"ban" = "Ban"; -"unban" = "Un-ban"; -"message_unsaved_changes" = "There are unsaved changes. Leaving will discard them."; - -// Login Screen -"login_error_already_logged_in" = "Already logged in"; -"login_error_must_start_http" = "URL must start with http[s]://"; - -// members list Screen - -// accounts list Screen - -// image size selection - -// invitation members list Screen - -// room creation dialog Screen - -// room info dialog Screen - -// room details dialog screen -"room_details_title" = "Room Details"; - -// contacts list screen -"invitation_message" = "I\'d like to chat with you with matrix. Please, visit the website http://matrix.org to have more information."; - -// Settings screen -"settings_title_config" = "Configuration"; -"settings_title_notifications" = "Notifications"; - -// Notification settings screen -"notification_settings_disable_all" = "Disable all notifications"; -"notification_settings_enable_notifications" = "Enable notifications"; -"notification_settings_enable_notifications_warning" = "All notifications are currently disabled for all devices."; -"notification_settings_global_info" = "Notification settings are saved to your user account and are shared between all clients which support them (including desktop notifications).\n\nRules are applied in order; the first rule which matches defines the outcome for the message.\nSo: Per-word notifications are more important than per-room notifications which are more important than per-sender notifications.\nFor multiple rules of the same kind, the first one in the list that matches takes priority."; -"notification_settings_per_word_notifications" = "Per-word notifications"; -"notification_settings_per_word_info" = "Words match case insensitively, and may include a * wildcard. So:\nfoo matches the string foo surrounded by word delimiters (e.g. punctuation and whitespace or start/end of line).\nfoo* matches any such word that begins foo.\n*foo* matches any such word which includes the 3 letters foo."; -"notification_settings_always_notify" = "Always notify"; -"notification_settings_never_notify" = "Never notify"; -"notification_settings_word_to_match" = "word to match"; -"notification_settings_highlight" = "Highlight"; -"notification_settings_custom_sound" = "Custom sound"; -"notification_settings_per_room_notifications" = "Per-room notifications"; -"notification_settings_per_sender_notifications" = "Per-sender notifications"; -"notification_settings_sender_hint" = "\@user:domain.com"; -"notification_settings_select_room" = "Select a room"; -"notification_settings_other_alerts" = "Other Alerts"; -"notification_settings_contain_my_user_name" = "Notify me with sound about messages that contain my user name"; -"notification_settings_contain_my_display_name" = "Notify me with sound about messages that contain my display name"; -"notification_settings_just_sent_to_me" = "Notify me with sound about messages sent just to me"; -"notification_settings_invite_to_a_new_room" = "Notify me when I am invited to a new room"; -"notification_settings_people_join_leave_rooms" = "Notify me when people join or leave rooms"; -"notification_settings_receive_a_call" = "Notify me when I receive a call"; -"notification_settings_suppress_from_bots" = "Suppress notifications from bots"; -"notification_settings_by_default" = "By default..."; -"notification_settings_notify_all_other" = "Notify for all other messages/rooms"; - -// gcm section -"settings_config_home_server" = "Homeserver: %@"; -"settings_config_identity_server" = "Identity server: %@"; -"settings_config_user_id" = "User ID: %@"; - -// Settings keys - -// call string -"call_connecting" = "Connecting…"; -"call_ringing" = "Ringing…"; -"call_ended" = "Call ended"; -"incoming_video_call" = "Incoming Video Call"; -"incoming_voice_call" = "Incoming Voice Call"; -"call_invite_expired" = "Call Invite Expired"; -"call_remote_holded" = "%@ held the call"; -"call_holded" = "You held the call"; -"call_more_actions_hold" = "Hold"; -"call_more_actions_unhold" = "Resume"; -"call_more_actions_change_audio_device" = "Change Audio Device"; -"call_more_actions_audio_use_device" = "Device Speaker"; -"call_more_actions_transfer" = "Transfer"; -"call_more_actions_dialpad" = "Dial pad"; -"call_voice_with_user" = "Voice call with %@"; -"call_video_with_user" = "Video call with %@"; -"call_consulting_with_user" = "Consulting with %@"; -"call_transfer_to_user" = "Transfer to %@"; - -// unrecognized SSL certificate -"ssl_trust" = "Trust"; -"ssl_logout_account" = "Logout"; -"ssl_remain_offline" = "Ignore"; -"ssl_fingerprint_hash" = "Fingerprint (%@):"; -"ssl_could_not_verify" = "Could not verify identity of remote server."; -"ssl_cert_not_trust" = "This could mean that someone is maliciously intercepting your traffic, or that your phone does not trust the certificate provided by the remote server."; -"ssl_cert_new_account_expl" = "If the server administrator has said that this is expected, ensure that the fingerprint below matches the fingerprint provided by them."; -"ssl_unexpected_existing_expl" = "The certificate has changed from one that was trusted by your phone. This is HIGHLY UNUSUAL. It is recommended that you DO NOT ACCEPT this new certificate."; -"ssl_expected_existing_expl" = "The certificate has changed from a previously trusted one to one that is not trusted. The server may have renewed its certificate. Contact the server administrator for the expected fingerprint."; -"ssl_only_accept" = "ONLY accept the certificate if the server administrator has published a fingerprint that matches the one above."; - -"auth_invalid_user_name" = "Invalid username"; -"auth_username_in_use" = "Username in use"; -"auth_reset_password_error_unauthorized" = "Unauthorized"; -"auth_reset_password_error_not_found" = "Not found"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/eo.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/eo.lproj/MatrixKit.strings deleted file mode 100644 index 675f3b483..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/eo.lproj/MatrixKit.strings +++ /dev/null @@ -1,533 +0,0 @@ -"notice_crypto_unable_to_decrypt" = "** Ne eblas malĉifri: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "La salutaĵo de la sendanto ne sendis al ni la ŝlosilojn por tiu mesaĝo."; -"notice_in_reply_to" = "Respondanta al"; -// room display name -"room_displayname_empty_room" = "Malplena babilejo"; -"room_displayname_two_members" = "%@ kaj %@"; -"room_displayname_more_than_two_members" = "%@ kaj %@ aliaj"; -// Settings -"settings" = "Agordoj"; -"message_reply_to_message_to_reply_to_prefix" = "Respondanta al"; -"room_event_encryption_verify_title" = "Kontroli salutaĵon\n\n"; -"back" = "Reiri"; -"close" = "Fermi"; -"continue" = "Daŭrigi"; -"retry" = "Reprovi"; -"cancel" = "Nuligi"; -"save" = "Konservi"; -"leave" = "Forlasi"; -"view" = "Vidi"; -"invite" = "Inviti"; - -// members list Screen - -// accounts list Screen - -// image size selection - -// invitation members list Screen - -// room creation dialog Screen - -// room info dialog Screen - -// room details dialog screen -"room_details_title" = "Detaloj pri ĉambro"; -"register_error_title" = "Registriĝo malsukcesis"; -"login_invalid_param" = "Nevalida parametro"; -"login_leave_fallback" = "Nuligi"; -"login_error_login_email_not_yet" = "La retpoŝta ligilo, kiun vi ankoraŭ ne klakis"; -"login_error_user_in_use" = "Tiu ĉi uzantonomo jam estas uzata"; -"login_error_limit_exceeded" = "Tro multaj petoj sendiĝis"; -"login_error_not_json" = "Ne enhavis validajn JSON-datumojn"; -"login_error_bad_json" = "Misformitaj JSON-datumoj"; -"login_error_unknown_token" = "La donita ĵetono de aliro ne rekoniĝis"; -"login_error_forbidden" = "Nevalidaj uzantonomo aŭ pasvorto"; -"login_error_registration_is_not_supported" = "Registriĝo ne estas nun subtenata"; -"login_error_do_not_support_login_flows" = "Nuntempe ni subtenas neniujn manierojn de salutado difinitajn de tiu ĉi hejmservilo"; -"login_error_no_login_flow" = "Ni malsukcesis akiri informojn pri aŭtentikigo de ĉi tiu hejmservilo"; -"login_error_title" = "Malsukcesis saluto"; -"login_prompt_email_token" = "Bonvolu enigi vian ĵetonon de retpoŝta validigo:"; -"login_email_placeholder" = "Retpoŝtadreso"; -"login_email_info" = "Specifu retpoŝtadresojn por ebligi vian pli facilan troviĝon de aliaj uzantoj, kaj ankaŭ por restarigi vian pasvorton okaze de perdo."; -"login_display_name_placeholder" = "Prezenta nomo (ekz. Ivano Ĥlestakov)"; -"login_optional_field" = "malnepra"; -"login_password_placeholder" = "Pasvorto"; -"login_user_id_placeholder" = "Identigilo de Matrix (ekz. @ivano:matrix.org aŭ ivano)"; -"login_identity_server_info" = "Matrix havas identigajn servilojn por scii, kiuj retleteroj ktp. bezonas al kiuj identigiloj de Matrix. Nur https://matrix.org ekzistas nuntempe."; -"login_identity_server_title" = "URL de identiga servilo:"; -"login_home_server_info" = "Via hejmservilo konservas ĉiujn viajn interparolojn kaj datumojn de konto"; -"login_home_server_title" = "URL de hejmservilo:"; -"login_server_url_placeholder" = "URL (ekz. https://matrix.org)"; - -// Login Screen -"login_create_account" = "Krei konton:"; -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "Matrix"; -"login_desktop_device" = "Tabla komputilo"; -"login_tablet_device" = "Tabulkomputilo"; -"login_mobile_device" = "Telefono"; -"room_event_encryption_verify_message" = "Por certigi, ke ĉi tiu salutaĵo povas esti fidata, bonvolu kontakti ĝian posedanton per alia maniero (ekz. persone aŭ per telefona voko) kaj demandu, ĉu la ŝlosilo, kiun ĝi vidas en siaj agordoj de uzanto por ĉi tiu salutaĵo, akordas kun la ĉi-suba:\n\n\tNomo de salutaĵo: %@\n\tIdentigilo de salutaĵo: %@\n\tŜlosilo de salutaĵo: %@\n\nSe la ŝlosilo akordas, premu la kontrolan butonon ĉi-sube. Se ne, iu alia subaŭskultas la salutaĵon, kaj vi probable volas anstataŭe malpermesi ĝin.\n\nĈi tiu kontrola procedo plifaciliĝos estontece."; -"room_event_encryption_info_device_fingerprint" = "Fingrospuro je Ed25519\n"; -"room_event_encryption_info_event_fingerprint_key" = "Asertita ŝlosilo de fingrospuro je Ed25519\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"notice_feedback" = "Responda okazo (identigilo: %@): %@"; -"discard" = "Forĵeti"; -"abort" = "Ĉesigi"; -"login_use_fallback" = "Uzi repaŝan paĝon"; -"ssl_only_accept" = "Akceptu la atestilon NUR SE administranto de la servilo publikigis fingrospuron, kiu akordas kun la ĉi-supra."; -"ssl_expected_existing_expl" = "La atestilo ŝanĝiĝis de atestilo antaŭe fidata al alia, kiu ne estas fidata. Eble la servilo renovigis sian atestilon. Kontaktu la administranton de la servilo por ricevi la atendindan fingrospuron."; -"ssl_unexpected_existing_expl" = "La atestilo ŝanĝiĝis de tiu, kiun fidis via telefono. Tio estas TRE STRANGA. Oni rekomendas, ke vi NE AKCEPTU ĉi tiun novan atestilon."; -"ssl_cert_new_account_expl" = "Se la administranto de la servilo diris, ke tio atendindas, certigu, ke la ĉi-suba fingrospuro akordas kun la fingrospuro donita de la administranto."; -"ssl_cert_not_trust" = "Tio povus signifi, ke iu malice subaŭskultas vian rettrafikon, aŭ ke via telefono ne fidas la atestilon donitan de la fora servilo."; -"ssl_could_not_verify" = "Ne povis kontroli identecon de fora servilo."; -"ssl_fingerprint_hash" = "Fingrospuro (%@):"; -"ssl_remain_offline" = "Malatenti"; -"ssl_logout_account" = "Adiaŭi"; - -// unrecognized SSL certificate -"ssl_trust" = "Fidi"; -"call_transfer_to_user" = "Transdoni al %@"; -"call_consulting_with_user" = "Konsultante kun %@"; -"call_video_with_user" = "Vidvoko kun %@"; -"call_voice_with_user" = "Voĉvoko kun %@"; -"call_more_actions_dialpad" = "Ciferplato"; -"call_more_actions_transfer" = "Transdoni"; -"call_more_actions_audio_use_device" = "Soni aparate"; -"call_more_actions_audio_use_headset" = "Soni kapaŭskultile"; -"call_more_actions_change_audio_device" = "Ŝanĝi sonaparaton"; -"call_more_actions_unhold" = "Daŭrigi"; -"call_more_actions_hold" = "Paŭzigi"; -"call_holded" = "Vi paŭzigis la vokon"; -"call_remote_holded" = "%@ paŭzigis la vokon"; -"call_invite_expired" = "Inviti al voko atingis tempolimon"; -"incoming_voice_call" = "Envena voĉvoko"; -"incoming_video_call" = "Envena vidvoko"; -"call_ended" = "Voko finiĝis"; -"call_ringing" = "Sonorante…"; - -// Settings keys - -// call string -"call_connecting" = "Konektante…"; -"settings_config_user_id" = "Identigilo de uzanto: %@"; -"settings_config_identity_server" = "Identiga servilo: %@"; - -// gcm section -"settings_config_home_server" = "Hejmservilo: %@"; -"notification_settings_notify_all_other" = "Sciigi por ĉiuj aliaj mesaĝoj/ĉambroj"; -"notification_settings_by_default" = "Implicite…"; -"notification_settings_suppress_from_bots" = "Forteni sciigojn de robotoj"; -"notification_settings_receive_a_call" = "Sciigu min pri ricevitaj vokoj"; -"notification_settings_people_join_leave_rooms" = "Sciigu min pri aliĝoj al aŭ foriroj de ĉambroj"; -"notification_settings_invite_to_a_new_room" = "Sciigu min pri invitoj al novaj ĉambroj"; -"notification_settings_just_sent_to_me" = "Sciigu min per sono pri mesaĝoj, kiuj sendiĝis al mi individue"; -"notification_settings_contain_my_display_name" = "Sciigu min per sono pri mesaĝoj, kiuj enhavas mian prezentan nomon"; -"notification_settings_contain_my_user_name" = "Sciigu min per sono pri mesaĝoj, kiuj enhavas mian uzantonomon"; -"notification_settings_other_alerts" = "Aliaj atentigoj"; -"notification_settings_select_room" = "Elekti ĉambron"; -"notification_settings_sender_hint" = "@uzanto:retnomo.net"; -"notification_settings_per_sender_notifications" = "Sendintulaj sciigoj"; -"notification_settings_per_room_notifications" = "Ĉambraj sciigoj"; -"notification_settings_custom_sound" = "Propra sono"; -"notification_settings_highlight" = "Emfazo"; -"notification_settings_word_to_match" = "akordaj vortoj"; -"notification_settings_never_notify" = "Neniam sciigi"; -"notification_settings_always_notify" = "Ĉiam sciigi"; -"notification_settings_per_word_info" = "Vortoj akordas sendepende de grandeco, kaj povas enhavi la ĵokeron *. Sekve:\nekzemplo akordas kun la tekstoĉeno «ekzemplo» ĉirkaŭita de vortlimiloj (ekz. interpunkcio kaj spaco aŭ komenco/fino de linio).\nekzemplo* akordas kun ĉiu tia vorto, kiu komenciĝas per «ekzemplo».\n*ekzemplo* akordas kun ĉiu tia vorto, kiu enhavas la sinsekvon de literoj «ekzemplo»."; -"notification_settings_per_word_notifications" = "Vortaj sciigoj"; -"notification_settings_global_info" = "Agordoj pri sciigoj estas konservitaj en via konto de uzanto kaj havigitaj al ĉiuj klientoj, kiuj ilin subtenas (inkluzive sciigojn labortablajn).\n\nReguloj aplikiĝas laŭorde; la unua regulo, kiu akordas, difinas la rezulton por la mesaĝo.\nSekve: vortaj sciigoj estas pli gravaj ol ĉambraj sciigoj, kiuj estas pli gravaj ol sendintulaj sciigoj.\nPor pluraj reguloj samspecaj, la unua akorda en la listo estas prioritata."; -"notification_settings_enable_notifications_warning" = "Ĉiuj sciigoj nun estas malŝaltitaj por ĉiuj aparatoj."; -"notification_settings_enable_notifications" = "Ŝalti sciigojn"; - -// Notification settings screen -"notification_settings_disable_all" = "Malŝalti ĉiujn sciigojn"; -"settings_title_notifications" = "Sciigoj"; - -// Settings screen -"settings_title_config" = "Agordaro"; - -// contacts list screen -"invitation_message" = "Mi volus babili kun vi per Matrix. Bonvolu viziti la retpaĝon http://matrix.org por pliaj informoj."; -"login_error_must_start_http" = "URL devas komenciĝi per http[s]://"; - -// Login Screen -"login_error_already_logged_in" = "Jam salutinta"; -"message_unsaved_changes" = "Restas nekonservitaj ŝanĝoj. Forlaso ilin forĵetos."; -"unban" = "Malforbari"; -"ban" = "Forbari"; -"kick" = "Forpeli"; -"num_members_other" = "%@ uzantoj"; -"num_members_one" = "%@ uzanto"; -"membership_ban" = "Forbarita"; -"membership_leave" = "Foririnta"; -"membership_invite" = "Invitita"; -"create_account" = "Krei konton"; -"login" = "Saluti"; -"create_room" = "Krei ĉambron"; - -// actions -"action_logout" = "Adiaŭi"; -"delete" = "Forigi"; -"share" = "Havigi"; -"redact" = "Forigi"; -"resend" = "Resendi"; -"copy_button_name" = "Kopii"; -"send" = "Sendi"; - -// Room Screen - -// general errors - -// Home Screen - -// Last seen time - -// call events - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /console/src/main/res/values/strings.xml. -*/ - - -// titles - -// button names -"ok" = "Bone"; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Vi videbligis estontan historion de la ĉambro al ĉiuj ĉambranoj, ekde ties aliĝo."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Vi videbligis estontajn mesaĝojn al ĉiuj ĉambranoj, ekde ties invito."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Vi videbligis estontan historion de la ĉambro al ĉiuj ĉambranoj, ekde ties invito."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Vi videbligis estontajn mesaĝojn al ĉiuj ĉambranoj."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Vi videbligis estontajn mesaĝojn al ĉiuj ĉambranoj, ekde ties aliĝo."; -"notice_room_history_visible_to_members_by_you" = "Vi videbligis estontan historion de ĉambro al ĉiuj ĉambranoj."; -"notice_room_history_visible_to_anyone_by_you" = "Vi videbligis estontan historion de ĉambro al ĉiu ajn."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Vi ŝaltis tutvojan ĉifradon (nerekonita algoritmo %@)."; -"notice_encryption_enabled_ok_by_you" = "Vi ŝaltis tutvojan ĉifradon."; -"notice_room_created_by_you_for_dm" = "Vi aliĝis."; -"notice_room_created_by_you" = "Vi kreis kaj agordis la ĉambron."; -"notice_profile_change_redacted_by_you" = "Vi ĝisdatigis vian profilon %@"; -"notice_event_redacted_by_you" = " de vi"; -"notice_room_topic_removed_by_you" = "Vi forigis la temon"; -"notice_room_name_removed_by_you_for_dm" = "Vi forigis la nomon"; -"notice_room_name_removed_by_you" = "Vi forigis nomon de la ĉambro"; -"notice_conference_call_request_by_you" = "Vi petis grupan vokon"; -"notice_declined_video_call_by_you" = "Vi rifuzis la vokon"; -"notice_ended_video_call_by_you" = "Vi finis la vokon"; -"notice_answered_video_call_by_you" = "Vi respondis la vokon"; -"notice_placed_video_call_by_you" = "Vi ekigis vidvokon"; -"notice_placed_voice_call_by_you" = "Vi ekigis voĉvokon"; -"notice_room_name_changed_by_you_for_dm" = "Vi ŝanĝis la nomon al %@."; -"notice_room_name_changed_by_you" = "Vi ŝanĝis nomon de la ĉambro al %@."; -"notice_topic_changed_by_you" = "Vi ŝanĝis la temon al «%@»."; -"notice_display_name_removed_by_you" = "Vi forigis vian prezentan nomon"; -"notice_display_name_changed_from_by_you" = "Vi ŝanĝis vian prezentan nomon de %@ al %@"; -"notice_display_name_set_by_you" = "Vi agordis vian prezentan nomon al %@"; -"notice_avatar_url_changed_by_you" = "Vi ŝanĝis vian profilbildon"; -"notice_room_withdraw_by_you" = "Vi nuligis la inviton por %@"; -"notice_room_ban_by_you" = "Vi forbaris uzanton %@"; -"notice_room_unban_by_you" = "Vi malforbaris uzanton %@"; -"notice_room_kick_by_you" = "Vi forpelis uzanton %@"; -"notice_room_reject_by_you" = "Vi rifuzis la inviton"; -"notice_room_leave_by_you" = "Vi foriris"; -"notice_room_join_by_you" = "Vi aliĝis"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Vi nuligis la inviton por %@"; -"notice_room_third_party_revoked_invite_by_you" = "Vi nuligis la inviton al la ĉambro por %@"; -"notice_room_third_party_registered_invite_by_you" = "Vi akceptis la inviton por %@"; -"notice_room_third_party_invite_by_you_for_dm" = "Vi invitis uzanton %@"; -"notice_room_third_party_invite_by_you" = "Vi sendis inviton al la ĉambro al %@"; -"notice_room_invite_you" = "%@ invitis vin"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "Vi invitis uzanton %@"; -"notice_conference_call_finished" = "Grupa voko finiĝis"; -"notice_conference_call_started" = "Grupa voko komenciĝis"; -"notice_conference_call_request" = "%@ petis grupan vokon"; -"notice_declined_video_call" = "%@ rifuzis la vokon"; -"notice_ended_video_call" = "%@ finis la vokon"; -"notice_answered_video_call" = "%@ respondis la vokon"; -"notice_placed_video_call" = "%@ ekigis vidvokon"; -"notice_placed_voice_call" = "%@ ekigis voĉvokon"; -"notice_room_name_changed_for_dm" = "%@ ŝanĝis la nomon al %@."; -"notice_room_name_changed" = "%@ ŝanĝis nomon de la ĉambro al %@."; -"notice_topic_changed" = "%@ ŝanĝis la temon al «%@»."; -"notice_display_name_removed" = "%@ forigis sian prezentan nomon"; -"notice_display_name_changed_from" = "%@ ŝanĝis sian prezentan nomon de %@ al %@"; -"notice_display_name_set" = "%@ ŝanĝis sian prezentan nomon al %@"; -"notice_avatar_url_changed" = "%@ ŝanĝis sian profilbildon"; -"notice_room_reason" = ". Kialo: %@"; -"notice_room_withdraw" = "%@ nuligis inviton por %@"; -"notice_room_ban" = "%@ forbaris uzanton %@"; -"notice_room_unban" = "%@ malforbaris uzanton %@"; -"notice_room_kick" = "%@ forpelis uzanton %@"; -"notice_room_reject" = "%@ rifuzis la inviton"; -"notice_room_leave" = "%@ foriris"; -"notice_room_join" = "%@ aliĝis"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ nuligis la inviton por %@"; -"notice_room_third_party_revoked_invite" = "%@ nuligis la inviton al la ĉambro por %@"; -"notice_room_third_party_registered_invite" = "%@ akceptis la inviton por %@"; -"notice_room_third_party_invite_for_dm" = "%@ invitis uzanton %@"; -"notice_room_third_party_invite" = "%@ sendis inviton al la ĉambro al %@"; - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /matrix-sdk/src/main/res/values/strings.xml. -*/ - -"notice_room_invite" = "%@ invitis uzanton %@"; -"language_picker_default_language" = "Implicita (%@)"; - -// Language picker -"language_picker_title" = "Elektu lingvon"; - -// Country picker -"country_picker_title" = "Elektu landon"; -"local_contacts_access_discovery_warning" = "Por trovi kontaktojn, kiuj jam uzas Matrix-on, %@ povas sendi retpoŝtadresojn kaj telefonnumerojn de via adresaro al via elektita identiga servilo de Matrix. Kiam eblas, personaj datumoj estas haketitaj antaŭ sendo – bonvolu kontroli la privatecan politikon de via identiga servilo por pliaj detaloj."; -"local_contacts_access_discovery_warning_title" = "Trovado de uzantoj"; -"local_contacts_access_not_granted" = "Trovado de uzantoj per lokaj kontaktoj postulas aliron al viaj kontaktoj, sed %@ nun ne rajtas ilin uzi"; -"microphone_access_not_granted_for_call" = "Vokoj postulas aliron al la mikrofono, sed %@ nun ne rajtas ĝin uzi"; - -// Permissions -"camera_access_not_granted_for_call" = "Vidvokoj postulas aliron al la filmilo, sed %@ nun ne rajtas ĝin uzi"; -"ssl_homeserver_url" = "URL de hejmservilo: %@"; -"user_id_placeholder" = "ekz. @kjara:hejmservilo"; -"network_error_not_reachable" = "Bonvolu kontroli vian retkonekton"; -"power_level" = "Povnivelo"; -"public" = "Publika"; -"private" = "Privata"; -"default" = "implicita"; -"not_supported_yet" = "Ankoraŭ ne subtenata"; -"error_common_message" = "Io eraris. Bonvolu reprovi poste."; -"error" = "Eraro"; -"unsent" = "Nesendita"; -"offline" = "eksterrete"; - -// Others -"user_id_title" = "Identigilo de uzanto:"; -"e2e_passphrase_create" = "Krei pasfrazon"; -"e2e_passphrase_not_match" = "Pasfrazoj devas akordi"; -"e2e_passphrase_empty" = "Pasfrazo maldevas esti malplena"; -"e2e_passphrase_confirm" = "Konfirmi pasfrazon"; -"e2e_export" = "Elporti"; -"e2e_export_prompt" = "Ĉi tiu procedo ebligas elporton de ŝlosiloj por mesaĝoj, kiujn vi ricevis en ĉifritaj ĉambroj, al loka dosiero. Poste vi povos enporti tiun dosieron en alian klienton de Matrix, por ke ankaŭ tiu kliento povu malĉifri la mesaĝojn.\nLa elportita dosiero ebligos legadon de videblaj ĉifritaj mesaĝoj al ĉiu, kiu povos ĝin legi; vi do provu ĝin teni en sekura loko."; - -// E2E export -"e2e_export_room_keys" = "Elporti ĉambrajn ŝlosilojn"; -"e2e_passphrase_enter" = "Enigi pasfrazon"; -"e2e_import" = "Enporti"; -"e2e_import_prompt" = "Ĉi tiu procedo ebligas enporti ĉifrajn ŝlosilojn, kiujn vi antaŭe elportis el alia kliento de Matrix. Poste vi povos malĉifri ĉiujn mesaĝojn, kiujn ankaŭ la alia kliento povis malĉifri.\nLa elportitan dosieron protektas pasfrazo. Vi enigu la pasfrazon ĉi tien, por malĉifri la dosieron."; - -// E2E import -"e2e_import_room_keys" = "Enporti ŝlosilojn de ĉambro"; -"format_time_d" = "j"; -"format_time_h" = "h"; -"format_time_m" = "m"; - -// Time -"format_time_s" = "s"; -"search_searching" = "Serĉo progresas…"; - -// Search -"search_no_results" = "Neniuj rezultoj"; -"group_section" = "Grupoj"; - -// Groups -"group_invite_section" = "Invitoj"; -"contact_local_contacts" = "Lokaj kontaktoj"; - -// Contacts -"contact_mx_users" = "Uzantoj de Matrix"; -"attachment_e2e_keys_import" = "Enporti…"; -"attachment_e2e_keys_file_prompt" = "Ĉi tiu dosiero enhavas ĉifrajn ŝlosilojn elportitajn el kliento de Matrix.\nĈu vi volas vidi enhavojn de la dosiero aŭ enporti la enhavatajn ŝlosilojn?"; -"attachment_multiselection_original" = "Originala grando"; -"attachment_multiselection_size_prompt" = "Ĉu vi volas sendi bildojn kiel:"; -"attachment_cancel_upload" = "Ĉu nuligi la alŝuton?"; -"attachment_cancel_download" = "Ĉu nuligi la elŝuton?"; -"attachment_large" = "Granda: %@"; -"attachment_medium" = "Meza: %@"; -"attachment_small" = "Malgranda: %@"; -"attachment_original" = "Originala: %@"; - -// Attachment -"attachment_size_prompt" = "Ĉu vi volas sendi en grando:"; -"room_member_power_level_prompt" = "Vi ne povos malfari ĉi tiun ŝanĝon, ĉar vi povigas la uzanton al la sama nivelo, kiun vi havas.\nĈu vi certas?"; - -// Room members -"room_member_ignore_prompt" = "Ĉu vi certe volas kaŝi ĉiujn mesaĝojn de tiu ĉi uzanto?"; -"message_reply_to_sender_sent_a_file" = "sendis dosieron."; -"message_reply_to_sender_sent_an_audio_file" = "sendis sondosieron."; -"message_reply_to_sender_sent_a_video" = "sendis filmon."; - -// Reply to message -"message_reply_to_sender_sent_an_image" = "sendis bildon."; -"room_no_conference_call_in_encrypted_rooms" = "Grupaj vokoj ne estas subtenataj en ĉifritaj ĉambroj"; -"room_no_power_to_create_conference_call" = "Vi bezonas permeson komenci grupan vokon en ĉi tiu ĉambro"; -"room_left_for_dm" = "Vi foriris"; -"room_left" = "Vi foriris de la ĉambro"; -"room_error_timeline_event_not_found" = "La aplikaĵo provis enlegi precizan punkton en la historio de ĉi tiu ĉambro, sed ne povis ĝin trovi"; -"room_error_timeline_event_not_found_title" = "Malsukcesis enlegi pozicion en historio"; -"room_error_cannot_load_timeline" = "Malsukcesis enlegi historion"; -"room_error_topic_edition_not_authorized" = "Vi ne rajtas redakti temon de ĉi tiu ĉambro"; -"room_error_name_edition_not_authorized" = "Vi ne rajtas redakti nomon de ĉi tiu ĉambro"; -"room_error_join_failed_empty_room" = "ANkoraŭ ne eblas ree aliĝi al malplena ĉambro."; -"room_error_join_failed_title" = "Malsukcesis aliĝi al ĉambro"; - -// Room -"room_please_select" = "Bonvolu elekti ĉambron"; -"room_creation_participants_placeholder" = "(ekz. @kjara:hejmservilo1; @megumi:hejmservilo2…)"; -"room_creation_participants_title" = "Anoj:"; -"room_creation_alias_placeholder_with_homeserver" = "(ekz. #io%@)"; -"room_creation_alias_placeholder" = "(ekz. #io:ekzemplo.net)"; -"room_creation_alias_title" = "Kromnomo de ĉambro:"; -"room_creation_name_placeholder" = "(ekz. tagmanghGrupo)"; - -// Room creation -"room_creation_name_title" = "Nomo de ĉambro:"; -"account_error_push_not_allowed" = "Sciigoj ne estas permesitaj"; -"account_error_msisdn_wrong_description" = "Ĉi tio ne ŝajnas esti valida telefonnumero"; -"account_error_msisdn_wrong_title" = "Nevalida telefonnumero"; -"account_error_email_wrong_description" = "Ĉi tio ne ŝajnas esti valida retpoŝtadreso"; -"account_error_email_wrong_title" = "Nevalida retpoŝtadreso"; -"account_error_matrix_session_is_not_opened" = "Salutaĵo de Matrix ne estas malfermita"; -"account_error_picture_change_failed" = "Malsukcesis ŝanĝo de bildo"; -"account_error_display_name_change_failed" = "Malsukcesis ŝanĝo de prezenta nomo"; -"account_msisdn_validation_error" = "Ne povas kontroli vian telefonnumeron."; -"account_msisdn_validation_message" = "Ni sendis telefonan mesaĝon kun aktiviga kodo. Bonvolu enigi la kodon ĉi-suben."; -"account_msisdn_validation_title" = "Atendanta kontrolo"; -"account_email_validation_error" = "Ne povas kontroli retpoŝtadreson. Bonvolu kontroli vian retpoŝton kaj klaki al la enhavata ligilo. Tion farinte, klaku al «daŭrigi»"; -"account_email_validation_message" = "Bonvolu kontroli vian retpoŝton kaj trovi la enhavatan ligilon. Farinte tion, klaku al «daŭrigi»."; -"account_email_validation_title" = "Atendanta kontrolo"; -"account_linked_emails" = "Alligitaj retpoŝtadresoj"; -"account_link_email" = "Ligi al retpoŝtadreso"; - -// Account -"account_save_changes" = "Konservi ŝanĝojn"; -"room_event_encryption_verify_ok" = "Kontroli"; -"room_event_encryption_info_unverify" = "Malkontroli"; -"room_event_encryption_info_verify" = "Kontroli…"; -"room_event_encryption_info_device_not_verified" = "NE kontrolita"; -"room_event_encryption_info_device_verified" = "Kontrolita"; -"room_event_encryption_info_device_verification" = "Kontrolo\n"; -"room_event_encryption_info_device_id" = "Identigilo\n"; -"room_event_encryption_info_device_name" = "Publika nomo\n"; -"room_event_encryption_info_device_unknown" = "nekonata salutaĵo\n"; -"room_event_encryption_info_device" = "\nInformoj pri salutaĵo de sendinto\n"; -"room_event_encryption_info_event_none" = "neniu"; -"room_event_encryption_info_event_unencrypted" = "neĉifrita"; -"room_event_encryption_info_event_decryption_error" = "Malĉifra eraro\n"; -"room_event_encryption_info_event_session_id" = "Identigilo de salutaĵo\n"; -"room_event_encryption_info_event_algorithm" = "Algoritmo\n"; -"room_event_encryption_info_event_identity_key" = "Identiga ŝlosilo je Curve25519\n"; -"room_event_encryption_info_event_user_id" = "Identigilo de uzanto\n"; -"room_event_encryption_info_event" = "Informoj pri okazo\n"; - -// Encryption information -"room_event_encryption_info_title" = "Informoj pri tutvoja ĉifrado\n\n"; -"device_details_delete_prompt_message" = "Ĉi tio postulas plian aŭtentikigon.\nPor daŭrigi, bonvolu enigi vian pasvorton."; -"device_details_delete_prompt_title" = "Aŭtentikigo"; -"device_details_rename_prompt_message" = "Publika nomo de salutaĵo estas videbla al ĉiu, kun kiu vi komunikas"; -"device_details_rename_prompt_title" = "Nomo de salutaĵo"; -"device_details_last_seen" = "Lastafoje vidita\n"; -"device_details_identifier" = "Identigilo\n"; -"device_details_name" = "Publika nomo\n"; - -// Devices -"device_details_title" = "Informoj pri salutaĵo\n"; -"notification_settings_room_rule_title" = "Ĉambro: «%@»"; -"settings_enter_validation_token_for" = "Enigi validigan pecon por %@:"; -"settings_enable_push_notifications" = "Ŝalti pasivajn sciigojn"; -"settings_enable_inapp_notifications" = "Ŝalti sciigojn en la aplikaĵo"; -"notice_sticker" = "glumarko"; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ videbligis estontajn mesaĝojn al ĉiuj, ekde ties aliĝo."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ videbligis estontan historion de ĉambro al ĉiuj ĉambranoj, ekde ties aliĝo."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ videbligis estontajn mesaĝojn al ĉiuj, ekde ties invito."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ videbligis estontan historion de ĉambro al ĉiuj ĉambranoj, ekde ties invito."; -"notice_room_history_visible_to_members_for_dm" = "%@ videbligis estontajn mesaĝojn al ĉiuj ĉambranoj."; -"notice_room_history_visible_to_members" = "%@ videbligis estontan historion de ĉambro al ĉiuj ĉambranoj."; -"notice_room_history_visible_to_anyone" = "%@ videbligis estontan historion de la ĉambro al ĉiu ajn."; -"notice_error_unknown_event_type" = "Nekonata speco de okazo"; -"notice_error_unexpected_event" = "Neatendita okazo"; -"notice_error_unsupported_event" = "Nesubtenata okazo"; -"notice_unsupported_attachment" = "Nesubtenata kunsendaĵo: %@"; -"notice_invalid_attachment" = "nevalida kunsendaĵo"; -"notice_file_attachment" = "dosiero kunsendita"; -"notice_location_attachment" = "loko kunsendita"; -"notice_video_attachment" = "filmo kunsendita"; -"notice_audio_attachment" = "sono kunsendita"; -"notice_image_attachment" = "bildo kunsendita"; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ ŝaltis tutvojan ĉifradon (nerekonita algoritmo %2$@)."; -"notice_encryption_enabled_ok" = "%@ ŝaltis tutvojan ĉifradon."; -"notice_encrypted_message" = "Ĉifrita mesaĝo"; -"notice_room_related_groups" = "Grupoj rilataj al ĉi tiu ĉambro estas: %@"; -"notice_room_aliases_for_dm" = "La kromnomoj estas: %@"; -"notice_room_aliases" = "Kromnomoj de la ĉamrbo estas: %@"; -"notice_room_power_level_event_requirement" = "La minimumaj povniveloj rilataj al okazoj estas:"; -"notice_room_power_level_acting_requirement" = "La minimuma povnivelo, kiun uzanto bezonas antaŭ agi, estas:"; -"notice_room_power_level_intro_for_dm" = "La povniveloj de ĉambranoj estas:"; -"notice_room_power_level_intro" = "La povniveloj de ĉambranoj estas:"; -"notice_room_join_rule_public_by_you_for_dm" = "Vi publikigis la individuan ĉambron."; -"notice_room_join_rule_public_by_you" = "Vi publikigis la ĉambron."; -"notice_room_join_rule_public_for_dm" = "%@ publikigis la individuan ĉambron."; -"notice_room_join_rule_public" = "%@ publikigis la ĉambron."; -"notice_room_join_rule_invite_by_you_for_dm" = "Vi ekpostulis inviton por aliĝoj."; -"notice_room_join_rule_invite_by_you" = "Vi ekpostulis inviton por aliĝoj."; -"notice_room_join_rule_invite_for_dm" = "%@ ekpostulis inviton por aliĝoj."; -// New -"notice_room_join_rule_invite" = "%@ ekpostulis inviton por aliĝoj."; -// Old -"notice_room_join_rule" = "La regulo de aliĝo estas: %@"; -"notice_room_created_for_dm" = "%@ aliĝis."; -"notice_room_created" = "%@ kreis kaj agordis la ĉambron."; -"notice_profile_change_redacted" = "%@ ĝisdatigis sian profilon %@"; -"notice_event_redacted_reason" = " [kialo: %@]"; -"notice_event_redacted_by" = " de %@"; -"notice_room_topic_removed" = "%@ forigis la temon"; -"notice_room_name_removed_for_dm" = "%@ forigis la nomon"; -"notice_room_name_removed" = "%@ forigis nomon de la ĉambro"; - -// Events formatter -"notice_avatar_changed_too" = "(ankaŭ profilbildo ŝanĝiĝis)"; -"unignore" = "Reatenti"; -"ignore" = "Malatenti"; -"resume_call" = "Daŭrigi"; -"end_call" = "Fini vokon"; -"reject_call" = "Rifuzi vokon"; -"answer_call" = "Respondi vokon"; -"show_details" = "Montri detalojn"; -"cancel_download" = "Nuligi elŝuton"; -"cancel_upload" = "Nuligi alŝuton"; -"select_all" = "Elekti ĉion"; -"resend_message" = "Resendi la mesaĝon"; -"reset_to_default" = "Restarigi implicitan"; -"invite_user" = "Inviton uzanton de Matrix"; -"capture_media" = "Foti/Filmi"; -"attach_media" = "Kunsendi vidaŭdaĵon el vidaŭdaĵujo"; -"select_account" = "Elekti konton"; -"mention" = "Mencii"; -"start_video_call" = "Komenci vidvokon"; -"start_voice_call" = "Komenci voĉvokon"; -"start_chat" = "Komenci babilon"; -"set_admin" = "Igi administranto"; -"set_moderator" = "Igi reguligisto"; -"set_default_power_level" = "Restarigi povnivelon"; -"set_power_level" = "Agordi povnivelon"; -"submit_code" = "Sendi kodon"; -"submit" = "Sendi"; -"sign_up" = "Registriĝi"; -"yes" = "Jes"; - -// Action -"no" = "Ne"; -"login_error_resource_limit_exceeded_contact_button" = "Kontakti administranton"; -"login_error_resource_limit_exceeded_message_contact" = "\n\nBonvolu kontakti la administranton de via servo por plu ĝin uzi."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Ĉi tiu hejmservilo atingis sian monatan limon de aktivaj uzantoj."; -"login_error_resource_limit_exceeded_message_default" = "Ĉi tiu hejmservilo atingis unu el siaj rimedaj limoj."; -"login_error_resource_limit_exceeded_title" = "Rimeda limo estas atingita"; -"login_error_forgot_password_is_not_supported" = "Forgesado de pasvorto nun ne estas subtenata"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/es.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/es.lproj/MatrixKit.strings deleted file mode 100644 index b8d1695da..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/es.lproj/MatrixKit.strings +++ /dev/null @@ -1,399 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Crear cuenta:"; -"login_server_url_placeholder" = "URL (p.ej. https://matrix.org)"; -"login_home_server_title" = "Servidor Local:"; -"login_home_server_info" = "Tu servidor local almacena todas tus conversaciones y los datos de tu cuenta"; -"login_identity_server_title" = "URL de servidor de identidad:"; -"login_identity_server_info" = "Matrix proporciona servidores de identidades para rastrear qué correos electrónicos, etc. pertenecen a qué IDs de Matrix. Actualmente solo existe https://matrix.org."; -"login_user_id_placeholder" = "ID de Matrix (p.ej. @juan:matrix.org o juan)"; -"login_password_placeholder" = "Contraseña"; -"login_optional_field" = "opcional"; -"login_display_name_placeholder" = "Nombre público (p.ej. Juan Pérez)"; -"room_creation_participants_placeholder" = "(ej. @juan:servidordomestico1; @juan:servidordomestico2...)"; -"user_id_placeholder" = "ej: @juan:servidordomestico"; -"login_email_info" = "Especificar una dirección de correo electrónico permite que otros usuarios te encuentren en Matrix más fácilmente, y te dará una manera de restablecer tu contraseña en el futuro."; -"login_email_placeholder" = "Dirección de correo electrónico"; -"login_prompt_email_token" = "Por favor ingresa tu código de validación de correo electrónico:"; -"login_error_title" = "No se pudo iniciar sesión"; -"login_error_no_login_flow" = "No pudimos recuperar la información de autenticación de este Servidor Local"; -"login_error_do_not_support_login_flows" = "Actualmente no admitimos cualquiera o todos los flujos de inicio de sesión definidos por este Servidor Local"; -"login_error_registration_is_not_supported" = "Actualmente no es posible registrarse"; -"login_error_forbidden" = "Nombre de usuario/contraseña inválidos"; -"login_error_unknown_token" = "No se reconoció el código de acceso especificado"; -"login_error_bad_json" = "JSON invalido"; -"login_error_not_json" = "No contenía un JSON válido"; -"login_error_limit_exceeded" = "Se enviaron demasiadas solicitudes"; -"login_error_user_in_use" = "Este nombre de usuario ya está en uso"; -"login_error_login_email_not_yet" = "Aún no se ha abierto el enlace del correo electrónico"; -"login_use_fallback" = "Utilizar la página de respaldo"; -"login_leave_fallback" = "Cancelar"; -"login_invalid_param" = "Parámetro inválido"; -"register_error_title" = "Falló el Registro"; -"login_error_forgot_password_is_not_supported" = "Actualmente no es posible restablecer la contraseña"; -"login_mobile_device" = "Móvil"; -"login_tablet_device" = "Tableta"; -"login_desktop_device" = "Escritorio"; -"login_error_resource_limit_exceeded_title" = "Límite de Recursos Excedido"; -"login_error_resource_limit_exceeded_message_default" = "Este servidor local ha excedido uno de sus límites de recursos."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Este servidor local ha alcanzado su límite Mensual de Usuarios Activos."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nPor favor, contacta al administrador de tu proveedor de servicio para continuar utilizando este servicio."; -"login_error_resource_limit_exceeded_contact_button" = "Contacta al Administrador"; -// Action -"no" = "No"; -"yes" = "Sí"; -"abort" = "Anular"; -"back" = "Atrás"; -"close" = "Cerrar"; -"continue" = "Continuar"; -"discard" = "Descartar"; -"dismiss" = "Ignorar"; -"retry" = "Re-intentar"; -"sign_up" = "Registrarse"; -"submit" = "Enviar"; -"submit_code" = "Enviar código"; -"set_default_power_level" = "Restablecer Nivel de Permisos"; -"set_moderator" = "Establecer Moderador"; -"set_admin" = "Establecer como Administrador"; -"start_chat" = "Iniciar Conversación"; -"start_voice_call" = "Iniciar Llamada de Voz"; -"start_video_call" = "Iniciar Llamada de Vídeo"; -"mention" = "Mencionar"; -"select_account" = "Seleccionar una cuenta"; -"attach_media" = "Adjuntar Medios desde Biblioteca"; -"capture_media" = "Tomar Foto/Vídeo"; -"invite_user" = "Invitar Usuario de Matrix"; -"reset_to_default" = "Restablecer valores por defecto"; -"resend_message" = "Reenviar el mensaje"; -"select_all" = "Seleccionar Todo"; -"cancel_upload" = "Cancelar Subida"; -"cancel_download" = "Cancelar Descarga"; -"show_details" = "Mostrar Detalles"; -"answer_call" = "Contestar Llamada"; -"reject_call" = "Rechazar Llamada"; -"end_call" = "Finalizar Llamada"; -"ignore" = "Ignorar"; -"unignore" = "Dejar de Ignorar"; -// Events formatter -"notice_avatar_changed_too" = "(el avatar también se cambió)"; -"notice_room_name_removed" = "%@ eliminó el nombre de la sala"; -"notice_room_topic_removed" = "%@ eliminó el tema"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " por %@"; -"notice_event_redacted_reason" = " [motivo: %@]"; -"notice_profile_change_redacted" = "%@ actualizó su perfil %@"; -"notice_room_created" = "%@ ha creado y configurado la sala."; -"notice_room_join_rule" = "La regla para unirse es: %@"; -"notice_room_power_level_intro" = "El nivel de permisos de los miembros de la sala es:"; -"notice_room_power_level_acting_requirement" = "Los niveles de permisos mínimos que un usuario debe tener antes de actuar son:"; -"notice_room_power_level_event_requirement" = "Los niveles de permisos mínimos relacionados con eventos son:"; -"notice_room_aliases" = "Los aliases de la sala son: %@"; -"notice_room_related_groups" = "Los grupos asociados a esta sala son: %@"; -"notice_encrypted_message" = "Mensaje cifrado"; -"notice_encryption_enabled" = "%@ activó el cifrado de extremo a extremo (algoritmo %@)"; -"notice_image_attachment" = "imagen adjunta"; -"notice_audio_attachment" = "audio adjunto"; -"notice_video_attachment" = "vídeo adjunto"; -"notice_location_attachment" = "ubicación adjunta"; -"notice_file_attachment" = "archivo adjunto"; -"notice_invalid_attachment" = "archivo adjunto inválido"; -"notice_unsupported_attachment" = "No se admite el archivo adjunto: %@"; -"notice_feedback" = "Evento de retroalimentación (id: %@): %@"; -"notice_redaction" = "%@ redactó un evento (id: %@)"; -"notice_error_unsupported_event" = "No se admite el evento"; -"notice_error_unexpected_event" = "Evento inesperado"; -"notice_error_unknown_event_type" = "Tipo de evento desconocido"; -"notice_room_history_visible_to_anyone" = "%@ hizo visible el historial futuro de la sala para cualquier persona."; -"notice_room_history_visible_to_members" = "%@ hizo visible el historial futuro de la sala para todos los miembros de la sala."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que son invitados."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que se unieron."; -"notice_crypto_unable_to_decrypt" = "** No es posible descifrar: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "La sesión emisor no nos ha enviado las claves para este mensaje."; -"notice_sticker" = "pegatina"; -"notice_in_reply_to" = "En respuesta a"; -// room display name -"room_displayname_empty_room" = "Sala vacía"; -"room_displayname_two_members" = "%@ y %@"; -"room_displayname_more_than_two_members" = "%@ y otros %u"; -// Settings -"settings" = "Ajustes"; -"settings_enable_inapp_notifications" = "Habilitar notificaciones de la aplicación"; -"settings_enable_push_notifications" = "Habilitar notificaciones push"; -"settings_enter_validation_token_for" = "Ingresar el código de validación para %@:"; -"notification_settings_room_rule_title" = "Sala: '%@'"; -// Devices -"device_details_title" = "Información de sesión\n"; -"device_details_name" = "Nombre público\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Visto por última vez\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "Un nombre público de una sesión es invisible para personas con que Ud. se comunica"; -"device_details_delete_prompt_title" = "Autenticación"; -"device_details_delete_prompt_message" = "Esta operación requiere autenticación adicional.\nPara continuar, ingresa tu contraseña por favor."; -// Encryption information -"room_event_encryption_info_title" = "Información de cifrado de extremo a extremo\n\n"; -"room_event_encryption_info_event" = "Información de evento\n"; -"room_event_encryption_info_event_user_id" = "ID de Usuario\n"; -"room_event_encryption_info_event_identity_key" = "Clave de identidad Curve25519\n"; -"room_event_encryption_info_event_fingerprint_key" = "Clave de huella digital Ed25519 reclamada\n"; -"room_event_encryption_info_event_algorithm" = "Algoritmo\n"; -"room_event_encryption_info_event_session_id" = "ID de Sesión\n"; -"room_event_encryption_info_event_decryption_error" = "Error de descifrado\n"; -"room_event_encryption_info_event_unencrypted" = "sin cifrar"; -"room_event_encryption_info_event_none" = "ninguno"; -"room_event_encryption_info_device" = "\nInformación de la sesión emisora\n"; -"room_event_encryption_info_device_unknown" = "sesión desconocida\n"; -"room_event_encryption_info_device_name" = "Nombre público\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "Verificación\n"; -"room_event_encryption_info_device_fingerprint" = "huella digital Ed25519\n"; -"room_event_encryption_info_device_verified" = "Verificado"; -"room_event_encryption_info_device_not_verified" = "SIN verificar"; -"room_event_encryption_info_device_blocked" = "Prohibido"; -"room_event_encryption_info_verify" = "Verificar..."; -"room_event_encryption_info_unverify" = "Anular Verificación"; -"room_event_encryption_info_block" = "Prohibir"; -"room_event_encryption_info_unblock" = "Dejar de Prohibir"; -"room_event_encryption_verify_title" = "Verificar sesión\n\n"; -"room_event_encryption_verify_message" = "Para verificar que este sesión es confiable, por favor contactar a su propietario por algún otro medio (ej. cara a cara o por teléfono) y pregúntale si la clave que ve en sus Ajustes de Usuario para este dispositivo coincide con la clave a continuación:\n\n\tNombre de sesión: %@\n\tID de sesión: %@\n\tClave de sesión: %@\n\nSi coincide, oprime el botón de verificar a continuación. Si no coincide, entonces alguien está interceptando este sesión y probablemente prefieras oprimir el botón de prohibir.\n\nEn el futuro, este proceso de verificación será más sofisticado."; -"room_event_encryption_verify_ok" = "Verificar"; -// Account -"account_save_changes" = "Guardar cambios"; -"account_link_email" = "Añadir Correo Electrónico"; -"account_linked_emails" = "Correos electrónicos añadidos"; -"account_email_validation_title" = "Verificación Pendiente"; -"account_email_validation_message" = "Por favor, consulta tu correo electrónico y haz clic en el enlace que contiene. Una vez hecho esto, haz clic en continuar."; -"account_email_validation_error" = "No es posible verificar la dirección de correo electrónico. Por favor, consulta tu correo electrónico y haz clic en el enlace que contiene. Una vez hecho esto, haz clic en continuar"; -"account_msisdn_validation_title" = "Verificación Pendiente"; -"account_msisdn_validation_message" = "Hemos enviado un SMS con un código de activación. Por favor, ingresa este código a continuación."; -"account_msisdn_validation_error" = "No es posible verificar el número telefónico."; -"account_error_display_name_change_failed" = "El cambio de nombre público falló"; -"account_error_picture_change_failed" = "El cambio de imagen falló"; -"account_error_matrix_session_is_not_opened" = "La sesión de Matrix no está abierta"; -"account_error_email_wrong_title" = "Dirección de Correo Electrónico Inválida"; -"account_error_email_wrong_description" = "Esto no parece ser una dirección de correo electrónico válida"; -"account_error_msisdn_wrong_title" = "Número Telefónico Inválido"; -"account_error_msisdn_wrong_description" = "Esto no parece ser un número telefónico válido"; -// Room creation -"room_creation_name_title" = "Nombre de sala:"; -"room_creation_name_placeholder" = "(ej. grupoDeAlmuerzo)"; -"room_creation_alias_title" = "Alias de sala:"; -"room_creation_alias_placeholder" = "(ej. #foo:ejemplo.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(ej. #foo%@)"; -"room_creation_participants_title" = "Participantes:"; -// Room -"room_please_select" = "Por favor selecciona una sala"; -"room_error_join_failed_title" = "No se pudo unir a la sala"; -"room_error_join_failed_empty_room" = "Ahora mismo no es posible volver a unirse a una sala vacía."; -"room_error_name_edition_not_authorized" = "No estás autorizado a editar el nombre de esta sala"; -"room_error_topic_edition_not_authorized" = "No estás autorizado a editar el tema de esta sala"; -"room_error_cannot_load_timeline" = "No se pudo cargar la línea de tiempo"; -"room_error_timeline_event_not_found_title" = "No se pudo cargar la posición en la línea de tiempo"; -"room_error_timeline_event_not_found" = "La aplicación estaba intentando cargar un momento específico en la línea de tiempo de esta sala pero pudo encontrarlo"; -"room_left" = "Saliste de la sala"; -"room_no_power_to_create_conference_call" = "Necesitas permiso para invitar a iniciar una conferencia en esta sala"; -"room_no_conference_call_in_encrypted_rooms" = "No se admiten llamadas de conferencia en salas cifradas"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "envió una imagen."; -"message_reply_to_sender_sent_a_video" = "envió un vídeo."; -"message_reply_to_sender_sent_an_audio_file" = "envió un archivo de audio."; -"message_reply_to_sender_sent_a_file" = "envió un archivo."; -"message_reply_to_message_to_reply_to_prefix" = "En respuesta a"; -// Room members -"room_member_ignore_prompt" = "¿Seguro que quieres ocultar todos los mensajes de este usuario?"; -"room_member_power_level_prompt" = "No podrás deshacer este cambio porque estás promoviendo al usuario para tener el mismo nivel de autoridad que tú.\n¿Estás seguro?"; -// Attachment -"attachment_size_prompt" = "Quieres enviar como:"; -"attachment_original" = "Tamaño real: %@"; -"attachment_small" = "Pequeño (~%@)"; -"attachment_medium" = "Mediano (~%@)"; -"attachment_large" = "Grande (~%@)"; -"attachment_cancel_download" = "¿Cancelar la descarga?"; -"attachment_cancel_upload" = "¿Cancelar la subida?"; -"attachment_multiselection_size_prompt" = "Quieres enviar imágenes como:"; -"attachment_multiselection_original" = "Tamaño Real"; -"attachment_e2e_keys_file_prompt" = "Este archivo contiene claves de cifrado exportadas de un cliente de Matrix.\n¿Quieres ver el contenido del archivo o importar las claves que contiene?"; -"attachment_e2e_keys_import" = "Importar..."; -// Contacts -"contact_mx_users" = "Usuarios de Matrix"; -"contact_local_contacts" = "Contactos Locales"; -// Groups -"group_invite_section" = "Invitaciones"; -"group_section" = "Grupos"; -// Search -"search_no_results" = "No Hay Resultados"; -"search_searching" = "Búsqueda en curso..."; -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "h"; -"format_time_d" = "d"; -// E2E import -"e2e_import_room_keys" = "Importar claves de sala"; -"e2e_import_prompt" = "Este proceso permite que importes claves de cifrado que hayas exportado previamente desde otro cliente de Matrix. Luego, podrás descifrar todos los mensajes que el otro cliente podía descifrar.\nEl archivo de exportación está protegido con una frase de contraseña. Debes ingresar la frase de contraseña aquí para descifrar el archivo."; -"e2e_import" = "Importar"; -"e2e_passphrase_enter" = "Ingresar frase de contraseña"; -// E2E export -"e2e_export_room_keys" = "Exportar claves de sala"; -"e2e_export_prompt" = "Este proceso te permite exportar las claves de los mensajes que hayas recibido en salas cifradas a un archivo local. Luego, podrás importar el archivo a otro cliente de Matrix, para que ese cliente también pueda descifrar estos mensajes.\nEl archivo exportado permitirá que cualquier persona que pueda leerlo descifre todos los mensajes cifrados que tú puedas ver, así que debes tener cuidado de mantenerlo seguro."; -"e2e_export" = "Exportar"; -"e2e_passphrase_confirm" = "Confirmar frase de contraseña"; -"e2e_passphrase_empty" = "La frase de contraseña no debe estar vacía"; -"e2e_passphrase_not_match" = "Las frases de contraseña deben coincidir"; -// Others -"user_id_title" = "ID de Usuario:"; -"offline" = "desconectado"; -"unsent" = "No enviado"; -"error" = "Error"; -"error_common_message" = "Ocurrió un error. Por favor inténtalo de nuevo más tarde."; -"not_supported_yet" = "Aún no es posible"; -"default" = "por defecto"; -"private" = "Privado"; -"public" = "Público"; -"power_level" = "Nivel de Autoridad"; -"network_error_not_reachable" = "Por favor comprueba la conectividad de tu red"; -"ssl_homeserver_url" = "URL del Servidor Local: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Las llamadas de vídeo requieren acceso a la Cámara pero %@ no tiene permiso para utilizarla"; -"microphone_access_not_granted_for_call" = "Las llamadas requieren acceso al Micrófono pero %@ no tiene permiso para utilizarlo"; -"local_contacts_access_not_granted" = "El descubrimiento de usuarios desde los contactos locales requiere acceso a tus contactos pero %@ no tiene permiso para utilizarlo"; -"local_contacts_access_discovery_warning_title" = "Descubrimiento de usuarios"; -"local_contacts_access_discovery_warning" = "Para descubrir contactos que ya usan Matrix, %@ puede enviar correos electrónicos y números telefónicos desde tus Contactos hacia el Servidor de Identidades de Matrix. Cuando es posible, los datos personales se procesan antes de enviarlos. Por favor, compruebe la política de privacidad de su servidor de identidad para más detalles."; -// Country picker -"country_picker_title" = "Elige un país"; -// Language picker -"language_picker_title" = "Elige un idioma"; -"language_picker_default_language" = "Por Defecto (%@)"; -"notice_room_invite" = "%@ invitó a %@"; -"notice_room_third_party_invite" = "%@ invitó a %@ a unirse a la sala"; -"notice_room_third_party_registered_invite" = "%@ aceptó la invitación para %@"; -"notice_room_join" = "%@ se unió"; -"notice_room_leave" = "%@ salió"; -"notice_room_reject" = "%@ rechazó la invitación"; -"notice_room_kick" = "%@ expulsó a %@"; -"notice_room_unban" = "%@ le quitó el veto a %@"; -"notice_room_ban" = "%@ vetó a %@"; -"notice_room_withdraw" = "%@ retiró la invitación de %@"; -"notice_room_reason" = ". Motivo: %@"; -"notice_avatar_url_changed" = "%@ cambió su avatar"; -"notice_display_name_set" = "%@ estableció %@ como su nombre público"; -"notice_display_name_changed_from" = "%@ cambió su nombre público de %@ a %@"; -"notice_display_name_removed" = "%@ eliminó su nombre público"; -"notice_topic_changed" = "%@ cambió el tema a: %@"; -"notice_room_name_changed" = "%@ cambió el nombre de la sala a: %@"; -"notice_placed_voice_call" = "%@ realizó una llamada de voz"; -"notice_answered_video_call" = "%@ contestó la llamada"; -"notice_ended_video_call" = "%@ finalizó la llamada"; -"notice_conference_call_request" = "%@ solicitó una conferencia de vozIP"; -"notice_conference_call_started" = "conferencia de vozIP iniciada"; -"notice_conference_call_finished" = "conferencia de vozIP finalizada"; -// button names -"ok" = "Correcto"; -"cancel" = "Cancelar"; -"save" = "Guardar"; -"leave" = "Salir"; -"send" = "Enviar"; -"copy_button_name" = "Copiar"; -"resend" = "Reenviar"; -"redact" = "Eliminar"; -"share" = "Compartir"; -"set_power_level" = "Establecer nivel de permisos"; -"delete" = "Eliminar"; -"view" = "Ver"; -// actions -"action_logout" = "Cerrar Sesión"; -"create_room" = "Crear Sala"; -"login" = "Iniciar Sesión"; -"create_account" = "Crear Cuenta"; -"membership_invite" = "Invitado"; -"membership_leave" = "Salió"; -"membership_ban" = "Vetado"; -"num_members_one" = "%@ usuario"; -"num_members_other" = "%@ usuarios"; -"invite" = "Invitar"; -"kick" = "Echar"; -"ban" = "Vetar"; -"unban" = "Quitar Veto"; -"message_unsaved_changes" = "Hay cambios sin guardar. Salir los descartará."; -// Login Screen -"login_error_already_logged_in" = "Ya ha iniciado sesión"; -"login_error_must_start_http" = "La URL debe comenzar con http[s]://"; -// room details dialog screen -"room_details_title" = "Detalles de Sala"; -// contacts list screen -"invitation_message" = "Me gustaría chatear contigo vía Matrix. Por favor, visita la página http://matrix.org para obtener más información."; -// Settings screen -"settings_title_config" = "Ajustes"; -"settings_title_notifications" = "Notificaciones"; -// Notification settings screen -"notification_settings_disable_all" = "Deshabilitar todas las notificaciones"; -"notification_settings_enable_notifications" = "Habilitar notificaciones"; -"notification_settings_enable_notifications_warning" = "Actualmente, todas las notificaciones están deshabilitadas para todos los dispositivos."; -"notification_settings_global_info" = "Los ajustes de notificaciones se guardan en tu cuenta de usuario y se comparten entre todos los clientes que las admiten (incluyendo las notificaciones de escritorio).\n\nLas reglas se aplican en órden; la primer regla que coincide define el resultado del mensaje.\nEntonces: las notificaciones por palabra son más importantes que las notificaciones por sala, que son más importantes que las notificaciones por emisor.\nPara múltiples reglas del mismo tipo, la primera en la lista que coincide tiene prioridad."; -"notification_settings_per_word_notifications" = "Notificaciones por palabra"; -"notification_settings_per_word_info" = "Las palabras coinciden con mayúsculas y minúsculas, y pueden incluir un * comodín. Entonces:\nfoo coincide con la cadena de caracteres foo rodeada de delimitadores de palabras (ej. puntuación y espacios en blanco o inicios/finales de línea).\nfoo* coincide con cualquier palabra que comience con foo.\n*foo* coincide con cualquier palabra que incluya las 3 letras foo."; -"notification_settings_always_notify" = "Siempre notificar"; -"notification_settings_never_notify" = "Nunca notificar"; -"notification_settings_word_to_match" = "palabra que coincida"; -"notification_settings_highlight" = "Destacar"; -"notification_settings_custom_sound" = "Sonido personalizado"; -"notification_settings_per_room_notifications" = "Notificaciones por sala"; -"notification_settings_per_sender_notifications" = "Notificaciones por emisor"; -"notification_settings_sender_hint" = "@usuario:dominio.com"; -"notification_settings_select_room" = "Selecciona una sala"; -"notification_settings_other_alerts" = "Otras Alertas"; -"notification_settings_contain_my_user_name" = "Notificarme con sonido por mensajes que contienen mi nombre de usuario"; -"notification_settings_contain_my_display_name" = "Notificarme con sonido por mensajes que contienen mi nombre público"; -"notification_settings_just_sent_to_me" = "Notificarme con sonido por mensajes enviados solo a mí"; -"notification_settings_invite_to_a_new_room" = "Notificarme cuando soy invitado a una nueva sala"; -"notification_settings_people_join_leave_rooms" = "Notificarme cuando las personas se unen o salen de las salas"; -"notification_settings_receive_a_call" = "Notificarme cuando reciba una llamada"; -"notification_settings_suppress_from_bots" = "Suprimir notificaciones de bots"; -"notification_settings_by_default" = "Por defecto..."; -"notification_settings_notify_all_other" = "Notificar por todos los demás mensajes/salas"; -// gcm section -"settings_config_home_server" = "Servidor local: %@"; -"settings_config_identity_server" = "Servidor de identidad: %@"; -"settings_config_user_id" = "ID de Usuario: %@"; -// call string -"call_waiting" = "Esperando..."; -"call_connecting" = "Conectando llamada..."; -"call_ended" = "Llamada finalizada"; -"call_ring" = "Llamando..."; -"incoming_video_call" = "Llamada de Vídeo Entrante"; -"incoming_voice_call" = "Llamada de Voz Entrante"; -"call_invite_expired" = "Expiró la Invitación a Llamada"; -// unrecognized SSL certificate -"ssl_trust" = "Confiar"; -"ssl_logout_account" = "Cerrar Sesión"; -"ssl_remain_offline" = "Ignorar"; -"ssl_fingerprint_hash" = "Huella Digital (%@):"; -"ssl_could_not_verify" = "No se pudo verificar la identidad del servidor remoto."; -"ssl_cert_not_trust" = "Esto podría significar que alguien está interceptando tu tráfico maliciosamente, o que tu teléfono no confía en el certificado proporcionado por el servidor remoto."; -"ssl_cert_new_account_expl" = "Si el administrador del servidor dijo que esto es de esperarse, asegúrate que la huella digital que se muestra a continuación coincide con la huella digital proporcionada por el administrador."; -"ssl_unexpected_existing_expl" = "El certificado cambió de uno que era confiable para tu teléfono. Esto es MUY INUSUAL. Se recomienda NO ACEPTAR este nuevo certificado."; -"ssl_expected_existing_expl" = "El certificado cambió de uno que era confiable a uno que no es confiable. El servidor puede haber renovado su certificado. Contacta al administrador del servidor para obtener la huella digital."; -"ssl_only_accept" = "SOLO acepta el certificado si el administrador del servidor ha publicado una huella digital que coincide con la indicada arriba."; -"notice_placed_video_call" = "%@ realizó una llamada de vídeo"; -"e2e_passphrase_create" = "Crear contraseña"; -"notice_encryption_enabled_ok" = "%@ activó encriptación de extremo a extremo"; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ activó encriptación de extremo a extremo (algoritmo %2$@ desconocido)."; -"device_details_rename_prompt_title" = "Nombre de Sesión"; -"account_error_push_not_allowed" = "No se permite notificaciones"; -"notice_room_third_party_revoked_invite" = "%@ revocó la invitación para %@ de unirse a la sala"; -"attachment_size_prompt_message" = "Puedes desactivar esto en ajustes."; -"attachment_size_prompt_title" = "Confirma el tamaño para enviar"; -"message_reply_to_sender_sent_a_voice_message" = "ha enviado un mensaje de voz."; -"room_left_for_dm" = "Te has salido"; -"room_displayname_all_other_members_left" = "%@ (ha salido)"; -"notice_room_join_rule_public_by_you_for_dm" = "Has hecho esta conversación pública."; -"notice_room_join_rule_public_by_you" = "Has hecho la sala pública."; -"notice_room_join_rule_public_for_dm" = "%@ ha hecho esta conversación pública."; -"notice_room_join_rule_public" = "%@ ha hecho pública la sala."; -"notice_room_join_rule_invite_by_you" = "Has hecho que solo se pueda unir a la sala por invitación."; -"notice_room_name_removed_for_dm" = "%@ ha quitado el nombre"; -"notice_room_created_for_dm" = "%@ se ha unido."; -"notice_room_join_rule_invite_for_dm" = "%@ ha hecho que solo sea posible unirse por invitación."; -// New -"notice_room_join_rule_invite" = "%@ ha hecho que la sala solo sea accesible por invitación."; -"resume_call" = "Volver a la llamada"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/et.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/et.lproj/MatrixKit.strings deleted file mode 100644 index 458efee70..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/et.lproj/MatrixKit.strings +++ /dev/null @@ -1,481 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Loo kasutajakonto:"; -"login_server_url_placeholder" = "URL (näiteks https://matrix.org)"; -"login_home_server_title" = "Koduserveri aadress:"; -"login_home_server_info" = "Sinu koduserver salvestab kõik vestlused ning kogu sinu kontoteabe"; -"login_identity_server_title" = "Isikutuvastusserveri aadress:"; -"login_password_placeholder" = "Salasõna"; -"login_optional_field" = "kui soovid"; -"login_display_name_placeholder" = "Kuvatav nimi (näiteks Kadri Maasikas)"; -"login_email_placeholder" = "E-posti aadress"; -"back" = "Tagasi"; -"close" = "Sulge"; -"continue" = "Jätka"; -"retry" = "Proovi uuesti"; -// Settings -"settings" = "Seadistused"; -"settings_enable_inapp_notifications" = "Võta kasutusele rakenduse-sisesed teavitused"; -"settings_enable_push_notifications" = "Võta kasutusele tõuketeavitused"; -"notification_settings_room_rule_title" = "Jututuba: '%@'"; -// Devices -"device_details_title" = "Sessiooniteave\n"; -"device_details_name" = "Avalik nimi\n"; -"device_details_identifier" = "Tunnus\n"; -"device_details_last_seen" = "Viimati nähtud\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_title" = "Sessiooni nimi"; -"device_details_rename_prompt_message" = "Sessiooni avalik nimi on nähtav neile, kellega sa suhtled"; -"device_details_delete_prompt_title" = "Autentimine"; -"account_error_email_wrong_title" = "Vigane e-posti aadress"; -"account_error_email_wrong_description" = "See ei tundu olema e-posti aadressi moodi"; -"account_error_msisdn_wrong_title" = "Vigane telefoninumber"; -"account_error_msisdn_wrong_description" = "See ei tundu olema telefoninumbri moodi"; -"account_error_push_not_allowed" = "Teavitused ei ole lubatud"; -// Room creation -"room_creation_name_title" = "Jututoa nimi:"; -"room_member_power_level_prompt" = "Sa ei saa seda muudatust hiljem tagasi pöörata, sest annad teisele kasutajale samad õigused, mis sinul on.\nKas sa oled ikka kindel?"; -// Attachment -"attachment_size_prompt" = "Kas sa soovid faili saata:"; -"attachment_original" = "Tegelikus suuruses (%@)"; -"attachment_small" = "Väiksena (%@)"; -"attachment_medium" = "Keskmisena (%@)"; -"attachment_large" = "Suurena (%@)"; -"attachment_cancel_download" = "Kas katkestame allalaadimise?"; -"attachment_cancel_upload" = "Kas katkestame üleslaadimise?"; -"attachment_multiselection_size_prompt" = "Kas sa soovid pilte saata:"; -"attachment_multiselection_original" = "Tegelikus suuruses"; -"attachment_e2e_keys_file_prompt" = "Selles failis leiduvad ühest Matrix'i kliendist eksporditud krüptovõtmed.\nKas sa soovid vaadata faili sisu või importida seal leiduvad võtmeid?"; -"attachment_e2e_keys_import" = "Impordi..."; -// Contacts -"contact_mx_users" = "Matrix'i kasutajad"; -"contact_local_contacts" = "Kohalikud kasutajad"; -// Groups -"group_invite_section" = "Kutsed"; -"group_section" = "Grupid"; -// Search -"search_no_results" = "Tulemusi ei ole"; -"search_searching" = "Otsing on pooleli..."; -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "t"; -"format_time_d" = "p"; -// E2E import -"e2e_import_room_keys" = "Impordi jututoa krüptovõtmed"; -"error_common_message" = "Ilmnes viga. Palun proovi hiljem uuesti."; -"not_supported_yet" = "Pole veel toetatud"; -"default" = "vaikimisi"; -"public" = "Avalik"; -"cancel" = "Loobu"; -"save" = "Salvesta"; -"leave" = "Lahku"; -"resend" = "Saada uuesti"; -"redact" = "Eemalda"; -"share" = "Jaga"; -"delete" = "Kustuta"; -"view" = "Näita"; -// actions -"action_logout" = "Logi välja"; -"create_room" = "Loo jututuba"; -"login" = "Logi sisse"; -"create_account" = "Loo konto"; -"membership_invite" = "Kutsutud"; -"num_members_one" = "%@ kasutaja"; -"num_members_other" = "%@ kasutajat"; -"invite" = "Kutsu"; -"kick" = "Müksa välja"; -"unban" = "Eemalda suhtluskeeld"; -"login_error_must_start_http" = "Serveri aadressi alguses peab olema http[s]://"; -// room details dialog screen -"room_details_title" = "Jututoa üksikasjad"; -"settings_title_notifications" = "Teavitused"; -// Notification settings screen -"notification_settings_disable_all" = "Lülita kõik teavitused välja"; -"notification_settings_enable_notifications" = "Võta teavitused kasutusele"; -"notification_settings_enable_notifications_warning" = "Kõik teavituste liigid on hetkel kõikidel seadmetel välja lülitatud."; -"login_identity_server_info" = "Matrix'i spetsifikatsioon näeb ette isikutuvastusserverite kasutamist selleks, et tuvastada mis e-posti aadress kuulub mis Matrix'i kasutajale. Hetkel pakub sellist teenust vaid https://matrix.org ."; -"login_user_id_placeholder" = "Matrixi kasutajatunnus (näiteks @kadri:toredomeen.ee või kadri)"; -"login_error_title" = "Sisselogimine ei õnnestunud"; -"login_error_no_login_flow" = "Autentimisteabe laadimine sellest koduserverist ei õnnestunud"; -"login_error_do_not_support_login_flows" = "Hetkel me ei toeta ühtegi sisselogimisloogikat, mida see koduserver kasutab"; -"login_error_registration_is_not_supported" = "Registreerimine ei ole hetkel toetatud"; -"login_error_forbidden" = "Vigane kasutajanimi või salasõna"; -"login_error_bad_json" = "Vigane JSON"; -"login_error_not_json" = "Ei sisaldanud korrektset JSON'it"; -"login_error_limit_exceeded" = "Liiga palju samaaegseid sisselogimispäringuid"; -"login_error_user_in_use" = "See kasutajanimi on juba kasutusel"; -"login_use_fallback" = "Kasuta tagavaralehte"; -"login_leave_fallback" = "Loobu"; -"login_invalid_param" = "Vigane parameeter"; -"register_error_title" = "Registreerimine ei õnnestunud"; -"login_error_forgot_password_is_not_supported" = "Unustatud salasõna funktsionaalsus ei ole hetkel toetatud"; -"login_mobile_device" = "Mobiiltelefon"; -"login_tablet_device" = "Tahvelarvuti"; -"login_desktop_device" = "Töölaud"; -"login_error_resource_limit_exceeded_title" = "Ressursipiir on ületatud"; -"login_error_resource_limit_exceeded_message_default" = "See koduserver ületanud ühe oma ressursipiirangutest."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "See koduserver on saavutanud igakuise aktiivsete kasutajate piiri."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nJätkamaks selle teenuse kasutamist palun võta ühendust oma teenuse haldajaga."; -"login_error_resource_limit_exceeded_contact_button" = "Võta ühendust teenuse haldajaga"; -// Action -"no" = "Ei"; -"yes" = "Jah"; -"abort" = "Katkesta"; -"discard" = "Loobu"; -"dismiss" = "Loobu"; -"sign_up" = "Registreeru"; -"submit" = "Saada"; -"submit_code" = "Saada kood"; -"set_power_level" = "Määra õigused"; -"set_default_power_level" = "Lähtesta õigused"; -"set_moderator" = "Määra moderaatoriks"; -"set_admin" = "Määra peakasutajaks"; -"start_chat" = "Alusta vestlust"; -"start_voice_call" = "Algata häälkõne"; -"start_video_call" = "Algata videokõne"; -"mention" = "Maini"; -"select_account" = "Vali kasutajakonto"; -"attach_media" = "Manusta meediafail galeriist"; -"capture_media" = "Tee foto või video"; -"invite_user" = "Saada kutse Matrix'i kasutajale"; -"reset_to_default" = "Lähtesta vaikeseadeteks"; -"resend_message" = "Saada sõnum uuesti"; -"select_all" = "Vali kõik"; -"cancel_upload" = "Katkesta üleslaadimine"; -"cancel_download" = "Katkesta allalaadimine"; -"show_details" = "Näita üksikasju"; -"answer_call" = "Vasta kõnele"; -"reject_call" = "Ära võta kõnet vastu"; -"end_call" = "Lõpeta kõne"; -"ignore" = "Eira"; -"unignore" = "Lõpeta eiramine"; -// Events formatter -"notice_avatar_changed_too" = "(samuti sai avatar muudetud)"; -"notice_room_name_removed" = "%@ eemaldas jututoa nime"; -"notice_room_topic_removed" = "%@ eemaldas jututoa teema"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " %@ poolt"; -"notice_event_redacted_reason" = " [põhjus: %@]"; -"notice_profile_change_redacted" = "%@ uuendas oma profiili %@"; -"notice_room_created" = "Kasutaja %@ lõi ja seadistas jututoa."; -"notice_room_join_rule" = "Liitumise tingimused on: %@"; -"notice_room_power_level_intro" = "Jututoa liikmete õigused on:"; -"notice_room_power_level_acting_requirement" = "Minimaalselt vajalikud õigused enne neid tegevusi on:"; -"notice_room_power_level_event_requirement" = "Sündmustega seotud minimaalselt vajalikud õigused on:"; -"notice_room_aliases" = "Jututoa aliased on: %@"; -"notice_room_related_groups" = "Selle jututoaga seotud grupid on: %@"; -"notice_encrypted_message" = "Krüptitud sõnum"; -"notice_encryption_enabled_ok" = "%@ lülitas sisse läbiva krüptimise."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ lülitas sisse läbiva krüptimise (tundmatu algoritm %2$@)."; -"notice_image_attachment" = "manustatud pilt"; -"notice_audio_attachment" = "manustatud helifail"; -"notice_video_attachment" = "manustatud videofail"; -"notice_location_attachment" = "manustatud asukohafail"; -"notice_file_attachment" = "manustatud fail"; -"notice_invalid_attachment" = "vigane manus"; -"notice_unsupported_attachment" = "Manus ei ole toetatud: %@"; -"notice_feedback" = "Tagasiside (id: %@): %@"; -"notice_redaction" = "%@ muutis sündmust (id: %@)"; -"notice_error_unsupported_event" = "Sündmuse tüüp ei ole toetatud"; -"notice_error_unexpected_event" = "Ootamatu sündmus"; -"notice_error_unknown_event_type" = "Tundmatu sündmuse tüüp"; -"notice_room_history_visible_to_anyone" = "%@muutis jututoa tulevase ajaloo loetavaks kõigile."; -"notice_room_history_visible_to_members" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele nende kutsumise hetkest."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele nende liitumise hetkest."; -"notice_crypto_unable_to_decrypt" = "** Ei õnnestu dekrüptida: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "Sõnumi saatja sessioon ei ole selle sõnumi jaoks saatnud dekrüptimisvõtmeid."; -"notice_sticker" = "kleeps"; -"notice_in_reply_to" = "Vastuseks kasutajale"; -// room display name -"room_displayname_empty_room" = "Tühi jututuba"; -"room_displayname_two_members" = "%@ ja %@"; -"room_displayname_more_than_two_members" = "%@ ja %@ muud"; -"device_details_delete_prompt_message" = "See tegevus vajab täiendavat autentimist.\nJätkamaks palun sisesta oma salasõna."; -// Encryption information -"room_event_encryption_info_title" = "Läbiva krüptimise teave\n\n"; -"room_event_encryption_info_event" = "Sündmuse teave\n"; -"room_event_encryption_info_event_user_id" = "Kasutajatunnus\n"; -"room_event_encryption_info_event_fingerprint_key" = "Väidetav Ed25519 allkirja sõrmejälje võti\n"; -"room_event_encryption_info_event_algorithm" = "Algoritm\n"; -"room_event_encryption_info_event_session_id" = "Sessiooni tunnus\n"; -"room_event_encryption_info_event_decryption_error" = "Dekrüptimise viga\n"; -"room_event_encryption_info_event_unencrypted" = "krüptimata"; -"room_event_encryption_info_event_none" = "ei midagi"; -"room_event_encryption_info_device" = "\nSaatja sessiooni teave\n"; -"room_event_encryption_info_device_unknown" = "tundmatu sessioon\n"; -"room_event_encryption_info_device_name" = "Avalik nimi\n"; -"room_event_encryption_info_device_id" = "Tunnus\n"; -"room_event_encryption_info_device_verification" = "Verifikatsioon\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519 sõrmejälg\n"; -"room_event_encryption_info_device_verified" = "Verifitseeritud"; -"room_event_encryption_info_device_not_verified" = "EI OLE verifitseeritud"; -"room_event_encryption_info_unverify" = "Eemalda verifitseerimine"; -"room_event_encryption_verify_title" = "Verifitseeri sessioon\n\n"; -"room_event_encryption_verify_ok" = "Verifitseeri"; -// Account -"account_save_changes" = "Salvesta muutused"; -"account_error_picture_change_failed" = "Pildi muutmine ei õnnestunud"; -"account_error_matrix_session_is_not_opened" = "Matrix'i sessioon pole avatud"; -"room_creation_name_placeholder" = "(näiteks HeadLõunasöögikohad)"; -"room_creation_alias_title" = "Jututoa alias:"; -"room_creation_alias_placeholder" = "(e.g. #midagi:domeen.ee)"; -"room_creation_alias_placeholder_with_homeserver" = "(näiteks #midagi%@)"; -"room_creation_participants_title" = "Osalejad:"; -"room_creation_participants_placeholder" = "(näiteks @kadri:koduserver1; @peeter:koduserver2...)"; -// Room -"room_please_select" = "Palun vali jututuba"; -"room_error_join_failed_title" = "Jututoaga liitumine ei õnnestunud"; -"room_error_join_failed_empty_room" = "Hetkel ei ole võimalik liituda tühja jututoaga."; -"room_error_timeline_event_not_found_title" = "Asukoha laadimine ajajoonel ei õnnestunud"; -"room_error_timeline_event_not_found" = "Rakendus üritas laadida teatud hetke selle jututoa ajajoonelt, kuid ei suutnud seda leida"; -"room_left" = "Sa lahkusid jututoast"; -"room_no_power_to_create_conference_call" = "Konverentsikõne alustamiseks selles jututoas on sul vaja õigusi"; -"room_no_conference_call_in_encrypted_rooms" = "Konverentsikõned ei ole krüptitud jututubades toetatud"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "saatis pildi."; -"message_reply_to_sender_sent_a_video" = "saatis video."; -"message_reply_to_sender_sent_an_audio_file" = "saatis helifaili."; -"message_reply_to_sender_sent_a_file" = "saatis faili."; -"message_reply_to_message_to_reply_to_prefix" = "Vastuseks kasutajale"; -// Room members -"room_member_ignore_prompt" = "Kas sa oled kindel, et soovid peita kõik sõnumid selle kasutaja eest?"; -"e2e_import" = "Impordi"; -"e2e_passphrase_enter" = "Sisesta paroolifraas"; -// E2E export -"e2e_export_room_keys" = "Ekspordi jututoa võtmed"; -"e2e_export_prompt" = "Selle toiminguga on sul võimalik saabunud krüptitud sõnumite võtmed eksportida sinu kontrollitavasse kohalikku faili. Seetõttu on sul tulevikus võimalik importida need võtmed mõnda teise Matrix'i klienti ning seeläbi muuta saabunud krüptitud sõnumid ka seal loetavaks.\nKes iganes saab kätte selle võtmefaili, saab ka dekrüptida kõiki sinu krüptitud sõnumeid, seega palun hoia teda turvaliselt."; -"e2e_export" = "Ekspordi"; -"e2e_passphrase_confirm" = "Sisesta paroolifraas veel üks kord"; -"e2e_passphrase_empty" = "Paroolifraas ei tohi olla tühi"; -"e2e_passphrase_not_match" = "Paroolifraasid ei klapi omavahel"; -"e2e_passphrase_create" = "Loo paroolifraas"; -// Others -"user_id_title" = "Kasutajatunnus:"; -"offline" = "võrgust väljas"; -"unsent" = "Saatmata"; -"error" = "Viga"; -"private" = "Privaatne"; -"power_level" = "Õiguste tase"; -"network_error_not_reachable" = "Palun kontrolli oma võrguühendust"; -"user_id_placeholder" = "näiteks @kati:mingidomeen.com"; -"ssl_homeserver_url" = "Koduserveri aadress: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Videokõned vajavad ligipääsu kaamerale, kuid %@'l pole selleks õigusi"; -"microphone_access_not_granted_for_call" = "Kõned vajavad ligipääsu mikrofonile, kuid %@'l pole selleks õigusi"; -"local_contacts_access_discovery_warning_title" = "Kasutajate leidmine"; -// Country picker -"country_picker_title" = "Vali riik"; -// Language picker -"language_picker_title" = "Vali keel"; -"language_picker_default_language" = "Vaikimisi (%@)"; -"notice_room_invite" = "%@ saatis kutse kasutajale %@"; -"notice_room_third_party_invite" = "%@ saatis kasutajale %@ kutse jututoaga liitumiseks"; -"notice_room_third_party_registered_invite" = "%@ võttis vastu kutse %@ nimel"; -"notice_room_third_party_revoked_invite" = "%@ võttis tagasi jututoaga liitumise kutse kasutajalt %@"; -"notice_room_join" = "%@ liitus"; -"notice_room_leave" = "%@ lahkus"; -"notice_room_reject" = "%@ lükkas tagasi kutse"; -"notice_room_kick" = "%@ müksas kasutajat %@"; -"notice_room_unban" = "%@ taastas %@ ligipääsu"; -"notice_room_ban" = "%@ keelas %@ ligipääsu"; -"notice_room_withdraw" = "%@ võttis tagasi kutse kasutajale %@"; -"notice_room_reason" = ". Põhjus: %@"; -"notice_avatar_url_changed" = "%@ muutis oma tunnuspilti"; -"notice_display_name_set" = "%@ määras oma kuvatavaks nimeks %@"; -"notice_display_name_changed_from" = "%@ muutis senise kuvatava nime %@ uueks nimeks %@"; -"notice_display_name_removed" = "%@ eemaldas oma kuvatava nime"; -"notice_topic_changed" = "%@ muutis uueks teemaks „%@“."; -"notice_room_name_changed" = "%@ muutis jututoa uueks nimeks %@."; -"notice_placed_voice_call" = "%@ alustas häälkõnet"; -"notice_placed_video_call" = "%@ alustas videokõnet"; -"notice_answered_video_call" = "%@ vastas kõnele"; -"notice_ended_video_call" = "%@ lõpetas kõne"; -"notice_conference_call_request" = "%@ saatis VoIP rühmakõne kutse"; -"notice_conference_call_started" = "VoIP rühmakõne algas"; -"notice_conference_call_finished" = "VoIP rühmakõne lõppes"; -// Notice Events with "You" -"notice_room_invite_by_you" = "Sina kutsusid kasutajat %@"; -"notice_room_invite_you" = "%@ kutsus sind"; -"notice_room_third_party_invite_by_you" = "Sina saatsid kasutajale %@ kutse jututoaga liitumiseks"; -"notice_room_third_party_registered_invite_by_you" = "Sina võtsid vastu kutse %@ nimel"; -"notice_room_third_party_revoked_invite_by_you" = "Sina võtsid tagasi jututoaga liitumise kutse kasutajalt %@"; -"notice_room_join_by_you" = "Sina liitusid"; -"notice_room_leave_by_you" = "Sina lahkusid"; -"notice_room_reject_by_you" = "Sa lükkasid kutse tagasi"; -"notice_room_kick_by_you" = "Sina müksasid %@ välja"; -"notice_room_unban_by_you" = "Sina taastasid %@ ligipääsu"; -"notice_room_ban_by_you" = "Sina keelasid %@ ligipääsu"; -"notice_room_withdraw_by_you" = "Sina võtsid tagasi %@ kutse"; -"notice_avatar_url_changed_by_you" = "Sa muutsid oma tunnuspilti"; -"notice_display_name_set_by_you" = "Sina määrasid oma kuvatavaks nimeks %@"; -"notice_display_name_changed_from_by_you" = "Sina muutsid senise kuvatava nime %@ uueks nimeks %@"; -"notice_display_name_removed_by_you" = "Sa eemaldasid oma kuvatava nime"; -"notice_topic_changed_by_you" = "Sa muutsid uueks teemaks „%@“."; -"notice_room_name_changed_by_you" = "Sa muutsid jututoa uueks nimeks %@."; -"notice_placed_voice_call_by_you" = "Sa alustasid häälkõnet"; -"notice_placed_video_call_by_you" = "Sa alustasid videokõnet"; -"notice_answered_video_call_by_you" = "Sa vastasid kõnele"; -"notice_ended_video_call_by_you" = "Sa lõpetasid kõne"; -"notice_conference_call_request_by_you" = "Sa algatasid VoIP rühmakõne"; -"notice_room_name_removed_by_you" = "Sa eemaldasid jututoa nime"; -"notice_room_topic_removed_by_you" = "Sa eemaldasid teema"; -"notice_event_redacted_by_you" = " sinu poolt"; -"notice_profile_change_redacted_by_you" = "Sa uuendasid oma profiili %@"; -"notice_room_created_by_you" = "Sa lõid ja seadistasid jututoa."; -"notice_encryption_enabled_ok_by_you" = "Sa lülitasid sisse läbiva krüptimise."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Sa lülitasid sisse läbiva krüptimise (kasutusel on tundmatu algoritm %@)."; -"notice_redaction_by_you" = "Sa muutsid sündmust: (id: %@)"; -"notice_room_history_visible_to_anyone_by_you" = "Sa muutsid jututoa tulevase ajaloo loetavaks kõigile."; -"notice_room_history_visible_to_members_by_you" = "Sina tegid jututoa tulevase ajaloo loetavaks kõikidele jututoa liikmetele."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Sina muutsid jututoa tulevase ajaloo loetavaks kõikidele jututoa liikmetele sellest hetkest, kui nad on kutse saanud."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Sina muutsid jututoa tulevase ajaloo loetavaks kõikidele jututoa liikmetele sellest hetkest, kui nad liitusid jututoaga."; -// button names -"ok" = "Sobib"; -"send" = "Saada"; -"copy_button_name" = "Kopeeri"; -"membership_leave" = "Lahkus"; -"ban" = "Keela ligipääs"; -"message_unsaved_changes" = "Osa muudatusi on salvestamata. Lahkudes need kaovad."; -// Login Screen -"login_error_already_logged_in" = "Sa oled juba sisse loginud"; -// contacts list screen -"invitation_message" = "Ma soovin sinuga vestelda Matrix'i võrgu vahendusel. Lisateavet leiad veebisaidist https://matrix.org/ ."; -// Settings screen -"settings_title_config" = "Seadistused"; -"notification_settings_always_notify" = "Teavita alati"; -"notification_settings_never_notify" = "Ära teavita iialgi"; -"notification_settings_word_to_match" = "vastendatav sõna"; -"notification_settings_highlight" = "Tõsta esile"; -"notification_settings_custom_sound" = "Kohandatud heli"; -"notification_settings_per_room_notifications" = "Jututoa-kohased teavitused"; -"notification_settings_per_sender_notifications" = "Saatjakohased teavitused"; -"notification_settings_sender_hint" = "@kasutaja:domeen.ee"; -"notification_settings_select_room" = "Vali jututuba"; -"notification_settings_other_alerts" = "Muud hoiatused"; -"notification_settings_contain_my_user_name" = "Teavita mind helimärguandega sõnumitest, mis sisaldavad minu kasutajanime"; -"notification_settings_contain_my_display_name" = "Teavita mind helimärguandega sõnumitest, mis sisaldavad minu kuvatavat nime"; -"notification_settings_just_sent_to_me" = "Teavita mind helimärguandega sõnumitest, mis on saadetud vaid mulle"; -"notification_settings_invite_to_a_new_room" = "Teavita mind, kui ma olen saanud kutse uude jututuppa"; -"notification_settings_people_join_leave_rooms" = "Teavita mind, kui teised kasutajad liituvad jututoaga või lahkuvad sealt"; -"notification_settings_receive_a_call" = "Teavita mind, kui mulle tuleb kõne"; -"notification_settings_suppress_from_bots" = "Ära luba teavitusi robototelt"; -"notification_settings_by_default" = "Vaikimisi..."; -"notification_settings_notify_all_other" = "Teavita mind kõikide muude sõnumite ja jututubade puhul"; -// gcm section -"settings_config_home_server" = "Koduserver: %@"; -"settings_config_identity_server" = "Isikutuvastusserver: %@"; -"settings_config_user_id" = "Kasutajatunnus: %@"; -// call string -"call_waiting" = "Ootan..."; -"call_connecting" = "Kõne on ühendamisel…"; -"call_ended" = "Kõne lõppes"; -"call_ring" = "Helistan..."; -"incoming_video_call" = "Saabuv videokõne"; -"incoming_voice_call" = "Saabuv häälkõne"; -"call_invite_expired" = "Kõnekutse aegus"; -// unrecognized SSL certificate -"ssl_trust" = "Usalda"; -"ssl_logout_account" = "Logi välja"; -"ssl_remain_offline" = "Eira"; -"ssl_fingerprint_hash" = "Sõrmejälg (%@):"; -"login_email_info" = "Lisades oma e-posti aadressi saad võimaldada teistel Matrix'i kasutajatel sind lihtsamini leida ning annad endale lisavõimaluse salasõna muutmiseks, kui seda tulevikus vaja peaks olema."; -"login_prompt_email_token" = "Palun sisesta oma e-posti aadressi registeerimiskirjas näidatud tunnusluba:"; -"login_error_unknown_token" = "Sisestatud tunnusluba ei ole õige"; -"login_error_login_email_not_yet" = "E-posti teel saadetud linki pole veel klõpsitud"; -"settings_enter_validation_token_for" = "Sisesta %@ tuvastamise tunnusluba:"; -"room_event_encryption_info_verify" = "Verifitseeri..."; -"account_link_email" = "Seotud e-posti aadress"; -"account_linked_emails" = "Seotud e-posti aadressid"; -"account_email_validation_title" = "Verifikatsioon on ootel"; -"account_email_validation_message" = "Palun vaata oma e-kirju ning klõpsi meie saadetud kirjas leiduvat linki. Kui see on tehtud, siis vajuta Jätka-nuppu."; -"account_email_validation_error" = "E-posti aadressi õigsust pole veel õnnestunud kontrollida. Palun vaata oma e-kirju ning klõpsi meie saadetud kirjas leiduvat linki. Kui see on tehtud, siis vajuta Jätka-nuppu"; -"account_msisdn_validation_title" = "Verifikatsioon on ootel"; -"account_msisdn_validation_message" = "Me oleme SMS'iga saatnud aktiveerimiskoodi. Palun sisesta see kood siia."; -"account_msisdn_validation_error" = "Telefoninumbri verifitseerimine ei õnnestunud."; -"account_error_display_name_change_failed" = "Kuvatava nime muutmine ei õnnestunud"; -"room_error_name_edition_not_authorized" = "Sinul pole õigusi selle jututoa nime muutmiseks"; -"room_error_topic_edition_not_authorized" = "Sinul pole õigusi selle jututoa teema muutmiseks"; -"room_error_cannot_load_timeline" = "Ajajoone laadimine ei õnnestunud"; -"e2e_import_prompt" = "Selle toiminguga saad importida krüptimisvõtmed, mis sa viimati olid teisest Matrix'i kliendist eksportinud. Seejärel on võimalik dekrüptida ka siin kõik need samad sõnumid, mida see teine klient suutis dekrüptida.\nSee ekspordifail on krüptitud paroolifraasiga. Faili dekrüptimiseks sisesta siia paroolifraas."; -"local_contacts_access_discovery_warning" = "Selleks, et leida Matrixi võrgu kasutajaid, võib %@ saata sinu aadressiraamatus leiduvad e-posti aadressid ja telefoninumbrid sinu valitud Matrixi isikutuvastusserverile. Kui server seda toetab, siis andmed muudetakse enne saatmist räsideks - täpsema teabe leiad oma isikutuvastusserveri privaatsuspoliitikast."; -"membership_ban" = "Suhtluskeeld"; -"notification_settings_per_word_notifications" = "Sõnadega seotud teavitused"; -"ssl_could_not_verify" = "Serveri õigsust ei olnud võimalik kontrollida."; -"room_event_encryption_info_event_identity_key" = "Curve25519 identiteedi võti\n"; -"room_event_encryption_info_device_blocked" = "Mustas nimekirjas"; -"room_event_encryption_info_block" = "Lisa musta nimekirja"; -"room_event_encryption_info_unblock" = "Eemalda mustast nimekirjast"; -"room_event_encryption_verify_message" = "Tegemaks kindlaks, et seda sessiooni võid usaldada, palun kohtu tema omanikuga mõnel muul viisil (näiteks isiklikult või telefonikõne vahendusel) ning küsi, kas võtmed, mida ta näeb oma kasutajaseadistustes kattuvad alljärgnevaga:\n\n\tSessioni nimi: %@\n\tSessioni tunnus: %@\n\tSessioni võti: %@\n\nKui andmed kattuvad, siis vajuta järgnevat verifitseerimise nuppu. Kui ei kattu, siis tõenäoliselt keegi võõras suudab seda teist sessiooni kontrollida ning sa ilmselt eelistaks lisada teda musta nimekirja.\n\nTulevikus see verifitseerimise toiming võib minna veelgi nutikamaks."; -"local_contacts_access_not_granted" = "Kasutajate leidmine sinu kohaliku aadressiraamatu alusel eeldab talle ligipääsu, kuid %@'l puuduvad selleks õigused"; -"notification_settings_global_info" = "Teavituste seadistused salvestatakse serverisse koos sinu konto muude andmetega ning neid jagatakse kõikide klientrakendustega, kes sellist võimalust toetavad (sh töölauateavitused).\n\nReegleid rakendatakse järjekorras ning esimene vastavus määrab ka tulemuse.\nSeega: sõnakohased teavitused on olulisemad, kui jututoa-kohased teavitused ning need omakorda olulisemad kui saatjakohased teavitused.\nMitme sarnase reegli puhul kehtib põhimõte, et esimene loendi alusel leitud vaste on määrav."; -"notification_settings_per_word_info" = "Sõnade otsing ei ole tõstutundlik ning võib kasutada asendusteks * metamärki. Näiteks:\n- midagi alusel otsitakse kõiki sõnu „midagi“ (eraldajaks kirjavahemärgi, tühikud või rea algus ja lõpp);\n- midagi* alusel otsitakse kõiki sõnu mille alguses on „midagi“;\n- *midagi* otsib mis iganes sõnu, kus leidub järjest 6 tähte „midagi“."; -"ssl_cert_not_trust" = "See võib tähendada, et keegi on suuteline pahatahtlikult sinu veebiliiklust pealtkuulama või sinu telefon ei usalda serveri kasutatavat sertifikaati."; -"ssl_cert_new_account_expl" = "Kui serveri haldaja on sind teavitanud, et nii võib juhtuda, siis kontrolli, et sertifikaadi sõrmejälg vastab sellele, mille haldaja sulle on andnud."; -"ssl_unexpected_existing_expl" = "Võrreldes selle sertifikaadiga, mida sinu nutiseade seni usaldas, on praegune sertifikaat muutunud. See on VÄGA EBATAVALINE. Me soovitame, et ÄRA NÕUSTU selle uue sertifikaadiga."; -"ssl_expected_existing_expl" = "Senise usaldusväärse sertifikaadi asemel kasutab server nüüd mitteusaldusväärset sertifikaati. See võib tähendada et haldaja on seda serveris muutnud. Et võrrelda viimase kehtiva sertifikaadi sõrmejälge, palun võta haldajaga ühendust."; -"ssl_only_accept" = "NÕUSTU sertifikaadiga vaid siis, kui serveri haldaja antud sõrmejälg klapib sellega, mida sa hetkel siin näed."; -// New -"notice_room_join_rule_invite" = "%@ määras, et jututuppa pääseb vaid kutsega."; -"notice_room_join_rule_invite_by_you" = "Sina määrasid, et jututuppa pääseb vaid kutsega."; -"notice_room_join_rule_public" = "%@ muutis jututoa avalikuks."; -"notice_room_join_rule_public_by_you" = "Sa muutsid jututoa avalikuks."; -"notice_room_name_removed_for_dm" = "%@ eemaldas jututoa nime"; -"notice_room_created_for_dm" = "%@ liitus."; -"notice_room_join_rule_invite_for_dm" = "%@ määras, et jututuppa pääseb vaid kutsega."; -"notice_room_join_rule_invite_by_you_for_dm" = "Sina määrasid, et jututuppa pääseb vaid kutsega."; -"notice_room_join_rule_public_for_dm" = "%@ muutis jututoa avalikuks."; -"notice_room_join_rule_public_by_you_for_dm" = "Sa muutsid jututoa avalikuks."; -"notice_room_power_level_intro_for_dm" = "Jututoa liikmete õigused on:"; -"notice_room_aliases_for_dm" = "Jututoa aliased on: %@"; -"notice_room_history_visible_to_members_for_dm" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele liitumiskutse saatmise hetkest."; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ määras, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele nende liitumise hetkest."; -"room_left_for_dm" = "Sina lahkusid"; -"notice_room_third_party_invite_for_dm" = "%@ saatis kutse kasutajale %@"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ võttis tagasi kasutaja %@ kutse"; -"notice_room_name_changed_for_dm" = "%@ muutis jututoa uueks nimeks %@."; -"notice_room_third_party_invite_by_you_for_dm" = "Sina kutsusid kasutajat %@"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Sina võtsid tagasi kasutaja %@ kutse"; -"notice_room_name_changed_by_you_for_dm" = "Sa muutsid jututoa uueks nimeks %@."; -"notice_room_name_removed_by_you_for_dm" = "Sa eemaldasid jututoa nime"; -"notice_room_created_by_you_for_dm" = "Sina liitusid."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Sina tegid jututoa tulevase ajaloo loetavaks kõikidele jututoa liikmetele."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Sina määrasid, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele liitumiskutse saatmise hetkest."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Sina määrasid, et jututoa tulevane ajalugu on nähtav kõikidele selle liikmetele nende liitumise hetkest."; -"call_more_actions_dialpad" = "Numbriklahvistik"; -"call_more_actions_transfer" = "Suuna kõne edasi"; -"call_more_actions_audio_use_device" = "Kasuta seadme kõlarit"; -"call_more_actions_audio_use_headset" = "Kasuta kõrvaklappe"; -"call_more_actions_change_audio_device" = "Muuda heliseadet"; -"call_more_actions_unhold" = "Jätka"; -"call_more_actions_hold" = "Pane ootele"; -"call_holded" = "Sina panid kõne ootele"; -"call_remote_holded" = "%@ pani kõne ootele"; -"notice_declined_video_call_by_you" = "Sina keeldusid kõnest"; -"notice_declined_video_call" = "%@ keeldus kõnest"; -"resume_call" = "Jätka"; -"call_consulting_with_user" = "Pean nõu kasutajaga %@"; -"call_transfer_to_user" = "Suunan kõne kasutajale %@"; -"call_video_with_user" = "Videokõne kasutajaga %@"; -"call_voice_with_user" = "Häälkõne kasutajaga %@"; -"call_ringing" = "Helistan…"; -"e2e_passphrase_too_short" = "Salafraas on liiga lühike (pikkus peaks olema vähemalt %d tähemärki)"; -"microphone_access_not_granted_for_voice_message" = "Häälsõnumite salvestamiseks on vajalik ligipääs mikrofonile, kuid %@'l pole selleks õigusi"; -"message_reply_to_sender_sent_a_voice_message" = "saatis häälsõnumi."; -"attachment_large_with_resolution" = "Suurena %@ (~%@)"; -"attachment_medium_with_resolution" = "Keskmisena %@ (~%@)"; -"attachment_small_with_resolution" = "Väiksena %@ (~%@)"; -"attachment_size_prompt_message" = "Seadistustest saad määrata, et see funktsionaalsus pole kasutusel."; -"attachment_size_prompt_title" = "Saatmiseks kinnita meedia suurus"; -"room_displayname_all_other_participants_left" = "%@ (lahkus(id))"; -"auth_reset_password_error_not_found" = "Pole leitav"; -"auth_reset_password_error_unauthorized" = "Tegevus pole lubatud"; -"auth_username_in_use" = "Selline kasutajanimi on juba olemas"; -"auth_invalid_user_name" = "Vigane kasutajanimi"; -"rename" = "Muuda nime"; -"room_displayname_all_other_members_left" = "%@ (lahkus(id))"; -"attachment_unsupported_preview_message" = "See failitüüp ei ole toetatud."; -"attachment_unsupported_preview_title" = "Eelvaate kuvamine ei õnnestu"; -"message_reply_to_sender_sent_their_location" = "on jaganud oma asukohta."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/eu.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/eu.lproj/MatrixKit.strings deleted file mode 100644 index 6a119cc14..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/eu.lproj/MatrixKit.strings +++ /dev/null @@ -1,383 +0,0 @@ -"notice_conference_call_started" = "VoIP konferentzia hasita"; -"notice_conference_call_finished" = "VoIP konferentzia amaituta"; -// Events formatter -"notice_avatar_changed_too" = "(abatarra ere aldatu da)"; -"notice_crypto_error_unknown_inbound_session_id" = "Igorlearen saioak ez dizkigu mezu honetarako gakoak bidali."; -"room_error_join_failed_empty_room" = "Ezin da oraingoz hutsik dagoen gela batetara berriro sartu."; -"notice_encrypted_message" = "Zifratutako mezua"; -"login_email_placeholder" = "E-mail helbidea"; -// room display name -"room_displayname_empty_room" = "Gela hutsa"; -"room_displayname_two_members" = "%@ eta %@"; -"room_displayname_more_than_two_members" = "%@ eta beste %u"; -// Settings -"settings" = "Ezarpenak"; -// button names -"ok" = "Ados"; -"cancel" = "Utzi"; -"save" = "Gorde"; -"leave" = "Atera"; -"send" = "Bidali"; -"copy_button_name" = "Kopiatu"; -"resend" = "Birbidali"; -"redact" = "Kendu"; -"share" = "Partekatu"; -"delete" = "Ezabatu"; -"room_no_power_to_create_conference_call" = "Gonbidatzeko baimena behar duzu gela honetan konferentzia bat hasteko"; -"room_no_conference_call_in_encrypted_rooms" = "Konferentzia deiak ez daude onartuta zifratutako geletan"; -"invite" = "Gonbidatu"; -"close" = "Itxi"; -"start_voice_call" = "Hasi ahots deia"; -"start_video_call" = "Hasi bideo deia"; -"submit" = "Bidali"; -"login_password_placeholder" = "Pasahitza"; -"login_home_server_title" = "Hasiera-zerbitzariaren URLa:"; -"login_identity_server_title" = "Identitate-zerbitzariaren URL-a:"; -"login_error_must_start_http" = "http[s]:// gisa hasi behar da URLa"; -"login_error_forbidden" = "Erabiltzaile-izen / pasahitz baliogabea"; -"login_error_unknown_token" = "Ez da ezagutzen zehaztutako sarbide katea"; -"login_error_bad_json" = "Gaizki osatutako JSON"; -"login_error_not_json" = "Ez zuen baliozko JSON-ik"; -"login_error_limit_exceeded" = "Eskaera gehiegi bidali dira"; -"login_error_user_in_use" = "Erabiltzaile-izen hau hartuta dago"; -"login_error_login_email_not_yet" = "Oraindik erabili ez den e-maileko esteka"; -"attachment_cancel_download" = "Utzi deskarga?"; -"attachment_cancel_upload" = "Utzi deskarga?"; -"call_ended" = "Deia amaitu da"; -"incoming_video_call" = "Bideo-deia jasotzen"; -"incoming_voice_call" = "Ahots-deia jasotzen"; -"continue" = "Jarraitu"; -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "h"; -"format_time_d" = "e"; -"ban" = "Debekatu"; -"mention" = "Aipamena"; -"room_member_power_level_prompt" = "Ezin izango duzu aldaketa hau desegin kidea zure botere maila berera ekartzen ari zarelako.\nZiur zaude?"; -// unrecognized SSL certificate -"ssl_trust" = "Fidatu"; -"ssl_logout_account" = "Amaitu saioa"; -"ssl_remain_offline" = "Ezikusi"; -"ssl_could_not_verify" = "Ezin izan da urruneko zerbitzariaren identitatea egiaztatu."; -"ssl_cert_not_trust" = "Honek esan lezake inor zure trafikoa antzematen dabilela asmo txarrez, edo zure telefonoa ez dela fidatzen urruneko zerbitzariaren ziurtagiriaz."; -"ssl_cert_new_account_expl" = "Zerbitzariaren kudeatzaileak hau gerta daitekeela esaten badu, ziurtatu beheko hatz-marka beraiek emandako hatz-markarekin bat datorrela."; -"ssl_unexpected_existing_expl" = "Ziurtagiria aldatu da eta ez da zure telefonoak onartzen zuena. Hau OSO ARRAROA da. Ziurtagiri berri hau EZ ONARTZEA aholkatzen da."; -"ssl_expected_existing_expl" = "Ziurtagiria aldatu da, onartutako batetik onartu gabeko batera. Agian Zerbitzariak ziurtagiria berriztu du. Jarri kontaktuan zerbitzariaren kudeatzailearekin hatz-marka eskatzeko."; -"ssl_only_accept" = "SOILIK onartu ziurtagiria zerbitzariaren kudeatzaileak goikoarekin bat datorren hatz-marka bat argitaratu badu."; -// room details dialog screen -"room_details_title" = "Gelaren xehetasunak"; -"cancel_upload" = "Utzi igoera"; -"cancel_download" = "Utzi deskarga"; -"settings_title_notifications" = "Jakinarazpenak"; -"device_details_delete_prompt_message" = "Eragiketa honek autentifikazio gehigarria behar du.\nJarraitzeko, idatzi zure pasahitza."; -"device_details_delete_prompt_title" = "Autentifikazioa"; -// Language picker -"language_picker_title" = "Hautatu hizkuntza"; -"account_email_validation_title" = "Egiaztaketa egiteke"; -"account_email_validation_message" = "Irakurri zure e-maila eta egin klik dakarren estekan. Behin eginda, egin klik Jarraitu botoian."; -"account_email_validation_error" = "Ezin izan da e-mail helbidea egiaztatu. Irakurrri zure e-maila eta egin klik dakarren estekan. Behin eginda, egin klik Jarraitu botoian"; -// Country picker -"country_picker_title" = "Hautatu herrialde bat"; -"account_msisdn_validation_message" = "Aktibazio kodea duen SMS mezu bat bidali dizugu. Idatzi kode hori hemen azpian."; -"room_event_encryption_info_event_none" = "bat ere ez"; -// E2E export -"e2e_export_room_keys" = "Esportatu gelako gakoak"; -"e2e_export" = "Esportatu"; -"e2e_passphrase_enter" = "Idatzi pasaesaldia"; -"e2e_passphrase_confirm" = "Berretsi pasaesaldia"; -// E2E import -"e2e_import_room_keys" = "Inportatu gelako gakoak"; -"e2e_import" = "Inportatu"; -"room_event_encryption_info_device_verified" = "Egiaztatuta"; -"room_event_encryption_info_device_blocked" = "Blokeatuta"; -"room_event_encryption_verify_ok" = "Egiaztatu"; -"room_event_encryption_info_unverify" = "Kendu egiaztaketa"; -"room_event_encryption_info_block" = "Blokeatu"; -"room_event_encryption_info_unblock" = "Desblokeatu"; -"view" = "Ikusi"; -"back" = "Atzera"; -"retry" = "Saiatu berriro"; -"dismiss" = "Baztertu"; -"start_chat" = "Hasi txata"; -"room_event_encryption_info_event_unencrypted" = "zifratu gabe"; -"room_event_encryption_info_device_not_verified" = "EZ egiaztatuta"; -"room_event_encryption_info_verify" = "Egiaztatu…"; -"account_error_email_wrong_title" = "E-mail helbide baliogabea"; -"account_error_email_wrong_description" = "Honek ez du baliozko e-mail baten antzik"; -"room_error_join_failed_title" = "Huts egin du gelara elkartzean"; -"room_error_timeline_event_not_found_title" = "Huts egin du denbora-lerroko puntua kargatzean"; -"e2e_passphrase_empty" = "Pasaesaldia ezin da hutsik egon"; -"e2e_passphrase_not_match" = "Pasaesaldiak bat etorri behar dira"; -"error" = "Errorea"; -"create_room" = "Sortu gela"; -"membership_invite" = "Gonbidatuta"; -"kick" = "Kanporatu"; -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Sortu kontua:"; -"login_server_url_placeholder" = "URL-a (adib. https://matrix.org)"; -"login_home_server_info" = "Zure hasiera-zerbitzariak gordetzen ditu zure elkarrizketa guztiak eta kontuaren datuak"; -"login_identity_server_info" = "Matrixek identitate zerbitzariak hornitzen ditu e-mailak eta abar zein Matrix ID-ri dagokien jakiteko, Orain https://matrix.org da dagoen bakarra."; -"login_user_id_placeholder" = "Matrix ID-a (adib. @urko:matrix.org edo urko)"; -"login_optional_field" = "aukerakoa"; -"login_display_name_placeholder" = "Pantaila-izena (adib. Urko Etxeberria)"; -"login_error_title" = "Saio hasierak huts egin du"; -"login_email_info" = "Zehaztu e-mail helbide bat beste Matrix erabiltzaileek zu errazago aurkitzeko, e-mail helbidea izateak ere etorkizunean pasahitza aldatzea ahalbidetuko dizu."; -"login_prompt_email_token" = "Sartu zure e-mail egiaztaketa tokena:"; -"login_error_no_login_flow" = "Huts egin du autentifikazio informazioa hasiera zerbitzari honetatik jasotzean"; -"login_leave_fallback" = "Utzi"; -"login_invalid_param" = "Parametro baliogabea"; -"register_error_title" = "Erregistratzeak huts egin du"; -// Action -"no" = "Ez"; -"yes" = "Bai"; -"abort" = "Abortatu"; -"discard" = "Baztertu"; -"sign_up" = "Erregistratu"; -"submit_code" = "Bidali kodea"; -"login_error_do_not_support_login_flows" = "Orain ez ditugu onartzen hasiera zerbitzari honek zehaztutako saio hasiera metodo guztiak, edo batere"; -"login_error_registration_is_not_supported" = "Oraindik ezin da aplikazioarekin erregistratu"; -"login_use_fallback" = "Erabili ordezko orria"; -"login_error_forgot_password_is_not_supported" = "Oraindik ezin da aplikazioarekin pasahitza berreskuratu"; -"set_default_power_level" = "Leheneratu botere maila"; -"set_moderator" = "Ezarri moderatzailea"; -"set_admin" = "Ezarri kudeatzailea"; -"select_account" = "Hautatu kontu bat"; -"attach_media" = "Erantsi media liburutegitik"; -"capture_media" = "Atera argazkia / bideoa"; -"invite_user" = "Gonbidatu matrix erabiltzailea"; -"reset_to_default" = "Leheneratu lehenetsitakora"; -"resend_message" = "Birbidali mezua"; -"select_all" = "Hautatu guztia"; -"show_details" = "Erakutsi xehetasunak"; -"answer_call" = "Erantzun deia"; -"reject_call" = "Ukatu deia"; -"end_call" = "Amaitu deia"; -"ignore" = "Ezikusi"; -"unignore" = "Berriro aintzat hartu"; -"notice_room_name_removed" = "%@ erabiltzaileak gelaren izena kendu du"; -"notice_room_topic_removed" = "%@ erabiltzaileak gelaren mintzagaia kendu du"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " nork: %@"; -"notice_event_redacted_reason" = " [arrazoia: %@]"; -"notice_room_created" = "%@ erabiltzaileak gela sortu du"; -"notice_room_join_rule" = "Elkartzeko baldintza: %@"; -"notice_room_power_level_intro" = "Gelako kideen botere maila:"; -// Others -"user_id_title" = "Erabiltzaile ID-a:"; -"offline" = "deskonektatuta"; -"unsent" = "Bidali gabe"; -"not_supported_yet" = "Oraindik ez da onartzen"; -"default" = "lehenetsia"; -"private" = "Pribatua"; -"public" = "Publikoa"; -"power_level" = "Botere maila"; -"network_error_not_reachable" = "Egiaztatu zure sare konexioa"; -"user_id_placeholder" = "adib: @urko:hasierazerbitzaria"; -"ssl_homeserver_url" = "Hasiera-zerbitzariaren URL-a: %@"; -"language_picker_default_language" = "Lehenetsia (%@)"; -"notice_room_invite" = "%@ erabiltzaileak %@ gonbidatu du"; -"notice_room_third_party_invite" = "%@ erabiltzaileak gelara elkartzeko gonbidapen bat bidali dio %@ erabiltzaileari"; -"notice_room_third_party_registered_invite" = "%@ erabiltzaileak %@ gelarako gonbidapena onartu du"; -"notice_room_join" = "%@ elkartu da"; -"notice_room_leave" = "%@ atera da"; -"notice_room_reject" = "%@ erabiltzaileak gonbidapena baztertu du"; -"notice_room_kick" = "%@ erabiltzaileak %@ kanporatu du"; -"notice_room_unban" = "%@ erabiltzaileak debekua kendu dio %@ erabiltzaileari"; -"notice_room_ban" = "%@ erabiltzaileak %@ debekatu du"; -"notice_profile_change_redacted" = "%@ erabiltzaileak bere %@ profila eguneratu du"; -"notice_room_power_level_acting_requirement" = "Hemen aritu ahal izateko erabiltzaileak behar duen botere maila:"; -"notice_image_attachment" = "irudi-eranskina"; -"notice_audio_attachment" = "audio-eranskina"; -"notice_video_attachment" = "bideo-eranskina"; -"notice_location_attachment" = "kokaleku-eranskina"; -"notice_file_attachment" = "fitxategi-eranskina"; -"notice_invalid_attachment" = "eranskin baliogabea"; -"notice_unsupported_attachment" = "Onartu gabeko eranskina: %@"; -"notice_crypto_unable_to_decrypt" = "** Ezin izan da deszifratu: %@ **"; -"settings_enable_inapp_notifications" = "Gaitu aplikazio barneko jakinarazpenak"; -"notification_settings_room_rule_title" = "Gela: '%@'"; -// Devices -"device_details_title" = "Saioaren informazioa\n"; -"device_details_name" = "Izen publikoa\n"; -"device_details_identifier" = "ID-a\n"; -"device_details_last_seen" = "Azkenekoz ikusia\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "Saio baten izen publikoa zurekin komunikatzen den jendeak ikusi dezake"; -// Encryption information -"room_event_encryption_info_title" = "Muturretik muturrerako zifratzearen informazioa\n\n"; -"room_event_encryption_info_event_user_id" = "Erabiltzailearen ID-a\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519 identitate-gakoa\n"; -"room_event_encryption_info_event_algorithm" = "Algoritmoa\n"; -"room_event_encryption_info_event_session_id" = "Saioaren ID-a\n"; -"room_event_encryption_info_event_decryption_error" = "Deszifratze errorea\n"; -"room_event_encryption_info_device" = "\nIgorlearen saioaren informazioa\n"; -"room_event_encryption_info_device_unknown" = "saio ezezaguna\n"; -"room_event_encryption_info_device_name" = "Izen publikoa\n"; -"room_event_encryption_info_device_id" = "ID-a\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519 hatz-marka\n"; -// Account -"account_save_changes" = "Gorde aldaketak"; -"account_msisdn_validation_error" = "Ezin izan da telefono zenbakia egiaztatu."; -"account_msisdn_validation_title" = "Egiaztaketa egiteke"; -"login_mobile_device" = "Mugikorra"; -"login_tablet_device" = "Tableta"; -"login_desktop_device" = "Mahaigainekoa"; -"notification_settings_people_join_leave_rooms" = "Jakinarazi niri jendea gelera elkartu edo gelatik ateratzean"; -"notice_room_power_level_event_requirement" = "Gertaerekin lotutako gutxieneko botere maila:"; -"notice_room_aliases" = "Gelaren ezizenak: %@"; -"notice_encryption_enabled" = "%@ erabiltzaileak muturretik muturrera zifratzea gaitu du (%@ algoritmoa)"; -"notice_redaction" = "%@ erabiltzaileak gertaera bat kendu du (id: %@)"; -"notice_error_unsupported_event" = "Onartu gabeko gertaera"; -"notice_error_unexpected_event" = "Ustekabeko gertaera"; -"notice_error_unknown_event_type" = "Gertaera mota ezezaguna"; -"notice_room_history_visible_to_anyone" = "%@ erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du edonorentzat."; -"notice_room_history_visible_to_members" = "%@ erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du gelako kide guztientzat, gonbidapena egiten zaienetik."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du gelako kide guztientzat, gonbidapena egiten zaienetik."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du gelako kide guztientzat, elkartzen direnetik."; -"room_event_encryption_info_event" = "Gertaeraren informazioa\n"; -"room_event_encryption_info_device_verification" = "Egiaztaketa\n"; -"room_event_encryption_verify_title" = "Egiaztatu saioa\n\n"; -"account_link_email" = "Lotu e-maila"; -"account_linked_emails" = "Lotutako e-mailak"; -"account_error_display_name_change_failed" = "Huts egin du pantaila-izenaren aldaketak"; -"account_error_picture_change_failed" = "Huts egin du irudiaren aldaketak"; -"account_error_matrix_session_is_not_opened" = "Matrix saioa ez dago irekita"; -"account_error_msisdn_wrong_title" = "Telefono zenbaki baliogabea"; -"account_error_msisdn_wrong_description" = "Honek ez du baliozko telefono zenbaki baten antzik"; -// Room creation -"room_creation_name_title" = "Gelaren izena:"; -"room_creation_name_placeholder" = "(adib. lagunKuadrilla)"; -"room_creation_alias_title" = "Gelaren ezizena:"; -"room_creation_alias_placeholder" = "(adib. #gela:adibidea.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(adib. #gela%@)"; -"room_creation_participants_title" = "Parte hartzaileak:"; -"room_creation_participants_placeholder" = "(adib. @miren:1zerbitzaria; @peio:2zerbitzaria…)"; -// Room -"room_please_select" = "Hautatu gela bat"; -"room_error_name_edition_not_authorized" = "Ez duzu gela honen izena aldatzeko baimenik"; -"room_error_topic_edition_not_authorized" = "Ez duzu gela honen mintzagaia aldatzeko baimenik"; -"notice_topic_changed" = "%@ erabiltzaileak mintzagaia honetara aldatu du: %@"; -"notice_room_name_changed" = "%@ erabiltzaileak gelaren izena honetara aldatu du: %@"; -"settings_enable_push_notifications" = "Gaitu jakinarazpenak"; -"settings_enter_validation_token_for" = "Sartu %@ balidazio tokena:"; -"room_event_encryption_info_event_fingerprint_key" = "Aldarrikatutako Ed25519 hatz-marka gakoa\n"; -"room_error_cannot_load_timeline" = "Huts egin du denbora lerroa kargatzean"; -"room_left" = "Gelatik atera zara"; -// Room members -"room_member_ignore_prompt" = "Ziur erabiltzaile honen mezu guztiak ezkutatu nahi dituzula?"; -// Attachment -"attachment_size_prompt" = "Nola bidali nahi duzu:"; -"attachment_original" = "Jatorrizko tamaina: %@"; -"attachment_small" = "Txikia: %@"; -"attachment_medium" = "Ertaina: %@"; -"attachment_large" = "Handia: %@"; -"attachment_multiselection_size_prompt" = "Irudiak nola bidali nahi dituzu:"; -"attachment_multiselection_original" = "Jatorrizko tamaina"; -"attachment_e2e_keys_file_prompt" = "Fitxategi honek Matrix bezero batetik esportatutako zifratze gakoak ditu.\nFitxategiaren edukia ikusi nahi duzu edo dauzkan gakoak inportatu?"; -"attachment_e2e_keys_import" = "Inportatu…"; -// Contacts -"contact_mx_users" = "Matrix erabiltzaileak"; -"contact_local_contacts" = "Kontaktu lokalak"; -// Search -"search_no_results" = "Emaitzarik ez"; -"search_searching" = "Bilaketa abian…"; -// Permissions -"camera_access_not_granted_for_call" = "Bideo deiek kamera atzitzeko baimena behar dute baina %@ aplikazioak ez du baimenik"; -"microphone_access_not_granted_for_call" = "Deiek mikrofonoa atzitzeko baimena behar dute baina %@ aplikazioak ez du baimenik"; -"local_contacts_access_discovery_warning_title" = "Erabiltzaileak aurkitzea"; -"local_contacts_access_discovery_warning" = "Matrix darabilten kontaktuak aukitzeko, %@ aplikazioak zure helbide-liburuko kontaktuen e-mail eta telefono zenbakiak igo ahal ditu zuk hautatutako Matrix identitate-zerbitzarira. AHal denean, datu pertsonalak hasheatu egingo dira bidali aurretik, egiaztatu zure identitate-zerbitzariaren pribatutasun politika xehetasun gehiagorako."; -"notice_room_withdraw" = "%@ erabiltzaileak %@ erabiltzailearen gonbidapena atzera bota du"; -"notice_room_reason" = ".Arrazoia: %@"; -"notice_avatar_url_changed" = "%@ erabiltzaileak abatarra aldatu du"; -"notice_display_name_set" = "%@ erabiltzaileak bere pantaila-izena aldatu du beste honetara: %@"; -"notice_display_name_changed_from" = "%@ erabiltzaileak bere pantaila-izena aldatu du, honetatik: %@ honetara: %@"; -"notice_display_name_removed" = "%@ erabiltzaileak bere pantaila-izena kendu du"; -"notice_placed_voice_call" = "%@ erabiltzaileak ahots deia hasi du"; -"notice_placed_video_call" = "%@ erabiltzaileak bideo deia hasi du"; -"notice_answered_video_call" = "%@ erabiltzaileak deia erantzun du"; -"notice_ended_video_call" = "%@ erabiltzaileak deia amaitu du"; -"notice_conference_call_request" = "%@ erabiltzaileak VoIP konferentzia bat eskatu du"; -"set_power_level" = "Ezarri botere-maila"; -// actions -"action_logout" = "Amaitu saioa"; -"login" = "Hasi saioa"; -"create_account" = "Sortu kontua"; -"membership_leave" = "Atera da"; -"membership_ban" = "Debekatua"; -"num_members_one" = "erabiltzaile %@"; -"num_members_other" = "%@ erabiltzaile"; -"unban" = "Kendu debekua"; -"message_unsaved_changes" = "Gorde gabeko aldaketak daude. Irtenez gero baztertuko dira."; -// Login Screen -"login_error_already_logged_in" = "Saioa hasita zegoen jada"; -// contacts list screen -"invitation_message" = "Zurekin hitz egin nahiko nuke matrix erabilita, zoaz http://matrix.org webgunera informazio gehiagorako."; -// Settings screen -"settings_title_config" = "Konfigurazioa"; -// Notification settings screen -"notification_settings_disable_all" = "Desgaitu jakinarazpen guztiak"; -"notification_settings_enable_notifications" = "Gaitu jakinarazpenak"; -"notification_settings_enable_notifications_warning" = "Jakinarazpen guztiak desgaituta daude gailu guztientzat."; -"notification_settings_per_word_notifications" = "Hitzen jakinarazpenak"; -"notification_settings_always_notify" = "Jakinarazi beti"; -"notification_settings_never_notify" = "Ez jakinarazi inoiz"; -"notification_settings_word_to_match" = "behatu beharreko hitza"; -"notification_settings_highlight" = "Nabarmendu"; -"notification_settings_custom_sound" = "Soinu pertsonalizatua"; -"notification_settings_per_room_notifications" = "Gelen jakinarazpenak"; -"notification_settings_per_sender_notifications" = "Igorleen jakinarazpenak"; -"notification_settings_sender_hint" = "@erabiltzailea:domeinua.eus"; -"notification_settings_select_room" = "Hautatu gela bat"; -"notification_settings_other_alerts" = "Beste alertak"; -"notification_settings_contain_my_user_name" = "Jakinarazi niri soinuarekin nire erabiltzaile izena duten mezuak daudenean"; -"notification_settings_contain_my_display_name" = "Jakinarazi niri soinuarekin nire pantaila-izena duten mezuak daudenean"; -"notification_settings_just_sent_to_me" = "Jakinarazi niri soinuarekin niri bakarrik bidalitako mezuak daudenean"; -"notification_settings_invite_to_a_new_room" = "Jakinarazi niri gela batera gonbidatzen nautenean"; -"notification_settings_receive_a_call" = "Jakinarazi niri dei bat jasotzen dudanean"; -"notification_settings_suppress_from_bots" = "Kendu boten jakinarazpenak"; -"notification_settings_by_default" = "Lehenetsita…"; -"notification_settings_notify_all_other" = "Jakinarazi beste mezu/gela guztietarako"; -// gcm section -"settings_config_home_server" = "Hasiera-zerbitzaria: %@"; -"settings_config_identity_server" = "Identitate zerbitzaria: %@"; -"settings_config_user_id" = "Erabiltzaile ID-a: %@"; -// call string -"call_waiting" = "Itxaroten…"; -"call_connecting" = "Deia konektatzen…"; -"call_ring" = "Deitzen…"; -"call_invite_expired" = "Dei-gonbidapena iraungi da"; -"ssl_fingerprint_hash" = "Hatz-marka (%@):"; -"notice_feedback" = "Informazio gertaera (id: %@): %@"; -"room_event_encryption_verify_message" = "Saio hau fidagarria dela egiaztatzeko, jarri kontaktuan jabearekin beste medio batzuk erabilita (adib. aurrez-aurre edo telefonoz deituz) eta galdetu bere erabiltzaile-ezarpenetan ikusten duten gakoa honekin bat datorren:\n\n\tSaioaren izena: %@\n\tSaioaren ID-a: %@\n\tSaioaren gakoa: %@\n\nBat badatoz, sakatu beheko egiaztatu botoia. Ez badatoz bat, beste norbait egon daiteke saioa atzematen eta ziur aski zerrenda beltzaren botoia zapaldu nahiko duzu.\n\nEtorkizunean egiaztaketa prozesu hau sofistikatuagoa izango da."; -"room_error_timeline_event_not_found" = "Aplikazioa gela honen denbora lerroko puntu zehatz bat kargatzen saiatu da baina ezin izan du aurkitu"; -"e2e_import_prompt" = "Prozesu honek aurretik beste Matrix bezero batetik esportatutako zifratze gakoak inportatzea ahalbidetzen du. Beste bezeroak dezifratu zitekeen mezuak deszifratu ahal izango duzu.\nEsportazio fitxategia pasaesaldi batez babestuta dago. Pasaesaldi hori hemen jarri behar duzu fitxategia deszifratzeko."; -"e2e_export_prompt" = "Prozesu honek zifratutako geletan jaso dituzun mezuen gakoak fitxategi lokal batera esportatzea ahalbidetzen dizu. Gero beste Matrix bezero batera inportatu ditzakezu, bezero horrek ere mezu hauek dezifratu ahal izateko.\nEsportatutako fitxategiak berau irakurri dezakeen edonori zuk ikusi ditzakezun mezuak deszifratzea ahalbidetuko dio, beraz kontuz non gordetzen duzun."; -"local_contacts_access_not_granted" = "Kontaktu lokaletatik erabiltzaileak aurkitzeko zure kontaktua atzitzeko baimena behar da baina %@ aplikazioak ez du baimenik"; -"notification_settings_global_info" = "Jakinarazpen ezarpenak zure erabiltzaile kontuan gordetzen dira eta onartutako bezeroen artean partekatzen dira (mahaigaineko jakinarazpenak barne).\n\nArauak ordenan aplikatzen dira; bat datorren lehen arauak zehazten du zer gertatzen den mezuarekin.\nBeraz: Hitzen jakinarazpenak gelen jakinarazpenak baino garrantzitsuagoak dira, eta hauek igorleen jakinarazpenak baino garrantzitsuagoak.\nMota bereko arauentzat, zerrendan bat datorren lehenak lehentasuna hartzen du."; -"notification_settings_per_word_info" = "Hitzak ez dituzte bereizten maiuskula eta minuskulak, eta * komodina izan dezakete. Beraz:\nmar bat dator mar katearekin hitz mugatzaileez inguratuta dagoenean (adib. puntuazioa, zuriunea, lerro hasiera edo bukaera).\nmar* bat dator mar-ez hasten den edozein hitzekin.\n*mar* bat dator edozein posiziotan mar duten hitzekin."; -"notice_room_related_groups" = "Gela honekin lotura duten taldeak hauek dira: %@"; -// Groups -"group_invite_section" = "Gonbidapenak"; -"group_section" = "Taldeak"; -"notice_sticker" = "eranskailua"; -"notice_in_reply_to" = "Honi erantzunez"; -"error_common_message" = "Errore bat gertatu da. Saiatu berriro geroago."; -// Reply to message -"message_reply_to_sender_sent_an_image" = "irudi bat bidali du."; -"message_reply_to_sender_sent_a_video" = "bideo bat bidali du."; -"message_reply_to_sender_sent_an_audio_file" = "audio fitxategi bat bidali du."; -"message_reply_to_sender_sent_a_file" = "fitxategi bat bidali du."; -"message_reply_to_message_to_reply_to_prefix" = "Honi erantzunez"; -"login_error_resource_limit_exceeded_title" = "Baliabide muga gaindituta"; -"login_error_resource_limit_exceeded_message_default" = "Hasiera zerbitzari honek bere baliabide mugetako bat gainditu du."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga gainditu du."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nJarri kontaktuan zerbitzuaren administratzailearekin zerbitzu hau erabiltzen jarraitzeko."; -"login_error_resource_limit_exceeded_contact_button" = "Kontaktatu administratzailea"; -"e2e_passphrase_create" = "Sortu pasaesaldia"; -"account_error_push_not_allowed" = "Jakinarazpenak ez dira onartzen"; -"device_details_rename_prompt_title" = "Saioaren izena"; -"notice_room_third_party_revoked_invite" = "%@ erabiltzaileak %@ gelara elkartzeko gonbidapena indargabetu du"; -"notice_encryption_enabled_ok" = "%@ erabiltzaileak zifratzea gaitu du."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ erabiltzaileak zifratzea gaitu du. (%2$@ algoritmo ezezaguna)."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/fa.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/fa.lproj/MatrixKit.strings deleted file mode 100644 index d2b523506..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/fa.lproj/MatrixKit.strings +++ /dev/null @@ -1,549 +0,0 @@ - - -"e2e_import_prompt" = "این فرآیند به شما امکان می دهد کلیدهای رمزگذاری را که قبلاً از کلاینت دیگری صادر کرده اید، وارد کنید. سپس می توانید هر پیامی را که کلاینت دیگر رمزگشایی می کند رمزگشایی کنید.\nپرونده با عبارت عبور محافظت می شود. برای رمزگشایی پرونده باید عبارت عبور را در اینجا وارد کنید."; -"room_member_power_level_prompt" = "شما نمی توانید این تغییر را لغو کنید زیرا در حال ارتقا سطح کاربر به همان سطح خودتان هستید.\nآیا مطمئن هستید؟"; -"notification_settings_per_word_info" = "کلمات به صورت غیر حساس(case insensitive)تطابق می‌کنند و ممکن است شامل یک wildcard * باشد. بنابراین:\nfoo با رشته foo که توسط جداکننده‌های کلمه احاطه شده تطابق می‌کند (به عنوان مثال علائم نگارشی و فضای خالی یا شروع و پایان خط).\nfoo* با هر کلمه ای که با foo شروع شود مطابقت دارد.\n*foo* با هر کلمه‌ای که حداقل سه حرف foo را داشته باشد تطابق می‌کند."; -"ssl_only_accept" = "فقط در صورتی که ادمین سرور اثر انگشت متناسب با مورد بالا را منتشر کرده باشد، گواهی را بپذیرید."; -"ssl_expected_existing_expl" = "این گواهی از یک گواهینامه مورد اعتماد قبلی به یک گواهینامه مورد اعتماد دیگر تبدیل شده است. سرور ممکن است گواهینامه خود را تمدید کرده باشد. برای اطمینان از اثر انگشت با ادمین سرور تماس بگیرید."; -"ssl_unexpected_existing_expl" = "این گواهینامه از گواهی مورد اعتماد تلفن شما تغییر کرده است. این بسیار غیر معمول است. توصیه می شود این گواهینامه جدید را قبول نکنید."; -"ssl_cert_new_account_expl" = "درصورتی که ادمین سرور بگوید مشکلی وجود ندارد، اطمینان حاصل کنید که اثر انگشت زیر با اثر انگشت ارائه شده توسط او مطابقت دارد."; -"ssl_cert_not_trust" = "این می تواند به این معنی باشد که شخصی ثالثی ترافیک شما را رهگیری می کند یا اینکه تلفن شما به گواهی ارائه شده توسط سرور اعتماد ندارد."; -"ssl_could_not_verify" = "هویت سرور تأیید نشد."; -"ssl_fingerprint_hash" = "اثر انگشت (%@):"; -"ssl_remain_offline" = "نادیده‌گیری"; -"ssl_logout_account" = "خروج"; - -// unrecognized SSL certificate -"ssl_trust" = "اعتماد کردن"; -"call_more_actions_dialpad" = "پد شماره گیری"; -"call_more_actions_transfer" = "انتقال"; -"call_more_actions_audio_use_device" = "بلندگوی دستگاه"; -"call_more_actions_audio_use_headset" = "استفاده از هدست صوتی"; -"call_more_actions_change_audio_device" = "تغییر خروجی صدا"; -"call_more_actions_unhold" = "از سرگیری"; -"call_more_actions_hold" = "قرار دادن در حالت انتظار"; -"call_holded" = "شما تماس را در حالت انتظار قرار داده‌اید"; -"call_remote_holded" = "%@ تماس را در حالت انتظار قرار داده است"; -"call_invite_expired" = "تماس منقضی شده است"; -"incoming_video_call" = "تماس ویدیویی ورودی"; -"incoming_voice_call" = "تماس صوتی ورودی"; -"call_ring" = "در حال تماس..."; -"call_ended" = "مکالمه تلفنی تمام شد"; -"call_connecting" = "در حال اتصال …"; - -// Settings keys - -// call string -"call_waiting" = "در انتظار..."; -"settings_config_user_id" = "شناسه کاربری: %@"; -"settings_config_identity_server" = "سرور هویت‌سنجی: %@"; - -// gcm section -"settings_config_home_server" = "سرور: %@"; -"notification_settings_notify_all_other" = "برای سایر پیام ها / اتاق ها اطلاع بده"; -"notification_settings_by_default" = "به صورت پیش فرض..."; -"notification_settings_suppress_from_bots" = "اعلان‌های ربات‌ها را سرکوب کن"; -"notification_settings_receive_a_call" = "هنگام دریافت تماس به من اطلاع بده"; -"notification_settings_people_join_leave_rooms" = "وقتی افراد به اتاق می‌پیوندند یا از اتاق خارج می شوند، به من اطلاع بده"; -"notification_settings_invite_to_a_new_room" = "وقتی به اتاق جدیدی دعوت شدم به من اطلاع بده"; -"notification_settings_just_sent_to_me" = "در مورد پیام‌هایی که فقط برای من ارسال شده است با صوت به من اطلاع بده"; -"notification_settings_contain_my_display_name" = "در مورد پیام‌هایی که حاوی نام من هستند با صدا به من اطلاع بده"; -"notification_settings_contain_my_user_name" = "در مورد پیام هایی که حاوی نام کاربری من است با صوت به من اطلاع بده"; -"notification_settings_other_alerts" = "هشدارهای دیگر"; -"notification_settings_select_room" = "اتاقی را انتخاب کنید"; -"notification_settings_sender_hint" = "@user:domain.com"; -"notification_settings_per_sender_notifications" = "اعلان‌های ارسال کننده محور"; -"notification_settings_per_room_notifications" = "اعلان‌های اتاق‌محور"; -"notification_settings_custom_sound" = "صدای سفارشی"; -"notification_settings_highlight" = "هایلایت"; -"notification_settings_word_to_match" = "کلمه مطابقت"; -"notification_settings_never_notify" = "هرگز اطلاع نده"; -"notification_settings_always_notify" = "همیشه اطلاع بده"; -"notification_settings_per_word_notifications" = "اعلان‌های کلمه‌محور"; -"notification_settings_global_info" = "تنظیمات اعلان در حساب کاربری شما ذخیره می شود و بین همه کلاینت‌هایی که از آنها پشتیبانی می کنند به اشتراک گذاشته می شود (از جمله اعلان های دسکتاپ).\n\nقوانین به ترتیب اعمال می شود. اولین قانونی که مطابقت دارد نتیجه پیام را مشخص می کند.\nبنابراین: اعلان‌های کلمه‌محور از اعلان‌های اتاق‌محور مهم‌تر و اعلان‌های اتاق‌محور از اعلان‌های ارسال‌کننده‌محور مهم‌تر هستند.\nبرای چندین قانون از یک نوع، اولین قانونی که در لیست مطابقت دارد در اولویت است."; -"notification_settings_enable_notifications_warning" = "همه اعلان‌ها در حال حاضر برای همه دستگاه‌ها غیرفعال هستند."; - -// room display name -"room_displayname_empty_room" = "اتاق خالی"; -"notice_in_reply_to" = "در پاسخ به"; -"notice_sticker" = "استیکر"; -"notice_crypto_error_unknown_inbound_session_id" = "نشست فرستنده کلیدهای این پیام را برای ما ارسال نکرده است."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ تاریخچه آینده‌ی اتاق را از همان زمانی که افراد به اتاق پیوستند برای آنان قابل مشاهده کرد."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ تاریخچه آینده‌ی اتاق را از همان زمانی که افراد دعوت شده اند برای آنان قابل مشاهده کرد."; -"login_email_info" = "یک ایمیل مشخص کنید تا سایر کاربران بتوانند شما را در ماتریکس با سهولت بیشتری پیدا کنند و به شما راهی برای تنظیم مجدد رمز عبور خود در آینده بدهد."; -"login_identity_server_info" = "ماتریکس سرورهای هویت‌سنجی را برای ردیابی اینکه کدام ایمیل‌ها و غیره متعلق به کدام شناسه‌های ماتریکس هستند فراهم می کند. در حال حاضر فقط https://matrix.org وجود دارد."; -"notice_video_attachment" = "پیوست ویدیویی"; -"notice_audio_attachment" = "پیوست صوتی"; -"notice_image_attachment" = "پیوست تصویر"; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ رمزگذاری سرتاسری را فعال کرد (الگوریتم ناشناخته %2$@)."; -"notice_encryption_enabled_ok" = "%@ رمزگذاری سرتاسری را فعال کرد."; -"notice_encrypted_message" = "پیام رمزگذاری شده"; -"notice_room_related_groups" = "گروه های مرتبط با این اتاق عبارتند از: %@"; -"notice_room_aliases_for_dm" = "نام های مستعار عبارتند از: %@"; -"notice_room_aliases" = "نام مستعار اتاق: %@"; -"notice_room_power_level_event_requirement" = "حداقل سطح قدرت مربوط به رویدادها عبارت است از:"; -"notice_room_power_level_acting_requirement" = "حداقل سطح قدرت که کاربر باید قبل از اقدام داشته باشد:"; -"notice_room_power_level_intro_for_dm" = "سطح قدرت اعضا عبارت است از:"; -"notice_room_power_level_intro" = "سطح قدرت اعضای اتاق عبارت است از:"; -"notice_room_join_rule_public_by_you_for_dm" = "شما اینجا را عمومی کردید."; -"notice_room_join_rule_public_by_you" = "شما اتاق را عمومی کردید."; -"notice_room_join_rule_public_for_dm" = "%@ اینجا را عمومی کرد."; -"notice_room_join_rule_public" = "%@ اتاق را عمومی کرد."; -"notice_room_join_rule_invite_by_you_for_dm" = "شما گفتگو را به حالت \"فقط با دعوت\" تنظیم کردید."; -"notice_room_join_rule_invite_by_you" = "شما اتاق را به حالت \"فقط با دعوت\" تنظیم کردید."; -"notice_room_join_rule_invite_for_dm" = "%@ گفتگو را به حالت \"فقط با دعوت\" تنظیم کرد."; -// New -"notice_room_join_rule_invite" = "%@ اتاق را به حالت \"فقط با دعوت\" تنظیم کرد."; -// Old -"notice_room_join_rule" = "قانون پیوستن: %@"; -"notice_room_created_for_dm" = "%@ پیوست."; -"notice_room_created" = "%@ اتاق را ایجاد و پیکربندی کرد."; -"notice_profile_change_redacted" = "%@ پروفایل خود را بروز کرد %@"; -"notice_event_redacted_reason" = " [علت: %@]"; -"notice_event_redacted_by" = " توسط %@"; -"notice_event_redacted" = "<%@ واکنش نشان داد>"; -"notice_room_topic_removed" = "%@ موضوع را حذف کرد"; -"notice_room_name_removed_for_dm" = "%@ نام را حذف کرد"; -"notice_room_name_removed" = "%@ نام اتاق را حذف کرد"; - -// Events formatter -"notice_avatar_changed_too" = "(آواتار هم تغییر کرد)"; -"unignore" = "عدم نادیده‌گیری"; -"ignore" = "چشم پوشی"; -"resume_call" = "از سرگیری"; -"end_call" = "پایان تماس"; -"reject_call" = "رد تماس"; -"answer_call" = "پاسخ دادن به تماس"; -"show_details" = "نمایش جزئیات"; -"cancel_download" = "لغو بارگیری"; -"cancel_upload" = "لغو بارگذاری"; -"select_all" = "انتخاب همه"; -"resend_message" = "ارسال مجدد پیام"; -"reset_to_default" = "تنظیم به حالت پیش فرض"; -"invite_user" = "دعوت کاربر ماتریکس"; -"capture_media" = "گرفتن عکس/فیلم"; -"attach_media" = "پیوست رسانه از کتابخانه"; -"select_account" = "یک حساب انتخاب کنید"; -"mention" = "اشاره"; -"start_video_call" = "شروع تماس ویدیویی"; -"start_voice_call" = "شروع تماس صوتی"; -"start_chat" = "شروع گفتگو"; -"set_admin" = "تنظیم مدیر"; -"set_moderator" = "تنظیم معاون"; -"set_default_power_level" = "تنظیم مجدد سطح قدرت"; -"set_power_level" = "تنظیم سطح قدرت"; -"submit_code" = "ارسال کد"; -"submit" = "ارسال"; -"sign_up" = "ثبت نام"; -"retry" = "تلاش مجدد"; -"dismiss" = "رد"; -"discard" = "رها کردن"; -"continue" = "ادامه"; -"close" = "بستن"; -"back" = "بازگشت"; -"abort" = "لغو"; -"yes" = "بله"; - -// Action -"no" = "خیر"; -"login_error_resource_limit_exceeded_contact_button" = "تماس با ادمین"; -"login_error_resource_limit_exceeded_message_contact" = "\n\nلطفاً برای ادامه استفاده از این سرویس با سرپرست سرویس خود تماس بگیرید."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "این سرور به محدودیت کاربر فعال ماهانه خود رسیده است."; -"login_error_resource_limit_exceeded_message_default" = "این سرور از یکی از محدودیت های منابع خود فراتر رفته است."; -"login_error_resource_limit_exceeded_title" = "از محدودیت منابع فراتر رفت"; -"login_desktop_device" = "دسکتاپ"; -"login_tablet_device" = "تبلت"; -"login_mobile_device" = "تلفن همراه"; -"login_error_forgot_password_is_not_supported" = "گذرواژه فراموش شده در حال حاضر پشتیبانی نمی شود"; -"register_error_title" = "ثبت نام انجام نشد"; -"login_invalid_param" = "پارامتر نامعتبر است"; -"login_leave_fallback" = "لغو"; -"login_use_fallback" = "استفاده از صفحه بازگشت"; -"login_error_login_email_not_yet" = "لینک ایمیل هنوز کلیک نشده است"; -"login_error_user_in_use" = "این نام کاربری قبلاً استفاده شده است"; -"login_error_limit_exceeded" = "درخواست‌های زیادی ارسال شده است"; -"login_error_not_json" = "حاوی JSON معتبر نبود"; -"login_error_bad_json" = "JSON بد شکل"; -"login_error_unknown_token" = "توکن دسترسی وارد شده معتبر نیست"; -"login_error_forbidden" = "نام کاربری / گذرواژه نامعتبر است"; -"login_error_registration_is_not_supported" = "ثبت نام در حال حاضر پشتیبانی نمی شود"; -"login_error_do_not_support_login_flows" = "در حال حاضر ما از روش ورود به سیستم تعریف شده توسط سرور پشتیبانی نمی کنیم"; -"login_error_no_login_flow" = "ما موفق به بازیابی اطلاعات احراز هویت از این سرور نشدیم"; -"login_error_title" = "ورود ناموفق بود"; -"login_prompt_email_token" = "لطفا کد اعتبارسنجی ایمیل خود را وارد کنید:"; -"login_email_placeholder" = "آدرس ایمیل"; -"login_display_name_placeholder" = "نام (به عنوان مثال محمد حسینی)"; -"login_optional_field" = "اختیاری"; -"login_password_placeholder" = "گذرواژه"; -"login_user_id_placeholder" = "شناسه ماترکیس (به عنوان مثال @bob:matrix.org یا Bob)"; -"login_identity_server_title" = "آدرس سرور هویت‌سنجی:"; -"login_home_server_info" = "سرور تمام مکالمات و داده‌های حساب شما را ذخیره می کند"; -"login_home_server_title" = "آدرس سرور:"; -"login_server_url_placeholder" = "URL (به عنوان مثال https://matrix.org)"; - -// Login Screen -"login_create_account" = "ایجاد حساب:"; -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "ماتریکس"; -"notification_settings_enable_notifications" = "فعال سازی اعلان‌ها"; - -// Notification settings screen -"notification_settings_disable_all" = "همه اعلان‌ها را غیرفعال کنید"; -"settings_title_notifications" = "اعلان‌ها"; - -// Settings screen -"settings_title_config" = "پیکربندی"; - -// contacts list screen -"invitation_message" = "من دوست دارم با شما با ماتریس گپ بزنم. لطفاً برای کسب اطلاعات بیشتر به وب سایت http://matrix.org مراجعه کنید."; - -// members list Screen - -// accounts list Screen - -// image size selection - -// invitation members list Screen - -// room creation dialog Screen - -// room info dialog Screen - -// room details dialog screen -"room_details_title" = "جزئیات اتاق"; -"login_error_must_start_http" = "آدرس باید با http[s]:// شروع شود"; - -// Login Screen -"login_error_already_logged_in" = "قبلاً وارد سیستم شده‌اید"; -"message_unsaved_changes" = "تغییرات ذخیره نشده‌ای وجود دارد. ترک کردن موجب از بین رفتن این تغییرات می‌شود."; -"unban" = "لغو تحریم"; -"ban" = "تحریم"; -"kick" = "اخراج"; -"invite" = "دعوت"; -"num_members_other" = "%@ کاربر"; -"num_members_one" = "%@ کاربر"; -"membership_ban" = "تحریم"; -"membership_leave" = "ترک کرد"; -"membership_invite" = "دعوت کرد"; -"create_account" = "ایجاد حساب"; -"login" = "ورود"; -"create_room" = "ایجاد اتاق"; - -// actions -"action_logout" = "خروج"; -"view" = "مشاهده"; -"delete" = "حذف"; -"share" = "اشتراک گذاری"; -"redact" = "حذف"; -"resend" = "ارسال مجدد"; -"copy_button_name" = "کپی"; -"send" = "ارسال"; -"leave" = "ترک"; -"save" = "ذخیره"; -"cancel" = "لغو"; - -// Room Screen - -// general errors - -// Home Screen - -// Last seen time - -// call events - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /console/src/main/res/values/strings.xml. -*/ - - -// titles - -// button names -"ok" = "خب"; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "پیام‌های آینده را از زمان ملحق شدن افراد برای همه قابل مشاهده کردید."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "شما تاریخچه آینده اتاق را از همان زمانی که به آن ملحق شده‌اند، برای همه اعضای اتاق قابل مشاهده کردید."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "شما پیام‌های آینده را از زمان دعوت شدن برای همه قابل مشاهده کردید."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "شما تاریخچه آینده اتاق را از همان زمانی که دعوت شده‌اند ، برای همه اعضای اتاق قابل مشاهده کردید."; -"notice_room_history_visible_to_members_by_you_for_dm" = "شما پیام‌های آینده را برای همه اعضای اتاق قابل مشاهده کردید."; -"notice_room_history_visible_to_anyone_by_you" = "شما تاریخچه آینده اتاق را برای همه قابل مشاهده کردید."; -"notice_room_history_visible_to_members_by_you" = "شما تاریخچه آینده اتاق را برای همه اعضای اتاق قابل مشاهده کردید."; -"notice_redaction_by_you" = "شما یک رویداد را مجدداً ویرایش کردید (شناسه: %@)"; -"notice_encryption_enabled_unknown_algorithm_by_you" = "رمزگذاری سرتاسری را فعال کردید (الگوریتم ناشناخته %@)."; -"notice_encryption_enabled_ok_by_you" = "رمزگذاری سرتاسری را فعال کردید."; -"notice_room_created_by_you" = "شما اتاق را ایجاد و پیکربندی کردید."; -"notice_profile_change_redacted_by_you" = "شما نمایه خود را به روز کردید %@"; -"notice_event_redacted_by_you" = " توسط شما"; -"notice_room_topic_removed_by_you" = "موضوع را حذف کردید"; -"notice_room_name_removed_by_you_for_dm" = "نام را حذف کردید"; -"notice_room_name_removed_by_you" = "نام اتاق را حذف کردید"; -"notice_conference_call_request_by_you" = "شما درخواست جلسه دادید"; -"notice_declined_video_call_by_you" = "شما تماس را رد کردید"; -"notice_ended_video_call_by_you" = "تماس را تمام کردید"; -"notice_answered_video_call_by_you" = "شما به تماس پاسخ دادید"; -"notice_placed_video_call_by_you" = "شما یک تماس ویدیویی برقرار کردید"; -"notice_placed_voice_call_by_you" = "شما یک تماس صوتی برقرار کردید"; -"notice_room_name_changed_by_you_for_dm" = "نام را به %@ تغییر دادید."; -"notice_room_name_changed_by_you" = "نام اتاق را به %@ تغییر دادید."; -"notice_topic_changed_by_you" = "شما موضوع را به \"%@\" تغییر دادید."; -"notice_display_name_removed_by_you" = "نام خود را حذف کردید"; -"notice_display_name_changed_from_by_you" = "نام خود را از %@ به %@ تغییر دادید"; -"notice_display_name_set_by_you" = "نام خود را به %@ تنظیم کردید"; -"notice_avatar_url_changed_by_you" = "آواتار خود را تغییر دادید"; -"notice_room_withdraw_by_you" = "شما دعوت %@ را پس گرفتید"; -"notice_room_ban_by_you" = "شما %@ را تحریم کردید"; -"notice_room_unban_by_you" = "شما %@ را از تحریم خارج کردید"; -"notice_room_kick_by_you" = "شما %@ را اخراج کردید"; -"notice_room_reject_by_you" = "شما دعوت را رد کردید"; -"notice_room_leave_by_you" = "خارج شدید"; -"notice_room_join_by_you" = "شما پیوستید"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "شما دعوت %@ را لغو کردید"; -"notice_room_third_party_revoked_invite_by_you" = "شما دعوت از %@ برای پیوستن به اتاق را لغو کردید"; -"notice_room_third_party_registered_invite_by_you" = "شما دعوت %@ را پذیرفتید"; -"notice_room_third_party_invite_by_you_for_dm" = "شما %@ را دعوت کردید"; -"notice_room_third_party_invite_by_you" = "شما دعوت‌نامه‌ای به %@ برای پیوستن به اتاق ارسال کرده‌اید"; -"notice_room_invite_you" = "%@ شما را دعوت کرد"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "شما %@ را دعوت کردید"; -"notice_conference_call_finished" = "جلسه به پایان رسید"; -"notice_conference_call_started" = "جلسه آغاز شد"; -"notice_conference_call_request" = "%@ درخواست جلسه مجازی کرد"; -"notice_declined_video_call" = "%@ تماس را رد کرد"; -"notice_ended_video_call" = "%@ به تماس پایان داد"; -"notice_answered_video_call" = "%@ به تماس پاسخ داد"; -"notice_placed_video_call" = "%@ تماس تصویری برقرار کرد"; -"notice_placed_voice_call" = "%@ تماس صوتی برقرار کرد"; -"notice_room_name_changed_for_dm" = "%@ نام را به %@ تغییر داد."; -"notice_room_name_changed" = "%@ نام اتاق را به %@ تغییر داد."; -"notice_topic_changed" = "%@ موضوع را به \"%@\" تغییر داد."; -"notice_display_name_removed" = "%@ نام خود را حذف کرد"; -"notice_display_name_changed_from" = "%@ نام خود را از %@ به %@ تغییر داد"; -"notice_display_name_set" = "%@ نام خود را به %@ تنظیم کرد"; -"notice_avatar_url_changed" = "%@ آواتار خود را تغییر داد"; -"notice_room_reason" = ". دلیل: %@"; -"notice_room_withdraw" = "%@ دعوت %@ را پس گرفت"; -"notice_room_ban" = "%@ %@ را تحریم کرد"; -"notice_room_unban" = "%@ %@ را از تحریم خارج کرد"; -"notice_room_kick" = "%@ %@ را اخراج کرد"; -"notice_room_reject" = "%@ دعوت را رد کرد"; -"notice_room_leave" = "%@ ترک کرد"; -"notice_room_join" = "%@ پیوست"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ دعوت %@ را لغو کرد"; -"notice_room_third_party_revoked_invite" = "%@ دعوت از %@ برای پیوستن به اتاق را لغو کرد"; -"notice_room_third_party_registered_invite" = "%@ دعوت %@ را پذیرفت"; -"notice_room_third_party_invite_for_dm" = "%@ %@ را دعوت کرد"; -"notice_room_third_party_invite" = "%@ برای پیوستن به اتاق به %@ دعوتنامه ارسال کرد"; - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /matrix-sdk/src/main/res/values/strings.xml. -*/ - -"notice_room_invite" = "%@ %@ را دعوت کرد"; -"language_picker_default_language" = "پیش فرض (%@)"; - -// Language picker -"language_picker_title" = "انتخاب زبان"; - -// Country picker -"country_picker_title" = "یک کشور را انتخاب کنید"; -"local_contacts_access_not_granted" = "کشف کاربران از دفترچه مخاطبین نیاز به دسترسی به مخاطبین شما دارد اما %@ اجازه استفاده از آنها را ندارد"; -"local_contacts_access_discovery_warning" = "برای کشف مخاطبی که در حال حاظر از ماتریکس استفاده می‌کند، %@ می تواند آدرس‌های ایمیل و شماره تلفن‌های موجود در دفترچه آدرس خود را به سرور هویت‌سنجی انتخابی شما ارسال کند. در صورت پشتیبانی، داده های شخصی قبل از ارسال هش می شوند - لطفا برای اطلاعات بیشتر سیاست حفظ حریم خصوصی سرور هویت‌سنجی خود را بررسی کنید."; -"local_contacts_access_discovery_warning_title" = "کشف کاربران"; -"microphone_access_not_granted_for_call" = "تماس ها نیاز به دسترسی به میکروفن دارند اما %@ اجازه استفاده از آن را ندارد"; - -// Permissions -"camera_access_not_granted_for_call" = "تماس های ویدئویی نیاز به دسترسی به دوربین دارند اما %@ اجازه استفاده از آن را ندارد"; -"ssl_homeserver_url" = "آدرس سرور: %@"; -"user_id_placeholder" = "مثال: @akbar:homeserver"; -"network_error_not_reachable" = "لطفاً اتصال شبکه خود را بررسی کنید"; -"power_level" = "سطح قدرت"; -"public" = "عمومی"; -"private" = "خصوصی"; -"not_supported_yet" = "در حال حاظر پشتیبانی نمی‌شود"; -"error_common_message" = "خطایی رخ داد لطفاً بعداً دوباره امتحان کنید."; -"error" = "خطا"; -"unsent" = "ارسال نشده"; - -// Others -"user_id_title" = "شناسه کاربری:"; -"e2e_passphrase_create" = "ایجاد عبارت عبور"; -"e2e_passphrase_not_match" = "عبارات عبور باید مطابقت داشته باشند"; -"e2e_passphrase_empty" = "عبارت عبور نباید خالی باشد"; -"e2e_passphrase_confirm" = "عبارت عبور را تأیید کنید"; -"e2e_export" = "ذخیره"; -"e2e_export_prompt" = "این فرآیند به شما امکان می دهد کلیدهای پیام هایی را که در اتاق های رمزگذاری شده دریافت کرده‌اید در یک فایل ذخیره کنید. سپس می توانید فایل را در آینده به یک کلاینت دیگر وارد کنید، بنابراین کلاینت همچنین می تواند این پیام ها را رمزگشایی کند.\nفایل ذخیره شده به هر کسی که می تواند آن را بخواند اجازه می دهد تا پیام‌های رمزگذاری شده‌ای را که می بینید رمزگشایی کند، بنابراین باید مراقب امنیت آن باشید."; - -// E2E export -"e2e_export_room_keys" = "کلیدهای اتاق را صادر کنید"; -"e2e_passphrase_enter" = "عبارت عبور را وارد کنید"; -"e2e_import" = "وارد كردن"; -"notice_room_created_by_you_for_dm" = "شما پیوستید."; -"default" = "پیش‌فرض"; -"offline" = "آفلاین"; - -// E2E import -"e2e_import_room_keys" = "ورود کلیدهای اتاق"; -"format_time_d" = "d"; -"format_time_h" = "h"; -"format_time_m" = "m"; - -// Time -"format_time_s" = "s"; -"search_searching" = "در حال جستجو ..."; - -// Search -"search_no_results" = "بدون نتیجه"; -"group_section" = "گروه‌ها"; - -// Groups -"group_invite_section" = "دعوت‌ها"; -"contact_local_contacts" = "مخاطبین محلی"; - -// Contacts -"contact_mx_users" = "کاربران ماتریکس"; -"attachment_e2e_keys_import" = "وارد كردن..."; -"attachment_e2e_keys_file_prompt" = "این پرونده شامل کلیدهای رمزگذاری کلاینت ماتریکس است.\nآیا می خواهید محتوای پرونده را مشاهده کنید یا کلیدهای موجود در آن را وارد کنید؟"; -"attachment_multiselection_original" = "اندازه واقعی"; -"attachment_multiselection_size_prompt" = "تصاویر به چه صورت ارسال شود:"; - -// Attachment -"attachment_size_prompt" = "می‌خواهید به چه صورت ارسال کنید:"; -"attachment_cancel_upload" = "بارگذاری لغو شود؟"; -"attachment_cancel_download" = "بارگیری لغو شود؟"; -"attachment_large" = "بزرگ: %@"; -"attachment_medium" = "متوسط: %@"; -"attachment_small" = "کوچک: %@"; -"attachment_original" = "اندازه واقعی: %@"; - -// Room members -"room_member_ignore_prompt" = "آیا مطمئن هستید که می خواهید همه پیام های این کاربر را پنهان کنید؟"; -"message_reply_to_message_to_reply_to_prefix" = "در پاسخ به"; -"message_reply_to_sender_sent_a_file" = "پرونده‌ای ارسال شد."; -"message_reply_to_sender_sent_an_audio_file" = "یک فایل صوتی ارسال شد."; - -// Reply to message -"message_reply_to_sender_sent_an_image" = "یک تصویر ارسال شد."; -"message_reply_to_sender_sent_a_video" = "یک ویدیو ارسال شد."; -"room_no_conference_call_in_encrypted_rooms" = "جلسات در اتاق های رمزگذاری شده پشتیبانی نمی شوند"; -"room_no_power_to_create_conference_call" = "برای شروع جلسه در این اتاق نیاز به دسترسی دعوت دارید"; -"room_left_for_dm" = "خارج شدید"; -"room_left" = "شما از اتاق خارج شدید"; -"room_error_timeline_event_not_found" = "برنامه سعی داشت نقطه خاصی را در پیام‌های این اتاق بارگیری کند اما نتوانست آن را پیدا کند"; -"room_error_timeline_event_not_found_title" = "خطا در بارگیری موقعیت پیام‌ها"; -"room_error_cannot_load_timeline" = "خطا در بارگیری پیام‌ها"; -"room_error_topic_edition_not_authorized" = "شما مجاز به ویرایش موضوع در اتاق نیستید"; -"room_error_name_edition_not_authorized" = "شما مجاز به ویرایش این نام اتاق نیستید"; -"room_error_join_failed_empty_room" = "در حال حاضر امکان عضویت مجدد در یک اتاق خالی وجود ندارد."; -"room_error_join_failed_title" = "پیوستن به اتاق با خطا مواجه شد"; - -// Room -"room_please_select" = "لطفا یک اتاق انتخاب کنید"; -"room_creation_participants_placeholder" = "(به عنوان مثال، @ali:homeserver1; @akbar:homeserver1; ...)"; -"room_creation_participants_title" = "شركت كنندگان:"; -"room_creation_alias_placeholder_with_homeserver" = "(به عنوان مثال، #foo%@)"; -"room_creation_alias_placeholder" = "(به عنوان مثال #foo:example.org)"; -"room_creation_alias_title" = "نام مستعار اتاق:"; -"room_creation_name_placeholder" = "به عنوان مثال(گروه ناهار)"; - -// Room creation -"room_creation_name_title" = "نام اتاق:"; -"account_error_push_not_allowed" = "اعلان مجاز نیست"; -"account_error_msisdn_wrong_description" = "به نظر نمی رسد این شماره تلفن معتبری باشد"; -"account_error_msisdn_wrong_title" = "شماره تلفن نامعتبر"; -"account_error_email_wrong_description" = "به نظر نمی رسد این یک آدرس ایمیل معتبر باشد"; -"account_error_email_wrong_title" = "آدرس ایمیل نامعتبر است"; -"account_error_matrix_session_is_not_opened" = "نشست ماتریس باز نیست"; -"account_error_picture_change_failed" = "تغییر تصویر انجام نشد"; -"account_error_display_name_change_failed" = "تغییر نام ناموفق بود"; -"account_msisdn_validation_error" = "تأیید شماره تلفن امکان پذیر نیست."; -"account_msisdn_validation_message" = "ما یک پیامک با کد فعال‌سازی ارسال کرده‌ایم. لطفاً این کد را در زیر وارد کنید."; -"account_msisdn_validation_title" = "در انتظار تأیید"; -"room_event_encryption_verify_message" = "برای تأیید اینکه این نشست قابل اعتماد است، لطفاً با استفاده از روشهای دیگر (مثلاً به صورت حضوری یا تماس تلفنی) با مالک آن تماس بگیرید و از آنها سوال کنید که آیا کلیدی که در تنظیمات کاربر خود برای این نشست می بینند با کلید زیر مطابقت دارد:\n\n نام نشست: %@\nشناسه نشست: %@\nکلید نشست: %@\n\nدر صورت مطابقت ، دکمه تأیید را در زیر فشار دهید. در صورت عدم تطابق، شخص ثالثی این نشست را رهگیری می کند و شما قاعدتا باید دکمه لیست سیاه را فشار دهید.\n\nدر آینده این روند تأیید پیچیده تر خواهد بود."; -"account_email_validation_error" = "تأیید آدرس ایمیل انجام نشد. لطفاً ایمیل خود را بررسی کرده و روی پیوند حاوی آن کلیک کنید. پس از انجام این کار ، روی ادامه کلیک کنید"; -"account_email_validation_message" = "لطفاً ایمیل خود را بررسی کرده و روی پیوند حاوی آن کلیک کنید. پس از انجام این کار ، روی ادامه کلیک کنید."; -"account_email_validation_title" = "در انتظار تایید"; -"account_linked_emails" = "ایمیل های متصل شده"; -"account_link_email" = "اتصال به ایمیل"; - -// Account -"account_save_changes" = "ذخیره تغییرات"; -"room_event_encryption_verify_ok" = "تأیید"; -"room_event_encryption_verify_title" = "تایید نشست\n\n"; -"room_event_encryption_info_unblock" = "خروج از لیست سیاه"; -"room_event_encryption_info_block" = "لیست سیاه"; -"room_event_encryption_info_unverify" = "تأیید نکردن"; -"room_event_encryption_info_verify" = "تأیید کنید ..."; -"room_event_encryption_info_device_blocked" = "در لیست سیاه قرار گرفت"; -"room_event_encryption_info_device_not_verified" = "تأیید نشده است"; -"room_event_encryption_info_device_verified" = "تأیید شده"; -"room_event_encryption_info_device_fingerprint" = "اثر انگشت Ed25519\n"; -"room_event_encryption_info_device_verification" = "تأیید هویت\n"; -"room_event_encryption_info_device_id" = "شناسه\n"; -"room_event_encryption_info_device_name" = "نام عمومی\n"; -"room_event_encryption_info_device_unknown" = "نشست ناشناخته\n"; -"room_event_encryption_info_device" = "\nاطلاعات نشست ارسال کننده\n"; -"room_event_encryption_info_event_none" = "هیچ یک"; -"room_event_encryption_info_event_unencrypted" = "رمزگذاری نشده"; -"room_event_encryption_info_event_decryption_error" = "خطای رمزگشایی\n"; -"room_event_encryption_info_event_session_id" = "شناسه جلسه\n"; -"room_event_encryption_info_event_algorithm" = "الگوریتم\n"; -"room_event_encryption_info_event_fingerprint_key" = "کلید اثر انگشت Ed25519 ادعا شده\n"; -"room_event_encryption_info_event_identity_key" = "کلید Curve25519\n"; -"room_event_encryption_info_event_user_id" = "شناسه کاربر\n"; -"room_event_encryption_info_event" = "اطلاعات رویداد\n"; - -// Encryption information -"room_event_encryption_info_title" = "اطلاعات رمزنگاری سرتاسری\n\n"; -"device_details_delete_prompt_message" = "این عملیات نیاز به احراز هویت مجدد دارد.\nبرای ادامه ، لطفاً گذرواژه خود را وارد کنید."; -"device_details_delete_prompt_title" = "احراز هویت"; -"device_details_rename_prompt_message" = "نام عمومی یک نشست برای افرادی که با آنها ارتباط برقرار می کنید قابل مشاهده است"; -"device_details_rename_prompt_title" = "نام نشست"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_last_seen" = "آخرین بازدید\n"; -"device_details_identifier" = "شناسه\n"; -"device_details_name" = "نام عمومی\n"; - -// Devices -"device_details_title" = "اطلاعات نشست\n"; -"notification_settings_room_rule_title" = "اتاق: %@"; -"settings_enter_validation_token_for" = "توکن فعال‌سازی را برای %@ وارد کنید:"; -"settings_enable_push_notifications" = "فعال‌سازی اعلان"; -"settings_enable_inapp_notifications" = "فعال‌سازی اعلان درون برنامه ای"; - -// Settings -"settings" = "تنظیمات"; -"room_displayname_more_than_two_members" = "%@ و %@ نفر دیگر"; -"room_displayname_two_members" = "%@ و %@"; -"notice_crypto_unable_to_decrypt" = "** رمزگشایی امکان پذیر نیست: %@ **"; -"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" = "%@ پیام‌های آینده را برای همه اعضای اتاق قابل مشاهده کرد."; -"notice_room_history_visible_to_members" = "%@ تاریخچه آینده اتاق را برای همه اعضای اتاق قابل مشاهده کرد."; -"notice_room_history_visible_to_anyone" = "%@ تاریخچه آینده اتاق را برای همه قابل مشاهده کرد."; -"notice_error_unknown_event_type" = "نوع رویداد ناشناخته"; -"notice_error_unexpected_event" = "رویداد غیرمنتظره"; -"notice_error_unsupported_event" = "رویداد پشتیبانی نشده"; -"notice_redaction" = "%@ یک رویداد را تغییر داد (شناسه: %@)"; -"notice_feedback" = "بازخورد (شناسه: %@): %@"; -"notice_unsupported_attachment" = "پیوست پشتیبانی نشده: %@"; -"notice_invalid_attachment" = "پیوست نامعتبر"; -"notice_file_attachment" = "پیوست پرونده"; -"notice_location_attachment" = "پیوست مکان"; -"call_transfer_to_user" = "انتقال به %@"; -"call_consulting_with_user" = "تماس با %@"; -"call_video_with_user" = "تماس تصویری با %@"; -"call_voice_with_user" = "تماس صوتی با %@"; -"call_ringing" = "در حال زنگ خوردن…"; -"microphone_access_not_granted_for_voice_message" = "جهت ارسال پیام صوتی نیاز به دسترسی به میکروفون وجود دارد اما %@ دسترسی استفاده از آن را ندارد"; -"e2e_passphrase_too_short" = "کلمه عبور بیش از حد کوتاه است (حداقل می‌بایست %d کاراکتر باشد)"; -"message_reply_to_sender_sent_a_voice_message" = "یک پیام صوتی ارسال کنید."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/fi.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/fi.lproj/MatrixKit.strings deleted file mode 100644 index 08a9690f9..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/fi.lproj/MatrixKit.strings +++ /dev/null @@ -1,151 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Luo tili:"; -"login_server_url_placeholder" = "URL (esim. https://matrix.org)"; -"login_home_server_title" = "Kotipalvelin:"; -"login_identity_server_title" = "Identiteettipalvelin:"; -"view" = "Näytä"; -"back" = "Takaisin"; -"continue" = "Jatka"; -"leave" = "Poistu"; -"invite" = "Kutsu"; -"retry" = "Yritä uudelleen"; -"cancel" = "Peruuta"; -"save" = "Tallenna"; -"login_password_placeholder" = "Salasana"; -"login_optional_field" = "valinnainen"; -"login_home_server_info" = "Kotipalvelin tallentaa kaikki keskustelu- ja tilitietosi"; -"login_display_name_placeholder" = "Näyttönimi (esim. Matti Meikäläinen)"; -"login_email_placeholder" = "Sähköpostiosoite"; -"login_error_title" = "Kirjautuminen epäonnistui"; -"login_error_registration_is_not_supported" = "Rekisteröinti ei ole tuettu tällä hetkellä"; -"login_error_forbidden" = "Virheellinen käyttäjätunnus tai salasana"; -"login_error_limit_exceeded" = "Liian monta pyyntöä on lähetetty"; -"login_leave_fallback" = "Peruuta"; -"register_error_title" = "Rekisteröinti epäonnistui"; -"login_mobile_device" = "Mobiili"; -"login_tablet_device" = "Tabletti"; -"login_desktop_device" = "Työpöytä"; -"close" = "Sulje"; -"select_account" = "Valitse tili"; -"invite_user" = "Kutsu Matrix-käyttäjä"; -"select_all" = "Valitse kaikki"; -"cancel_upload" = "Peruuta lähetys"; -"cancel_download" = "Peruuta lataus"; -"show_details" = "Näytä tiedot"; -"answer_call" = "Vastaa puheluun"; -"reject_call" = "Hylkää puhelu"; -"end_call" = "Lopeta puhelu"; -"notice_event_redacted_reason" = " [syy: %@]"; -"notice_encrypted_message" = "Salattu viesti"; -"notice_image_attachment" = "kuvaliite"; -"notice_audio_attachment" = "ääniliite"; -"notice_video_attachment" = "videoliite"; -"notice_location_attachment" = "sijaintiliite"; -"notice_file_attachment" = "tiedostoliite"; -"notice_invalid_attachment" = "virheellinen liite"; -// room display name -"room_displayname_empty_room" = "Tyhjä huone"; -"room_displayname_two_members" = "%@ ja %@"; -// Settings -"settings" = "Asetukset"; -"notification_settings_room_rule_title" = "Huone: '%@'"; -"device_details_name" = "Julkinen nimi\n"; -"device_details_last_seen" = "Viimeksi nähty\n"; -"device_details_rename_prompt_message" = "Istunnon julkinen nimi näkyy henkilöille, joiden kanssa keskustelet"; -"room_event_encryption_info_event_algorithm" = "Algoritmi\n"; -"room_event_encryption_info_event_session_id" = "Istunnon tunnus\n"; -"room_event_encryption_info_device_unknown" = "tuntematon istunto\n"; -"room_event_encryption_info_device_name" = "Julkinen nimi\n"; -// Account -"account_save_changes" = "Tallenna muutokset"; -"account_error_matrix_session_is_not_opened" = "Matrix-istunto ei ole avattuna"; -"account_error_email_wrong_title" = "Virheellinen sähköpostiosoite"; -"account_error_email_wrong_description" = "Tämä ei vaikuta kelvolliselta sähköpostiosoitteelta"; -"account_error_msisdn_wrong_title" = "Virheellinen puhelinnumero"; -"account_error_msisdn_wrong_description" = "Tämä ei vaikuta kelvolliselta puhelinnumerolta"; -// Room creation -"room_creation_name_title" = "Huoneen nimi:"; -// Room -"room_please_select" = "Valitse huone"; -"room_error_join_failed_title" = "Liittyminen huoneeseen epäonnistui"; -"room_left" = "Poistuit huoneesta"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "lähetti kuvan."; -"message_reply_to_sender_sent_a_video" = "lähetti videon."; -"message_reply_to_sender_sent_an_audio_file" = "lähetti äänitiedoston."; -"message_reply_to_sender_sent_a_file" = "lähetti tiedoston."; -"attachment_original" = "Todellinen koko: %@"; -"attachment_cancel_download" = "Perutaanko lataus?"; -"attachment_cancel_upload" = "Perutaanko lähetys?"; -"attachment_multiselection_original" = "Todellinen koko"; -"attachment_e2e_keys_import" = "Tuo..."; -// Contacts -"contact_mx_users" = "Matrix-käyttäjät"; -"contact_local_contacts" = "Paikalliset yhteystiedot"; -"group_section" = "Ryhmät"; -// Search -"search_no_results" = "Ei tuloksia"; -"search_searching" = "Haku käynnissä..."; -"e2e_import" = "Tuo"; -"e2e_export" = "Vie"; -"error" = "Virhe"; -"default" = "oletus"; -"private" = "Yksityinen"; -"public" = "Julkinen"; -"network_error_not_reachable" = "Tarkista verkkoyhteytesi"; -// Country picker -"country_picker_title" = "Valitse maa"; -// Language picker -"language_picker_title" = "Valitse kieli"; -"language_picker_default_language" = "Oletus (%@)"; -"notice_answered_video_call" = "%@ vastasi puheluun"; -"notice_ended_video_call" = "%@ lopetti puhelun"; -// button names -"ok" = "OK"; -"send" = "Lähetä"; -"copy_button_name" = "Kopioi"; -"redact" = "Poista"; -"share" = "Jaa"; -"delete" = "Poista"; -// actions -"action_logout" = "Kirjaudu ulos"; -"create_room" = "Luo huone"; -"login" = "Kirjaudu sisään"; -"create_account" = "Luo tili"; -// Login Screen -"login_error_already_logged_in" = "Jo sisäänkirjautuneena"; -// room details dialog screen -"room_details_title" = "Huoneen tiedot"; -"settings_title_notifications" = "Ilmoitukset"; -// Notification settings screen -"notification_settings_disable_all" = "Poista käytöstä kaikki ilmoitukset"; -"notification_settings_enable_notifications" = "Käytä ilmoituksia"; -"notification_settings_always_notify" = "Ilmoita aina"; -"notification_settings_never_notify" = "Älä ilmoita koskaan"; -"notification_settings_select_room" = "Valitse huone"; -// gcm section -"settings_config_home_server" = "Kotipalvelin: %@"; -"settings_config_identity_server" = "Identiteettipalvelin: %@"; -// call string -"call_waiting" = "Odottaa..."; -"call_connecting" = "Puhelu yhdistyy..."; -"call_ended" = "Puhelu loppui"; -"call_ring" = "Soitetaan..."; -"incoming_video_call" = "Saapuva videopuhelu"; -"incoming_voice_call" = "Saapuva äänipuhelu"; -"call_invite_expired" = "Puhelukutsu vanhentui"; -"ssl_logout_account" = "Kirjaudu ulos"; -"ssl_fingerprint_hash" = "Sormenjälki (%@):"; -"room_event_encryption_info_verify" = "Vahvista..."; -"room_event_encryption_info_unverify" = "Poista vahvistus"; -"room_event_encryption_verify_title" = "Varmenna istunto\n\n"; -"room_event_encryption_verify_ok" = "Vahvista"; -"account_email_validation_error" = "Sähköpostin vahvistaminen epäonnistui. Tarkistathan sähköpostisi ja seuraa linkkiä, joka on lähettämässämme viestissä. Sen jälkeen, täppää jatka"; -"account_msisdn_validation_title" = "Vahvistus meneillään"; -"account_msisdn_validation_error" = "Puhelinnumeron vahvistus epäonnistui."; -"account_error_display_name_change_failed" = "Näyttönimen vaihtaminen epäonnistui"; -"account_error_picture_change_failed" = "Kuvan vaihtaminen epäonnistui"; -"ssl_could_not_verify" = "Etäpalvelimen identiteetin vahvistaminen epäonnistui."; -"login_user_id_placeholder" = "Matrix ID (esim. @matti:matrix.org tai pelkästään matti)"; -"login_identity_server_info" = "Matrix tarjoaa identiteettipalvelimen joka osaa kertaa mikä sähköpostiosoite tai puhelinnumero vastaa mitäkin Matrix ID:tä. Vain https://matrix.org on tällä hetkellä käytettävissä."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/fr.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/fr.lproj/MatrixKit.strings deleted file mode 100644 index 380b96677..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/fr.lproj/MatrixKit.strings +++ /dev/null @@ -1,481 +0,0 @@ -"view" = "Afficher"; -"back" = "Retour"; -"continue" = "Continuer"; -"leave" = "Quitter"; -"invite" = "Inviter"; -"retry" = "Réessayer"; -"cancel" = "Annuler"; -"save" = "Enregistrer"; -// room details dialog screen -"room_details_title" = "Détails du salon"; -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Créer un compte :"; -"login_server_url_placeholder" = "URL (par ex. https://matrix.org)"; -"login_home_server_title" = "URL du serveur d’accueil :"; -"login_home_server_info" = "Votre serveur d’accueil stocke toutes vos discussions et les données de votre compte"; -"login_identity_server_title" = "URL du serveur d’identité :"; -"login_identity_server_info" = "Matrix fournit des serveurs d’identité pour lier les e-mail, etc aux identifiants Matrix. Seul https://matrix.org existe pour l’instant."; -"login_user_id_placeholder" = "Identifiant Matrix (par ex. @bob:matrix.org ou bob)"; -"login_password_placeholder" = "Mot de passe"; -"login_optional_field" = "facultatif"; -"login_display_name_placeholder" = "Nom d’affichage (par ex. Bob Obson)"; -"login_email_info" = "Définir une adresse e-mail permet aux autres utilisateurs de vous retrouver plus facilement sur Matrix et vous permettra de réinitialiser votre mot de passe."; -"login_email_placeholder" = "Adresse e-mail"; -"login_prompt_email_token" = "Veuillez saisir votre jeton de validation d’e-mail :"; -"login_error_title" = "Échec d’authentification"; -"login_error_no_login_flow" = "Échec de la récupération des informations d’authentification depuis ce serveur d’accueil"; -"login_error_do_not_support_login_flows" = "Aucun des parcours d’authentification définis par ce serveur d'accueil n’est pris en charge pour le moment"; -"login_error_registration_is_not_supported" = "L’inscription n'est pas prise en charge pour le moment"; -"login_error_forbidden" = "Nom d’utilisateur ou mot de passe invalide"; -"login_error_unknown_token" = "Le jeton d’accès spécifié n'est pas reconnu"; -"login_error_bad_json" = "JSON mal formaté"; -"login_error_not_json" = "Ne contenait pas de JSON valide"; -"login_error_limit_exceeded" = "Trop de requêtes ont été envoyées"; -"login_error_user_in_use" = "Ce nom d’utilisateur est déjà utilisé"; -"login_error_login_email_not_yet" = "Vous n’avez pas encore cliqué sur le lien dans l’e-mail"; -"login_use_fallback" = "Utiliser la page de secours"; -"login_leave_fallback" = "Annuler"; -"login_invalid_param" = "Paramètre invalide"; -"register_error_title" = "Échec lors de l’inscription"; -"login_error_forgot_password_is_not_supported" = "La réinitialisation du mot de passe n’est pas prise en charge pour le moment"; -// Action -"no" = "Non"; -"yes" = "Oui"; -"abort" = "Abandonner"; -"close" = "Fermer"; -"discard" = "Abandonner"; -"dismiss" = "Ignorer"; -"sign_up" = "S’inscrire"; -"submit" = "Valider"; -"submit_code" = "Envoyer le code"; -"set_default_power_level" = "Réinitialiser le rang"; -"set_moderator" = "Nommer modérateur"; -"set_admin" = "Nommer administrateur"; -"start_chat" = "Nouvelle conversation privée"; -"start_voice_call" = "Commencer un appel audio"; -"start_video_call" = "Commencer un appel vidéo"; -"mention" = "Mentionner"; -"select_account" = "Sélectionner un compte"; -"attach_media" = "Joindre un média de la médiathèque"; -"capture_media" = "Prendre une photo/vidéo"; -"invite_user" = "Inviter un utilisateur matrix"; -"reset_to_default" = "Réinitialiser aux valeurs par défaut"; -"resend_message" = "Renvoyer le message"; -"select_all" = "Tout sélectionner"; -"cancel_upload" = "Annuler l’envoi"; -"cancel_download" = "Annuler le téléchargement"; -"show_details" = "Afficher les détails"; -"answer_call" = "Répondre à l’appel"; -"reject_call" = "Rejeter l’appel"; -"end_call" = "Terminer l’appel"; -"ignore" = "Ignorer"; -"unignore" = "Ne plus ignorer"; -// Events formatter -"notice_avatar_changed_too" = "(l’avatar a aussi changé)"; -"notice_room_name_removed" = "%@ a supprimé le nom du salon"; -"notice_room_topic_removed" = "%@ a supprimé le sujet"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " par %@"; -"notice_event_redacted_reason" = " [raison : %@]"; -"notice_profile_change_redacted" = "%@ ont mis à jour leur profil %@"; -"notice_room_created" = "%@ a créé et configuré le salon."; -"notice_room_join_rule" = "La règle pour rejoindre le salon est : %@"; -"notice_room_power_level_intro" = "Les rangs des membres du salon sont :"; -"notice_room_power_level_acting_requirement" = "Le rang minimum qu’un utilisateur doit avoir pour interagir est :"; -"notice_room_power_level_event_requirement" = "Le rang minimum lié aux événements est :"; -"notice_room_aliases" = "Les alias du salon sont : %@"; -"notice_room_related_groups" = "Les groupes associés à ce salon sont : %@"; -"notice_encrypted_message" = "Message chiffré"; -"notice_encryption_enabled" = "%@ a activé le chiffrement de bout en bout (algorithme %@)"; -"notice_image_attachment" = "image en pièce-jointe"; -"notice_audio_attachment" = "audio en pièce-jointe"; -"notice_video_attachment" = "vidéo en pièce-jointe"; -"notice_file_attachment" = "fichier en pièce-jointe"; -"notice_invalid_attachment" = "pièce-jointe non valide"; -"notice_unsupported_attachment" = "Pièce-jointe non prise en charge : %@"; -"notice_redaction" = "%@ a supprimé un événement (id : %@)"; -"notice_error_unsupported_event" = "Évènement non pris en charge"; -"notice_error_unexpected_event" = "Événement inattendu"; -"notice_error_unknown_event_type" = "Type d’événement inconnu"; -"notice_room_history_visible_to_anyone" = "%@ a rendu l’historique futur du salon visible à tout le monde."; -"notice_room_history_visible_to_members" = "%@ a rendu l’historique futur du salon visible à tous les membres du salon."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ a rendu l’historique futur du salon visible à tous les membres, à partir du moment où ils ont été invités."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ a rendu l’historique futur du salon visible à tous les membres, à partir de leur arrivée."; -"notice_crypto_unable_to_decrypt" = "** Déchiffrement impossible : %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "La session de l’expéditeur ne nous a pas envoyé les clés pour ce message."; -"notice_sticker" = "autocollant"; -// room display name -"room_displayname_empty_room" = "Salon vide"; -"room_displayname_two_members" = "%@ et %@"; -"room_displayname_more_than_two_members" = "%@ et %u autres"; -// Settings -"settings" = "Paramètres"; -"settings_enable_inapp_notifications" = "Activer les notifications dans l’application"; -"settings_enable_push_notifications" = "Activer les notifications push"; -"settings_enter_validation_token_for" = "Saisir le jeton de validation pour %@ :"; -"notification_settings_room_rule_title" = "Salon : « %@ »"; -// Devices -"device_details_title" = "Informations sur la session\n"; -"device_details_name" = "Nom public\n"; -"device_details_identifier" = "Identifiant\n"; -"device_details_last_seen" = "Vu pour la dernière fois\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "Le nom public de la session est visible par les personnes avec qui vous communiquez"; -"device_details_delete_prompt_title" = "Authentification"; -"device_details_delete_prompt_message" = "Cette opération requiert une nouvelle authentification.\nPour poursuivre, saisissez votre mot de passe."; -// Encryption information -"room_event_encryption_info_title" = "Informations sur le chiffrement de bout en bout\n\n"; -"room_event_encryption_info_event" = "Informations sur l’événement\n"; -"room_event_encryption_info_event_user_id" = "Identifiant utilisateur\n"; -"room_event_encryption_info_event_identity_key" = "Clé d’identité Curve25519\n"; -"room_event_encryption_info_event_fingerprint_key" = "Clé d’empreinte Ed25519 déclarée\n"; -"room_event_encryption_info_event_algorithm" = "Algorithme\n"; -"room_event_encryption_info_event_session_id" = "Identifiant de session\n"; -"room_event_encryption_info_event_decryption_error" = "Erreur de déchiffrement\n"; -"room_event_encryption_info_event_unencrypted" = "non chiffré"; -"room_event_encryption_info_event_none" = "aucun"; -"room_event_encryption_info_device" = "\nInformations sur la session de l’expéditeur\n"; -"room_event_encryption_info_device_unknown" = "session inconnue\n"; -"room_event_encryption_info_device_name" = "Nom public\n"; -"room_event_encryption_info_device_id" = "Identifiant\n"; -"room_event_encryption_info_device_verification" = "Vérification\n"; -"room_event_encryption_info_device_fingerprint" = "Empreinte Ed25519\n"; -"room_event_encryption_info_device_verified" = "Vérifié"; -"room_event_encryption_info_device_not_verified" = "NON vérifié"; -"room_event_encryption_info_device_blocked" = "Sur liste noire"; -"room_event_encryption_info_verify" = "Vérifier…"; -"room_event_encryption_info_unverify" = "Annuler la vérification"; -"room_event_encryption_info_block" = "Ajouter à la liste noire"; -"room_event_encryption_info_unblock" = "Supprimer de la liste noire"; -"room_event_encryption_verify_title" = "Vérifier la session\n\n"; -"room_event_encryption_verify_message" = "Pour vérifier que cette session est fiable, contactez son propriétaire par un autre moyen (par ex. en personne ou au téléphone) et demandez-lui si la clé qu’il voit dans ses paramètres utilisateur pour cette session est identique à la clé ci-dessous :\n\n\tNom de la session : %@\n\tIdentifiant de la session : %@\n\tClé de la session : %@\n\nSi les clés sont identiques, cliquez sur le bouton vérifier ci-dessous. Sinon, quelqu’un est probablement en train d’intercepter cette session et vous devriez plutôt l’ajouter à la liste noire.\n\nÀ l'avenir, ce processus de vérification sera plus élaboré."; -"room_event_encryption_verify_ok" = "Vérifier"; -// Account -"account_save_changes" = "Enregistrer les modifications"; -"account_link_email" = "Lier un e-mail"; -"account_linked_emails" = "E-mail liés"; -"account_email_validation_title" = "Vérification en attente"; -"account_email_validation_message" = "Vérifiez vos e-mails et cliquez sur le lien fourni. Ensuite, cliquez sur continuer."; -"account_email_validation_error" = "Impossible de vérifier l'adresse e-mail. Vérifiez vos e-mails et cliquez sur le lien fourni. Ensuite, cliquez sur continuer"; -"account_msisdn_validation_title" = "Vérification en attente"; -"account_msisdn_validation_message" = "Nous vous avons envoyé un SMS avec un code d’activation. Veuillez le saisir ci-dessous."; -"account_msisdn_validation_error" = "Impossible de vérifier le numéro de téléphone."; -"account_error_display_name_change_failed" = "Échec de modification du nom d’affichage"; -"account_error_picture_change_failed" = "Échec de modification de l’image"; -"account_error_matrix_session_is_not_opened" = "La session Matrix n’est pas ouverte"; -"account_error_email_wrong_title" = "Adresse e-mail non valide"; -"account_error_email_wrong_description" = "L’adresse e-mail ne semble pas valide"; -"account_error_msisdn_wrong_title" = "Numéro de téléphone non valide"; -"account_error_msisdn_wrong_description" = "Le numéro de téléphone ne semble pas valide"; -// Room creation -"room_creation_name_title" = "Nom du salon :"; -"room_creation_name_placeholder" = "(par ex. groupeDej)"; -"room_creation_alias_title" = "Alias du salon :"; -"room_creation_alias_placeholder" = "(par ex. #foo:exemple.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(par ex. #foo%@)"; -"room_creation_participants_title" = "Membres :"; -"room_creation_participants_placeholder" = "(par ex. @bob:serveurdaccueil1 ; @john:serveurdaccueil2...)"; -// Room -"room_please_select" = "Sélectionnez un salon"; -"room_error_join_failed_title" = "Échec de l’inscription au salon"; -"room_error_join_failed_empty_room" = "Il est impossible pour le moment de rejoindre un salon vide."; -"room_error_name_edition_not_authorized" = "Vous n’êtes pas autorisé à modifier le nom du salon"; -"room_error_topic_edition_not_authorized" = "Vous n’êtes pas autorisé à modifier le sujet du salon"; -"room_error_cannot_load_timeline" = "Échec du chargement du fil de discussion"; -"room_error_timeline_event_not_found_title" = "Échec du chargement de la position dans le fil de discussion"; -"room_error_timeline_event_not_found" = "L’application a tenté de charger un instant précis dans l’historique du salon, mais ne l’a pas trouvée"; -"room_left" = "Vous avez quitté le salon"; -"room_no_power_to_create_conference_call" = "Des permissions sont requises pour inviter ou démarrer une téléconférence dans ce salon"; -"room_no_conference_call_in_encrypted_rooms" = "Les téléconférences ne sont pas prises en charges dans les salons chiffrés"; -// Room members -"room_member_ignore_prompt" = "Voulez-vous vraiment masquer tous les messages de cet utilisateur ?"; -"room_member_power_level_prompt" = "Vous ne pourrez pas annuler cette modification car vous promouvez cet utilisateur au même rang que le vôtre.\nEn êtes-vous sûr ?"; -// Attachment -"attachment_size_prompt" = "Voulez-vous envoyer au format :"; -"attachment_original" = "Taille réelle (%@)"; -"attachment_small" = "Petit (~%@)"; -"attachment_medium" = "Moyen (~%@)"; -"attachment_large" = "Grand (~%@)"; -"attachment_cancel_download" = "Annuler le téléchargement ?"; -"attachment_cancel_upload" = "Annuler l’envoi ?"; -"attachment_multiselection_size_prompt" = "Voulez-vous envoyer l’image au format :"; -"attachment_multiselection_original" = "Taille réelle"; -"attachment_e2e_keys_file_prompt" = "Ce fichier contient des clés de chiffrement exportées d’un client Matrix.\nVoulez-vous voir le contenu du fichier ou importer les clés qu'il contient ?"; -"attachment_e2e_keys_import" = "Importer…"; -// Contacts -"contact_mx_users" = "Utilisateurs Matrix"; -"contact_local_contacts" = "Contacts locaux"; -// Groups -"group_invite_section" = "Invitations"; -"group_section" = "Groupes"; -// Search -"search_no_results" = "Aucun résultat"; -"search_searching" = "Recherche en cours…"; -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "h"; -"format_time_d" = "j"; -// E2E import -"e2e_import_room_keys" = "Importer les clés du salon"; -"e2e_import_prompt" = "Ce processus permet d’importer les clés de chiffrement que vous avez précédemment exportées d’un autre client Matrix. Vous pourrez ensuite déchiffrer tous les messages que l’autre client pouvait déchiffrer.\nLe fichier exporté est protégé par une phrase secrète. Entrez la phrase secrète ci-dessous pour déchiffrer le fichier."; -"e2e_import" = "Importer"; -"e2e_passphrase_enter" = "Entrer la phrase secrète"; -// E2E export -"e2e_export_room_keys" = "Exporter les clés de salon"; -"e2e_export_prompt" = "Ce processus permet d’exporter vers un fichier local les clés des messages que vous avez reçu sur les salons chiffrés. Vous pourrez ensuite importer ce fichier dans un autre client Matrix, pour qu’il puisse déchiffrer aussi ces messages.\nLe fichier exporté permettra à tous ceux qui y ont accès de déchiffrer tous les messages chiffrés que vous pouvez voir, donc vous devriez le conserver dans un endroit sûr."; -"e2e_export" = "Exporter"; -"e2e_passphrase_confirm" = "Confirmer la phrase secrète"; -"e2e_passphrase_empty" = "La phrase secrète ne peut pas être vide"; -"e2e_passphrase_not_match" = "Les phrases secrètes doivent être identiques"; -// Others -"user_id_title" = "Identifiant utilisateur :"; -"offline" = "hors ligne"; -"unsent" = "Non envoyé"; -"error" = "Erreur"; -"not_supported_yet" = "Pas encore pris en charge"; -"default" = "par défaut"; -"private" = "Privé"; -"public" = "Public"; -"power_level" = "Rang"; -"network_error_not_reachable" = "Vérifiez votre connexion au réseau"; -"user_id_placeholder" = "ex : @bob:serveurdaccueil"; -"ssl_homeserver_url" = "URL du serveur d’accueil : %@"; -// Permissions -"camera_access_not_granted_for_call" = "Pour passer un appel vidéo l’accès à l’appareil photo est indispensable mais %@ n’a pas les permissions nécessaires"; -"microphone_access_not_granted_for_call" = "Pour passer un appel l’accès au microphone est indispensable mais %@ n’a pas les permissions nécessaires"; -"local_contacts_access_not_granted" = "Pour découvrir des utilisateurs à partir des contacts locaux, l’accès aux contacts est indispensable mais %@ n’a pas les permissions nécessaires"; -"local_contacts_access_discovery_warning_title" = "Découverte des utilisateurs"; -"local_contacts_access_discovery_warning" = "Pour découvrir des contacts utilisant déjà Matrix, %@ peut envoyer les adresses e-mail et les numéros de téléphone de votre répertoire au serveur d’identité que vous avez choisi. S’il le prend en charge, vos données personnelles sont hachées avant d’être envoyées − vérifiez la politique de confidentialité de votre serveur d’identité pour plus de détails."; -// Country picker -"country_picker_title" = "Choisissez un pays"; -"notice_room_invite" = "%@ a invité %@"; -"notice_room_third_party_invite" = "%@ a invité %@ à rejoindre ce salon"; -"notice_room_third_party_registered_invite" = "%@ a accepté l’invitation à %@"; -"notice_room_join" = "%@ est arrivé"; -"notice_room_leave" = "%@ est parti"; -"notice_room_reject" = "%@ a rejeté l’invitation"; -"notice_room_kick" = "%@ a expulsé %@"; -"notice_room_unban" = "%@ a révoqué le bannissement de %@"; -"notice_room_ban" = "%@ a banni %@"; -"notice_room_withdraw" = "%@ a annulé l’invitation de %@"; -"notice_room_reason" = ". Raison : %@"; -"notice_avatar_url_changed" = "%@ a changé d’avatar"; -"notice_display_name_set" = "%@ a modifié son nom en %@"; -"notice_display_name_changed_from" = "%@ a modifié son nom de %@ à %@"; -"notice_display_name_removed" = "%@ a supprimé son nom d’affichage"; -"notice_topic_changed" = "%@ a modifié le sujet en : « %@ »."; -"notice_room_name_changed" = "%@ a modifié le nom du salon en %@."; -"notice_placed_voice_call" = "%@ a passé un appel audio"; -"notice_placed_video_call" = "%@ a passé un appel vidéo"; -"notice_answered_video_call" = "%@ a répondu à l’appel"; -"notice_ended_video_call" = "%@ a terminé l’appel"; -"notice_conference_call_request" = "%@ a débuté une téléconférence en VoIP"; -"notice_conference_call_started" = "Téléconférence en VoIP démarrée"; -"notice_conference_call_finished" = "Téléconférence en VoIP terminée"; -// button names -"ok" = "Ok"; -"send" = "Envoyer"; -"copy_button_name" = "Copier"; -"resend" = "Renvoyer"; -"redact" = "Effacer"; -"share" = "Partager"; -"set_power_level" = "Définir le rang"; -"delete" = "Supprimer"; -// actions -"action_logout" = "Se déconnecter"; -"create_room" = "Créer un salon"; -"login" = "Connexion"; -"create_account" = "Créer un compte"; -"membership_invite" = "Invité"; -"membership_leave" = "Parti"; -"membership_ban" = "Banni"; -"num_members_one" = "%@ utilisateur"; -"num_members_other" = "%@ utilisateurs"; -"kick" = "Expulser"; -"ban" = "Bannir"; -"unban" = "Révoquer le bannissement"; -"message_unsaved_changes" = "Il y a des modifications non enregistrées. Quitter les annulera."; -// Login Screen -"login_error_already_logged_in" = "Déjà connecté"; -"login_error_must_start_http" = "L’URL doit débuter par http[s]://"; -// contacts list screen -"invitation_message" = "Je souhaiterais discuter avec vous sur Matrix. Veuillez visiter le site web http://matrix.org pour plus d’informations."; -// Settings screen -"settings_title_config" = "Configuration"; -"settings_title_notifications" = "Notifications"; -// Notification settings screen -"notification_settings_disable_all" = "Désactiver toutes les notifications"; -"notification_settings_enable_notifications" = "Activer les notifications"; -"notification_settings_enable_notifications_warning" = "Toutes les notifications sont actuellement désactivées pour tous les appareils."; -"notification_settings_global_info" = "Les paramètres de notification sont sauvegardés sur le compte utilisateur et partagés entre tous les clients qui les prennent en charge (y compris les notifications de bureau).\n\nLes règles s’appliquent dans l'ordre ; la première règle applicable définit le résultat.\nEn conséquence : les notification par mot-clé sont plus importantes que les notifications par salon, qui sont plus importantes que les notifications par expéditeur.\nEntre plusieurs règles du même type, la première dans la liste est prioritaire."; -"notification_settings_per_word_notifications" = "Notifications par mot-clé"; -"notification_settings_per_word_info" = "Les mots sont détectés sans tenir compte de la casse et peuvent contenir un joker *. Par conséquent :\nfoo détecte la chaîne foo entourée de délimiteurs de mots (par ex. ponctuation, espace et début ou fin de ligne).\nfoo* détecte tous les mots commençant par foo.\n*foo* détecte tous les mots qui contiennent les trois lettres foo."; -"notification_settings_always_notify" = "Toujours notifier"; -"notification_settings_never_notify" = "Ne jamais notifier"; -"notification_settings_word_to_match" = "mots à détecter"; -"notification_settings_highlight" = "Mettre en valeur"; -"notification_settings_custom_sound" = "Son personnalisé"; -"notification_settings_per_room_notifications" = "Notifications par salon"; -"notification_settings_per_sender_notifications" = "Notifications par expéditeur"; -"notification_settings_sender_hint" = "@utilisateur:domaine.com"; -"notification_settings_select_room" = "Choisir un salon"; -"notification_settings_other_alerts" = "Autres alertes"; -"notification_settings_contain_my_user_name" = "Me notifier par un son lorsqu’un message contient mon nom d’utilisateur"; -"notification_settings_contain_my_display_name" = "Me notifier par un son lorsqu’un message contient mon nom d’affichage"; -"notification_settings_just_sent_to_me" = "Me notifier par un son lorsqu’un message privé m’est envoyé"; -"notification_settings_invite_to_a_new_room" = "Me notifier lorsque je suis invité dans un salon"; -"notification_settings_people_join_leave_rooms" = "Me notifier lorsque des personnes rejoignent et quittent les salons"; -"notification_settings_receive_a_call" = "Me notifier lorsque je reçois un appel"; -"notification_settings_suppress_from_bots" = "Supprimer les notifications des robots"; -"notification_settings_by_default" = "Par défaut…"; -"notification_settings_notify_all_other" = "Notifier pour tous les autres messages ou salons"; -// gcm section -"settings_config_home_server" = "Serveur d’accueil : %@"; -"settings_config_identity_server" = "Serveur d’identité : %@"; -"settings_config_user_id" = "Identifiant utilisateur : %@"; -// call string -"call_waiting" = "En attente…"; -"call_connecting" = "Connexion…"; -"call_ended" = "Appel terminé"; -"call_ring" = "Appel…"; -"incoming_video_call" = "Appel vidéo entrant"; -"incoming_voice_call" = "Appel audio entrant"; -"call_invite_expired" = "La demande d’appel a expiré"; -// unrecognized SSL certificate -"ssl_trust" = "Faire confiance"; -"ssl_logout_account" = "Se déconnecter"; -"ssl_remain_offline" = "Ignorer"; -"ssl_fingerprint_hash" = "Empreinte (%@) :"; -"ssl_could_not_verify" = "Impossible de vérifier l’identité du serveur distant."; -"ssl_cert_not_trust" = "Cela pourrait signifier que quelqu’un de malveillant intercepte votre trafic, ou que votre téléphone ne fait pas confiance au certificat fourni par le serveur distant."; -"ssl_cert_new_account_expl" = "Si l’administrateur affirme que ce comportement est normal, assurez-vous que l’empreinte ci-dessous est identique à celle qu’il fournit."; -"ssl_unexpected_existing_expl" = "Le certificat a changé depuis qu’il a été approuvé par votre téléphone. Ce comportement est INATTENDU. Il est recommandé de ne PAS ACCEPTER ce nouveau certificat."; -"ssl_expected_existing_expl" = "Le certificat était fiable et a été remplacé par un certificat qui ne l’est pas. Le serveur a peut-être renouvelé son certificat. Contactez l’administrateur du serveur pour lui demander l’empreinte de son certificat."; -"ssl_only_accept" = "Accepter le certificat UNIQUEMENT si l’administrateur du serveur a publié une empreinte correspondant à celle ci-dessus."; -"notice_feedback" = "Événement en retour (identifiant : %@) : %@"; -"notice_location_attachment" = "position en pièce-jointe"; -// Language picker -"language_picker_title" = "Choisissez une langue"; -"language_picker_default_language" = "Défaut (%@)"; -"login_mobile_device" = "Téléphone"; -"login_tablet_device" = "Tablette"; -"login_desktop_device" = "Ordinateur"; -"notice_in_reply_to" = "En réponse à"; -"error_common_message" = "Une erreur est survenue. Veuillez réessayer ultérieurement."; -// Reply to message -"message_reply_to_sender_sent_an_image" = "a envoyé une image."; -"message_reply_to_sender_sent_a_video" = "a envoyé une vidéo."; -"message_reply_to_sender_sent_an_audio_file" = "a envoyé un fichier audio."; -"message_reply_to_sender_sent_a_file" = "a envoyé un fichier."; -"message_reply_to_message_to_reply_to_prefix" = "En réponse à"; -"login_error_resource_limit_exceeded_title" = "Limite de ressources dépassée"; -"login_error_resource_limit_exceeded_message_default" = "Ce serveur d’accueil a dépassé une de ses limites de ressources."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Ce serveur d’accueil a atteint sa limite mensuelle d’utilisateurs actifs."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nVeuillez contacter l’administrateur de votre service pour continuer à l’utiliser."; -"login_error_resource_limit_exceeded_contact_button" = "Contacter l’administrateur"; -"e2e_passphrase_create" = "Créer la phrase secrète"; -"account_error_push_not_allowed" = "Les notifications ne sont pas autorisées"; -"notice_room_third_party_revoked_invite" = "%@ a retiré l’invitation de %@ à rejoindre ce salon"; -"device_details_rename_prompt_title" = "Nom de la session"; -"notice_encryption_enabled_ok" = "%@ a activé le chiffrement de bout en bout."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ a activé le chiffrement de bout en bout (algorithme %2$@ inconnu)."; -// Notice Events with "You" -"notice_room_invite_by_you" = "Vous avez invité %@"; -"notice_room_invite_you" = "%@ vous a invité"; -"notice_room_third_party_invite_by_you" = "Vous avez envoyé une invitation à %@ pour rejoindre le salon"; -"notice_room_third_party_registered_invite_by_you" = "Vous avez accepté l’invitation pour %@"; -"notice_room_third_party_revoked_invite_by_you" = "Vous avez révoqué l’invitation pour que %@ rejoigne le salon"; -"notice_room_join_by_you" = "Vous avez rejoint le salon"; -"notice_room_leave_by_you" = "Vous êtes parti"; -"notice_room_reject_by_you" = "Vous avez rejeté l’invitation"; -"notice_room_kick_by_you" = "Vous avez expulsé %@"; -"notice_room_unban_by_you" = "Vous avez révoqué le bannissement de %@"; -"notice_room_ban_by_you" = "Vous avez banni %@"; -"notice_room_withdraw_by_you" = "Vous avez annulé l’invitation de %@"; -"notice_avatar_url_changed_by_you" = "Vous avez changé votre avatar"; -"notice_display_name_set_by_you" = "Vous avez défini votre nom d’affichage en %@"; -"notice_display_name_changed_from_by_you" = "Vous avez changé votre nom d’affichage de %@ vers %@"; -"notice_display_name_removed_by_you" = "Vous avez supprimé votre nom d’affichage"; -"notice_topic_changed_by_you" = "Vous avez changé le sujet en « %@ »."; -"notice_room_name_changed_by_you" = "Vous avez changé le nom du salon en %@."; -"notice_placed_voice_call_by_you" = "Vous avez passé un appel audio"; -"notice_placed_video_call_by_you" = "Vous avez passé un appel vidéo"; -"notice_answered_video_call_by_you" = "Vous avez répondu à l’appel"; -"notice_ended_video_call_by_you" = "Vous avez terminé l’appel"; -"notice_conference_call_request_by_you" = "Vous avez demandé une conférence VoIP"; -"notice_room_name_removed_by_you" = "Vous avez supprimé le nom du salon"; -"notice_room_topic_removed_by_you" = "Vous avez supprimé le sujet"; -"notice_event_redacted_by_you" = " par vous"; -"notice_profile_change_redacted_by_you" = "Vous avez mis à jour votre profil %@"; -"notice_room_created_by_you" = "Vous avez créé et configuré le salon."; -"notice_encryption_enabled_ok_by_you" = "Vous avez activé le chiffrement de bout en bout."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Vous avez activé le chiffrement de bout en bout (algorithme non reconnu %@)."; -"notice_redaction_by_you" = "Vous avez supprimé un évènement (id : %@)"; -"notice_room_history_visible_to_anyone_by_you" = "Vous avez rendu l’historique futur du salon visible par tout le monde."; -"notice_room_history_visible_to_members_by_you" = "Vous avez rendu l’historique futur du salon visible par tous les membres du salon."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Vous avez rendu l’historique futur du salon visible par tous les membres, à partir du moment où ils ont été invités."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Vous avez rendu l’historique futur du salon visible par tous les membres, à partir de leur arrivée."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Vous avez rendu les messages ultérieurs visibles à tous le monde, à partir de leur arrivée."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Vous avez rendu les messages ultérieurs visibles à tous le monde, à partir du moment où ils sont invités."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Vous avez rendu les messages ultérieurs visibles à tous les membres du salon."; -"notice_room_created_by_you_for_dm" = "Vous êtes arrivé."; -"notice_room_name_removed_by_you_for_dm" = "Vous avez supprimé le nom"; -"notice_room_name_changed_by_you_for_dm" = "Vous avez changé le nom en %@."; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Vous avez supprimé l’invitation de %@"; -"notice_room_third_party_invite_by_you_for_dm" = "Vous avez invité %@"; -"notice_room_name_changed_for_dm" = "%@ a changé le nom en %@."; -"notice_room_third_party_revoked_invite_for_dm" = "%@ a supprimé l’invitation de %@"; -"notice_room_third_party_invite_for_dm" = "%@ a invité %@"; -"room_left_for_dm" = "Vous êtes parti"; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ a rendu les messages ultérieurs visibles à tout le monde, à partir de leur arrivée."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ a rendu les messages ultérieurs visibles à tout le monde, à partir du moment où ils sont invités."; -"notice_room_history_visible_to_members_for_dm" = "%@ a rendu les messages ultérieurs visibles à tous les membres du salon."; -"notice_room_aliases_for_dm" = "Les alias sont : %@"; -"notice_room_power_level_intro_for_dm" = "Les rangs des membres sont :"; -"notice_room_join_rule_public_by_you_for_dm" = "Vous avez rendu le salon public."; -"notice_room_join_rule_public_by_you" = "Vous avez rendu le salon public."; -"notice_room_join_rule_public_for_dm" = "%@ a rendu le salon public."; -"notice_room_join_rule_public" = "%@ a rendu le salon public."; -"notice_room_join_rule_invite_by_you_for_dm" = "Vous avez rendu le salon joignable sur invitation exclusivement."; -"notice_room_join_rule_invite_by_you" = "Vous avez rendu le salon joignable sur invitation exclusivement."; -"notice_room_join_rule_invite_for_dm" = "%@ a rendu le salon joignable sur invitation exclusivement."; -// New -"notice_room_join_rule_invite" = "%@ a rendu le salon joignable sur invitation exclusivement."; -"notice_room_created_for_dm" = "%@ est arrivé."; -"notice_room_name_removed_for_dm" = "%@ a supprimé le nom"; -"call_more_actions_dialpad" = "Pavé de numérotation"; -"call_more_actions_transfer" = "Transférer"; -"call_more_actions_audio_use_device" = "Haut parleur de l’appareil"; -"call_more_actions_audio_use_headset" = "Utiliser les écouteurs"; -"call_more_actions_change_audio_device" = "Changer de périphérique audio"; -"call_more_actions_unhold" = "Reprendre"; -"call_more_actions_hold" = "Mettre en attente"; -"call_holded" = "Vous avez mis l’appel en attente"; -"call_remote_holded" = "%@ a mis l’appel en attente"; -"notice_declined_video_call_by_you" = "Vous avez refusé l’appel"; -"notice_declined_video_call" = "%@ a refusé l’appel"; -"resume_call" = "Reprendre"; -"call_transfer_to_user" = "Transfert à %@"; -"call_consulting_with_user" = "Consultation de %@"; -"call_video_with_user" = "Appel vidéo avec %@"; -"call_voice_with_user" = "Appel audio avec %@"; -"call_ringing" = "Sonnerie…"; -"e2e_passphrase_too_short" = "La phrase secrète est trop courte, elle doit compter au moins %d caractères"; -"microphone_access_not_granted_for_voice_message" = "Pour les messages vocaux, l’accès au microphone est indispensable mais %@ n’a pas les permissions nécessaires"; -"message_reply_to_sender_sent_a_voice_message" = "envoyer un message vocal."; -"attachment_large_with_resolution" = "Grand %@ (~%@)"; -"attachment_medium_with_resolution" = "Moyen %@ (~%@)"; -"attachment_small_with_resolution" = "Petit %@ (~%@)"; -"attachment_size_prompt_message" = "Vous pouvez désactiver ceci dans les paramètres."; -"attachment_size_prompt_title" = "Préciser la taille pour l’envoi"; -"auth_username_in_use" = "Nom d’utilisateur déjà pris"; -"auth_invalid_user_name" = "Nom d’utilisateur invalide"; -"rename" = "Renommer"; -"auth_reset_password_error_not_found" = "Non trouvé"; -"auth_reset_password_error_unauthorized" = "Non autorisé"; -"attachment_unsupported_preview_message" = "Ce type de fichier n’est pas pris en charge."; -"attachment_unsupported_preview_title" = "Prévisualisation impossible"; -"room_displayname_all_other_members_left" = "%@ (Quitté)"; -"message_reply_to_sender_sent_their_location" = "a partagé sa localisation."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/hu.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/hu.lproj/MatrixKit.strings deleted file mode 100644 index d1c2ec520..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/hu.lproj/MatrixKit.strings +++ /dev/null @@ -1,482 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Fiók létrehozása:"; -"login_server_url_placeholder" = "URL (például https://matrix.org)"; -"login_home_server_title" = "Matrix szerver URL:"; -"view" = "Megtekintés"; -"back" = "Vissza"; -"continue" = "Folytatás"; -"leave" = "Elhagyás"; -"invite" = "Meghívás"; -"login_home_server_info" = "A matrix szerver tárolja minden beszélgetésedet és felhasználói fiók adatodat"; -"login_identity_server_title" = "Azonosítási szerver URL:"; -"login_identity_server_info" = "Matrix biztosít egy azonosító szerver ami nyilvántartja, hogy melyik matrix azonosítóhoz milyen e-mail cím, stb. tartozik. Jelenleg csak a https://matrix.org az egyetlen ilyen szerver."; -"login_user_id_placeholder" = "Matrix azonosító (pl.: @bob:matrix.org vagy csak bob)"; -"login_password_placeholder" = "Jelszó"; -"login_optional_field" = "opcionális"; -"login_display_name_placeholder" = "Megjelenített név (pl. Bob Obson)"; -"login_email_info" = "Az e-mail cím megadásával más felhasználók könnyebben találhatnak meg a Matrixon és lehetőséget ad a jelszó alaphelyzetbe állítására."; -"login_email_placeholder" = "E-mail cím"; -"login_prompt_email_token" = "Kérlek add meg az e-mail érvényesítő kódot:"; -"login_error_title" = "A bejelentkezés sikertelen"; -"login_error_no_login_flow" = "Nem sikerült letölteni az azonosítási információkat erről a saját szerverről"; -"login_error_do_not_support_login_flows" = "Jelenleg nem támogatunk egyetlen bejelentkezési sémát sem azok közül amit a saját szerver ismer"; -"login_error_registration_is_not_supported" = "A regisztráció jelenleg nem támogatott"; -"login_error_forbidden" = "Érvénytelen felhasználói név/jelszó"; -"login_error_unknown_token" = "A megadott hozzáférési kód nem ismert"; -"login_error_bad_json" = "Hibás JSON"; -"login_error_not_json" = "Nem tartalmaz helyes JSON adatot"; -"login_error_limit_exceeded" = "Túl sok kérés lett elküldve"; -"login_error_user_in_use" = "Ez a felhasználói név már használatban van"; -"login_error_login_email_not_yet" = "Az e-mailben küldött hivatkozásra még nem kattintottál rá"; -"login_use_fallback" = "Alternatív oldal használata"; -"login_leave_fallback" = "Mégse"; -"login_invalid_param" = "Érvénytelen paraméter"; -"register_error_title" = "A regisztráció sikertelen"; -"login_error_forgot_password_is_not_supported" = "Az „elfelejtett jelszó” jelenleg nem támogatott"; -"login_mobile_device" = "Mobil"; -"login_tablet_device" = "Tablet"; -"login_desktop_device" = "Asztali"; -// Action -"no" = "Nem"; -"yes" = "Igen"; -"abort" = "Megszakítás"; -"close" = "Bezár"; -"discard" = "Elvetés"; -"dismiss" = "Elutasítás"; -"retry" = "Újra"; -"sign_up" = "Regisztráció"; -"submit" = "Elküldés"; -"submit_code" = "Kód küldése"; -"set_default_power_level" = "Hozzáférési szint visszaállítása"; -"set_moderator" = "Beállítás moderátornak"; -"set_admin" = "Beállítás adminisztrátornak"; -"start_chat" = "Csevegés kezdése"; -"start_voice_call" = "Hanghívás kezdése"; -"start_video_call" = "Videóhívás kezdése"; -"mention" = "Megemlítés"; -"select_account" = "Felhasználói fiók kiválasztása"; -"attach_media" = "Média fájl csatolása a könyvtárból"; -"capture_media" = "Fénykép/videó készítése"; -"invite_user" = "Matrix felhasználó meghívása"; -"reset_to_default" = "Alapértelmezés visszaállítása"; -"resend_message" = "Üzenet újraküldése"; -"select_all" = "Mind kijelölése"; -"cancel_upload" = "Feltöltés megszakítása"; -"cancel_download" = "Letöltés megszakítása"; -"show_details" = "Részletek megmutatása"; -"answer_call" = "Hívás fogadása"; -"reject_call" = "Hívás elutasítása"; -"end_call" = "Hívás befejezése"; -"ignore" = "Figyelmen kívül hagyás"; -"unignore" = "Figyelembe vétel"; -// Events formatter -"notice_avatar_changed_too" = "(a felhasználó képe is megváltozott )"; -"notice_room_name_removed" = "%@ törölte a szoba nevét"; -"notice_room_topic_removed" = "%@ törölte a témát"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " %@ által"; -"notice_event_redacted_reason" = " [indok: %@]"; -"notice_profile_change_redacted" = "%@ frissítette az adatait %@"; -"notice_room_created" = "%@ szobát készített és beállította."; -"notice_room_join_rule" = "A csatlakozási szabály: %@"; -"notice_room_power_level_intro" = "A szoba tagjainak a hozzáférési szintje:"; -"notice_room_power_level_acting_requirement" = "Mielőtt a felhasználó ezt tehetné legalább az alábbi hozzáférési szinttel kell rendelkeznie:"; -"notice_room_power_level_event_requirement" = "Az eseményekhez kapcsolódó minimális hozzáférési szintek:"; -"notice_room_aliases" = "A szoba becenevei: %@"; -"notice_room_related_groups" = "A szobához kapcsolódó csoportok: %@"; -"notice_encrypted_message" = "Titkosított üzenet"; -"notice_encryption_enabled" = "%@ bekapcsolta a végponttól végpontig titkosítást (algoritmus: %@)"; -"notice_image_attachment" = "képmelléklet"; -"notice_audio_attachment" = "hangmelléklet"; -"notice_video_attachment" = "videómelléklet"; -"notice_location_attachment" = "helyadat-melléklet"; -"notice_file_attachment" = "fájlmelléklet"; -"notice_invalid_attachment" = "érvénytelen melléklet"; -"notice_unsupported_attachment" = "Nem támogatott melléklet: %@"; -"notice_feedback" = "Visszajelzés esemény (azon.: %@): %@"; -"notice_redaction" = "%@ kitakart egy eseményt (azon.: %@)"; -"notice_error_unsupported_event" = "Nem támogatott esemény"; -"notice_error_unexpected_event" = "Nem várt esemény"; -"notice_error_unknown_event_type" = "Ismeretlen eseménytípus"; -"notice_room_history_visible_to_anyone" = "%@ a szoba jövőbeni üzeneteit mindenki számára láthatóvá tette."; -"notice_room_history_visible_to_members" = "%@ a szoba jövőbeni üzeneteit a szobában lévő minden felhasználó számára láthatóvá tette."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ a szoba jövőbeni üzeneteit a szobában lévő félhasználók számára a meghívásuk pillanatától tette láthatóvá."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ a szoba jövőbeni üzeneteit a szobában lévő felhasználók számára a csatlakozásuktól tette láthatóvá."; -"notice_crypto_unable_to_decrypt" = "** Nem sikerül visszafejteni: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "A küldő munkamenete nem küldte el a kulcsot ehhez az üzenethez."; -"notice_sticker" = "Matrica"; -"notice_in_reply_to" = "Válaszolva erre"; -// Settings -"settings" = "Beállítások"; -"settings_enable_inapp_notifications" = "Alkalmazáson belüli értesítések engedélyezése"; -"settings_enable_push_notifications" = "Leküldéses értesítések engedélyezése"; -"settings_enter_validation_token_for" = "Érvényesítő kód megadása (%@):"; -"notification_settings_room_rule_title" = "Szoba: „%@”"; -// Devices -"device_details_title" = "Munkamenet információk\n"; -"device_details_name" = "Nyilvános név\n"; -"device_details_identifier" = "Azon.\n"; -"device_details_last_seen" = "Utoljára ekkor láttuk:\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "A munkamenet nyilvános neve megjelenik azoknál az embereknél, akikkel beszélgetsz"; -"device_details_delete_prompt_title" = "Hitelesítés"; -"device_details_delete_prompt_message" = "A művelethez további hitelesítés szükséges.\nA továbblépéshez add meg a jelszavadat."; -// Encryption information -"room_event_encryption_info_title" = "Végpontok közötti titkosítási információk\n\n"; -"room_event_encryption_info_event" = "Esemény információ\n"; -"room_event_encryption_info_event_user_id" = "Felhasználó azonosító\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519 azonosítási kulcs\n"; -"room_event_encryption_info_event_fingerprint_key" = "Claimed Ed25519 ujjlenyomat kulcs\n"; -"room_event_encryption_info_event_algorithm" = "Algoritmus\n"; -"room_event_encryption_info_event_session_id" = "Munkamenet-azonosító\n"; -"room_event_encryption_info_event_decryption_error" = "Visszafejtési hiba\n"; -"room_event_encryption_info_event_unencrypted" = "titkosítatlan"; -"room_event_encryption_info_event_none" = "nincs"; -"room_event_encryption_info_device" = "\nKüldő munkamenetének információi\n"; -"room_event_encryption_info_device_unknown" = "ismeretlen munkamenet\n"; -"room_event_encryption_info_device_name" = "Nyilvános név\n"; -"room_event_encryption_info_device_id" = "Azon.\n"; -"room_event_encryption_info_device_verification" = "Ellenőrzés\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519 ujjlenyomat\n"; -"room_event_encryption_info_device_verified" = "Ellenőrizve"; -"room_event_encryption_info_device_not_verified" = "NINCS ellenőrizve"; -"room_event_encryption_info_device_blocked" = "Tiltólistán"; -"room_event_encryption_info_verify" = "Ellenőriz..."; -"room_event_encryption_info_unverify" = "Ellenőrzés visszavonása"; -"room_event_encryption_info_block" = "Tiltólistára tétel"; -"room_event_encryption_info_unblock" = "Törlés a tiltólistáról"; -"room_event_encryption_verify_title" = "Munkamenet ellenőrzése\n\n"; -"room_event_encryption_verify_ok" = "Ellenőrzés"; -// Account -"account_save_changes" = "Változások mentése"; -"account_link_email" = "E-mail cím összekötése"; -"account_linked_emails" = "Hozzárendelt e-mail címek"; -"account_email_validation_title" = "Ellenőrzés folyamatban"; -"account_msisdn_validation_title" = "Ellenőrzés folyamatban"; -"account_msisdn_validation_error" = "A telefonszám ellenőrzése sikertelen."; -"account_error_display_name_change_failed" = "Megjelenítési név megváltoztatása sikertelen"; -"account_error_picture_change_failed" = "A kép megváltoztatása sikertelen"; -"account_error_matrix_session_is_not_opened" = "A Matrix munkamenet nincs megnyitva"; -"account_error_email_wrong_title" = "Érvénytelen e-mail cím"; -"account_error_email_wrong_description" = "Ez nem tűnik érvényes e-mail címnek"; -"account_error_msisdn_wrong_title" = "Érvénytelen telefonszám"; -"account_error_msisdn_wrong_description" = "Nem tűnik érvényes telefonszámnak"; -// Room creation -"room_creation_name_title" = "Szoba neve:"; -"room_creation_name_placeholder" = "(pl.: ebédCsoport)"; -"room_creation_alias_title" = "Szoba beceneve:"; -"room_creation_alias_placeholder" = "(pl.: #foo:example.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(pl.: #foo%@)"; -"room_creation_participants_title" = "Résztvevők:"; -"room_creation_participants_placeholder" = "(pl.: @bob:homeserver1; @john:homeserver2...)"; -// Room -"room_please_select" = "Kérlek válassz szobát"; -"room_error_join_failed_title" = "A szobához való csatlakozás nem sikerült"; -"room_error_join_failed_empty_room" = "Üres szobába jelenleg nem lehet belépni."; -"room_error_name_edition_not_authorized" = "A szoba nevének megváltoztatásához nincs jogosultságod"; -"room_event_encryption_verify_message" = "Ennek a munkamenet hitelességének a vizsgálatához vedd fel a kapcsolatot a tulajdonossal egy másik csatornán (pl. személyes találkozó vagy telefonhívás) és kérdezd meg, hogy amit ő lát a személyes beállításoknál mint a munkamenethez tartozó kulcs, az megegyezik az alábbi kulccsal:\n\n\tMunkamenet neve: %@\n\tMunkamenet azonosító: %@\n\tMunkamenet kulcs: %@\n\nHa egyezik akkor nyomd meg az ellenőrizve gombot alább. Ha nem egyezik, akkor valaki jogosulatlanul akarja használni a munkamenetet; talán a legjobb, ha a tiltólista gombot nyomod meg inkább.\n\nA jövőben ezen az ellenőrzési módon javítani fogunk."; -"account_email_validation_message" = "Ellenőrizd a leveleidet, és kattints a levélben lévő hivatkozásra. Ha az megvan, akkor kattints itt a tovább gombra."; -"account_email_validation_error" = "Az e-mail címet nem sikerült ellenőrizni. Ellenőrizd a leveleidet, és kattints a levélben lévő hivatkozásra. Ha az megvan, akkor kattints itt a tovább gombra"; -"account_msisdn_validation_message" = "SMS-t küldtünk az aktiváló kóddal. Add meg az aktiváló kódot alább."; -"room_error_topic_edition_not_authorized" = "Nem vagy jogosult a szoba témájának szerkesztésére"; -"room_error_cannot_load_timeline" = "Az idővonalat nem sikerült betölteni"; -"room_error_timeline_event_not_found_title" = "Az idővonali pozíciót nem sikerült letölteni"; -"room_error_timeline_event_not_found" = "Az alkalmazás megpróbált az idővonalról betölteni egy időpillanatot de nem találja"; -"room_left" = "Elhagytad a szobát"; -"room_no_power_to_create_conference_call" = "Ebben a szobában nincs jogosultságod meghívni valakit konferenciát indítani"; -"room_no_conference_call_in_encrypted_rooms" = "Titkosított szobákban a konferenciahívások nem támogatottak"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "kép elküldve."; -"message_reply_to_sender_sent_a_video" = "videó elküldve."; -"message_reply_to_sender_sent_an_audio_file" = "hangfájl elküldve."; -"message_reply_to_sender_sent_a_file" = "fájl elküldve."; -"message_reply_to_message_to_reply_to_prefix" = "Válaszolva erre"; -// Room members -"room_member_ignore_prompt" = "Biztos, hogy eltakarod ennek a felhasználónak az összes üzenetét?"; -"room_member_power_level_prompt" = "Valószínűleg nem fogod tudni visszavonni ezt a műveletet, mivel ugyanarra a szintre emeled a felhasználót mint amin te magad vagy.\nBiztos vagy benne?"; -// Attachment -"attachment_size_prompt" = "Hogy szeretnéd elküldeni:"; -"attachment_original" = "Jelenlegi méret (%@)"; -"attachment_small" = "Kicsi (~%@)"; -"attachment_medium" = "Közepes (~%@)"; -"attachment_large" = "Nagy (~%@)"; -"attachment_cancel_download" = "Megszakítod a letöltést?"; -"attachment_cancel_upload" = "Megszakítod a feltöltést?"; -"attachment_multiselection_size_prompt" = "Hogy szeretnéd elküldeni a képet:"; -"attachment_multiselection_original" = "Jelenlegi méret"; -"attachment_e2e_keys_file_prompt" = "Ez a fájl a Matrix kliensből kimentett titkosító kulcsokat tartalmaz.\nSzeretnéd megjeleníteni a fájl tartalmát vagy betöltöd a kulcsokat amiket tartalmaz?"; -"attachment_e2e_keys_import" = "Betöltés..."; -// Contacts -"contact_mx_users" = "Matrix felhasználók"; -"contact_local_contacts" = "Helyi névjegyek"; -// Groups -"group_invite_section" = "Meghívók"; -"group_section" = "Csoportok"; -// Search -"search_no_results" = "Nincs találat"; -"search_searching" = "Keresés folyamatban..."; -// Time -"format_time_s" = "mp"; -"format_time_m" = "p"; -"format_time_h" = "ó"; -"format_time_d" = "n"; -// E2E import -"e2e_import_room_keys" = "Szoba kulcsok betöltése"; -"e2e_import_prompt" = "Ez a folyamat betölti azokat a titkosítási kulcsokat amiket előzőleg egy másik Matrix kliensből mentettél ki. Ez után minden olyan üzenetet vissza tudsz fejteni amit a másik eszköz vissza tud.\nA kulcsokat tartalmazó fájl jelszóval védett. Add meg itt a jelszót a fájl visszafejtéséhez."; -"e2e_import" = "Betöltés"; -"e2e_passphrase_enter" = "Jelszó megadása"; -// E2E export -"e2e_export_room_keys" = "Szoba kulcsok kimentése"; -"e2e_export_prompt" = "Ezzel a folyamattal kimentheted azokat a kulcsokat amiket a titkosított szobákban az üzenetek visszafejtésére használtál. Így később ezt a fájlt egy másik Matrix kliensbe betöltve a kliens vissza tudja fejteni ezeket az üzeneteket.\nAki el tudja olvasni a kimentett kulcsokat tartalmazó fájlt vissza fogja tudni fejteni az üzeneteket amiket látsz, ezért tartsd a fájlt biztonságosan."; -"e2e_export" = "Kiment"; -"e2e_passphrase_confirm" = "Jelszó megerősítése"; -"e2e_passphrase_empty" = "A jelszó nem lehet üres"; -"e2e_passphrase_not_match" = "A jelszavaknak egyezniük kell"; -// Others -"user_id_title" = "Felhasználói azonosító:"; -"offline" = "kapcsolat nélkül"; -"unsent" = "Elküldetlen"; -"error" = "Hiba"; -"error_common_message" = "Hiba történt. Kérlek próbáld meg később."; -"not_supported_yet" = "Jelenleg nem támogatott"; -"default" = "alapértelmezett"; -"private" = "Privát"; -"public" = "Nyilvános"; -"power_level" = "Hozzáférési szint"; -"network_error_not_reachable" = "Ellenőrizd a hálózati hozzáférésed"; -"user_id_placeholder" = "pl.: @bob:matrixszerver"; -"ssl_homeserver_url" = "Matrix szerver URL: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Videó hívásokhoz engedélyezni kell a hozzáférést a kamerához de %@ nem rendelkezik ilyen engedéllyel"; -"microphone_access_not_granted_for_call" = "Hívásokhoz engedélyezni kell a hozzáférést a mikrofonhoz, de %@ nem rendelkezik ilyen engedéllyel"; -"local_contacts_access_not_granted" = "Címjegyzékben található felhasználók feltérképezéséhez engedéllyel kell rendelkezni a címjegyzékhez, de %@ nem rendelkezik ilyen engedéllyel"; -"local_contacts_access_discovery_warning_title" = "Felhasználók keresése"; -"local_contacts_access_discovery_warning" = "Az olyan ismerősök felderítéséhez akik már használják a Matrixot, %@ el tudja küldeni a címjegyzékben található e-mail címeket és telefonszámokat az általad választott Matrix azonosítási szervernek. Ahol lehetséges a személyes adatok hash-elve lesznek - kérlek ellenőrizd az azonosítási szervered adatvédelmi szabályait."; -// Country picker -"country_picker_title" = "Válassz országot"; -// Language picker -"language_picker_title" = "Válassz nyelvet"; -"language_picker_default_language" = "Alapértelmezett (%@)"; -"notice_room_invite" = "%@ meghívta %@ felhasználót"; -"notice_room_third_party_invite" = "%@ meghívót küldött %@ felhasználónak, hogy lépjen be a szobába"; -"notice_room_third_party_registered_invite" = "%@ elfogadta a meghívást ide: %@"; -"notice_room_join" = "%@ csatlakozott"; -"notice_room_leave" = "%@ távozott"; -"notice_room_reject" = "%@ elutasította a meghívást"; -"notice_room_kick" = "%@ kirúgta: %@"; -"notice_room_unban" = "%@ visszaengedte: %@"; -"notice_room_ban" = "%@ kitiltotta: %@"; -"notice_room_withdraw" = "%@ visszavonta %@ meghívóját"; -"notice_room_reason" = ". Ok: %@"; -"notice_avatar_url_changed" = "%@ megváltoztatta a profilképét"; -"notice_display_name_set" = "%@ a becenevét %@ névre állította be"; -"notice_display_name_changed_from" = "%@ megváltoztatta a becenevét %@ névről %@ névre"; -"notice_display_name_removed" = "%@ törölte a becenevét"; -"notice_topic_changed" = "%@ megváltoztatta a témát erre: „%@”."; -"notice_room_name_changed" = "%@ megváltoztatta a szoba nevét erre: %@."; -"notice_placed_voice_call" = "%@ hanghívást kezdeményezett"; -"notice_placed_video_call" = "%@ videóhívást kezdeményezett"; -"notice_answered_video_call" = "%@ fogadta a hívást"; -"notice_ended_video_call" = "%@ befejezte a hívást"; -"notice_conference_call_request" = "%@ VoIP konferenciát kezdeményezett"; -"notice_conference_call_started" = "VoIP konferencia indult"; -"notice_conference_call_finished" = "VoIP konferencia befejeződött"; -// button names -"ok" = "OK"; -"cancel" = "Mégse"; -"save" = "Ment"; -"send" = "Küld"; -"copy_button_name" = "Másol"; -"resend" = "Újraküld"; -"redact" = "Töröl"; -"share" = "Megosztás"; -"set_power_level" = "Hozzáférési szint beállítása"; -"delete" = "Töröl"; -// actions -"action_logout" = "Kilép"; -"create_room" = "Szoba készítése"; -"login" = "Belép"; -"create_account" = "Felhasználói fiók készítés"; -"membership_invite" = "Meghívva"; -"membership_leave" = "Elhagyva"; -"membership_ban" = "Kitiltva"; -"num_members_one" = "%@ felhasználó"; -"num_members_other" = "%@ felhasználó"; -"kick" = "Elküld"; -"ban" = "Kitilt"; -"unban" = "Visszaenged"; -"message_unsaved_changes" = "Mentetlen beállítások vannak. Ha kilépsz a beállítások elvesznek."; -// Login Screen -"login_error_already_logged_in" = "Már bejelentkeztél"; -"login_error_must_start_http" = "Az URL-nek http[s]:// -sel kell kezdődnie"; -// room details dialog screen -"room_details_title" = "Szoba adatai"; -// contacts list screen -"invitation_message" = "Szeretnék veled beszélgetni a Matrix-szal. További információkért látogasd meg a http://matrix.org weboldalt."; -// Settings screen -"settings_title_config" = "Beállítások"; -"settings_title_notifications" = "Értesítések"; -// Notification settings screen -"notification_settings_disable_all" = "Minden értesítés kikapcsolása"; -"notification_settings_enable_notifications" = "Értesítések engedélyezése"; -"notification_settings_enable_notifications_warning" = "Minden értesítés tiltva van minden eszközhöz."; -"notification_settings_global_info" = "Az értesítések beállításai a felhasználói fiókhoz van elmentve és minden eszköz használhatja amelyik támogatja (beleértve az asztali értesítéseket is).\n\nA szabályok sorrendje számít; az első szabály ami illeszkedik határozza meg a viselkedést az üzenethez.\nÍgy a kulcsszó szintű értesítések fontosabbak mint a szoba szintűek amik fontosabbak mint a küldő szintű értesítések.\nHa több szabály van ugyanolyan kategóriából a listában az első szabály ami illeszkedik lesz a meghatározó."; -"notification_settings_per_word_notifications" = "Kulcsszó alapú értesítések"; -"notification_settings_per_word_info" = "A szavaknál a kis-, és nagybetű nincs megkülönböztetve és tartalmazhat „wildcard” karaktert (*). Például:\nfoo illeszkedik minden szövegre ahol a foo szó elválasztó karakterrel van körülvéve (pl.: írásjel, szóköz, sor eleje, sor vége).\nfoo* illeszkedik minden szövegre ami foo-val kezdődik.\n*foo* illeszkedik minden szövegre ami a három betűt (foo) tartalmazza."; -"notification_settings_always_notify" = "Mindig értesít"; -"notification_settings_never_notify" = "Soha ne értesítsen"; -"notification_settings_word_to_match" = "szó amire illeszkedjen"; -"notification_settings_highlight" = "Kiemel"; -"notification_settings_custom_sound" = "Egyedi hang"; -"notification_settings_per_room_notifications" = "Szoba szintű értesítések"; -"notification_settings_per_sender_notifications" = "Küldő szintű értesítések"; -"notification_settings_sender_hint" = "@felhasznalo:domain.com"; -"notification_settings_select_room" = "Válassz szobát"; -"notification_settings_other_alerts" = "További figyelmeztetések"; -"notification_settings_contain_my_user_name" = "Hangos értesítés ha az üzenet tartalmazza a nevemet"; -"notification_settings_contain_my_display_name" = "Hangos értesítés ha az üzenet a becenevemet tartalmazza"; -"notification_settings_just_sent_to_me" = "Hangos értesítés ha az üzenetet csak nekem küldték"; -"notification_settings_invite_to_a_new_room" = "Értesítés ha meghívnak egy új szobába"; -"notification_settings_people_join_leave_rooms" = "Értesítés, ha valaki belép vagy elhagy szobát"; -"notification_settings_receive_a_call" = "Értesítés, ha hívást kapok"; -"notification_settings_suppress_from_bots" = "Robotoktól való értesítések tiltása"; -"notification_settings_by_default" = "Alapértelmezetten..."; -"notification_settings_notify_all_other" = "Értesítés minden egyéb üzenethez/szobához"; -// gcm section -"settings_config_home_server" = "Matrix szerver: %@"; -"settings_config_identity_server" = "Azonosítási szerver: %@"; -"settings_config_user_id" = "Felhasználói azonosító: %@"; -// call string -"call_waiting" = "Vár..."; -"call_connecting" = "Kapcsolás…"; -"call_ended" = "Hívás vége"; -"call_ring" = "Hívás..."; -"incoming_video_call" = "Érkező videó hívás"; -"incoming_voice_call" = "Érkező hang hívás"; -"call_invite_expired" = "Hívás meghívás lejárt"; -// unrecognized SSL certificate -"ssl_trust" = "Megbízhatóság"; -"ssl_logout_account" = "Kilép"; -"ssl_remain_offline" = "Figyelmen kívül hagy"; -"ssl_fingerprint_hash" = "Ujjlenyomat (%@):"; -"ssl_could_not_verify" = "A távoli szerver nem azonosítható."; -"ssl_cert_not_trust" = "Ez azt jelentheti, hogy valaki lehallgatja a forgalmat vagy a telefon nem tekinti megbízhatónak a szerver tanúsítványát."; -"ssl_cert_new_account_expl" = "Ha a szolgáltatás adminisztrátorának információi alapján ez várható, ellenőrizd az ujjlenyomatot azzal amit az adminisztrátor közölt."; -"ssl_unexpected_existing_expl" = "A tanúsítvány amit eddig a telefon elfogadott megváltozott. Ez nagyon GYANÚS. Ajánlott az új tanúsítvány ELUTASÍTÁSA."; -"ssl_expected_existing_expl" = "Az eddig elfogadott tanúsítvány egy nem elfogadottra módosult. A szerver lehet, hogy megújította a tanúsítványát. Vedd fel a kapcsolatot a szerver adminisztrátorával az új ujjlenyomat ellenőrzéséhez."; -"ssl_only_accept" = "CSAK akkor fogadd el a tanúsítványt ha a szerver adminisztrátora közzétette az ujjlenyomatot és az megegyezik az alábbival."; -"login_error_resource_limit_exceeded_title" = "Erőforrás korlát túllépés"; -"login_error_resource_limit_exceeded_message_default" = "Ez a Matrix szerver túllépte az egyik erőforrás-korlátját."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Ez a Matrix szerver elérte a havi aktív felhasználói korlátját."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nKérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával, hogy tovább használhasd."; -"login_error_resource_limit_exceeded_contact_button" = "Adminisztrátor kapcsolatfelvétel"; -// room display name -"room_displayname_empty_room" = "Üres szoba"; -"room_displayname_two_members" = "%@ és %@"; -"room_displayname_more_than_two_members" = "%@ és %@ mások"; -"e2e_passphrase_create" = "Jelmondat készítés"; -"account_error_push_not_allowed" = "Értesítések nincsenek engedélyezve"; -"notice_room_third_party_revoked_invite" = "%@ visszavonta a a meghívót ehhez a szobához: %@"; -"device_details_rename_prompt_title" = "Munkamenet neve"; -"notice_encryption_enabled_ok" = "%@ bekapcsolta a végpontok közötti titkosítást."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ bekapcsolta a végpontok közötti titkosítást (ismeretlen algoritmus: %2$@)."; -// Notice Events with "You" -"notice_room_invite_by_you" = "Meghívtad őt: %@"; -"notice_room_invite_you" = "%@ meghívott"; -"notice_room_third_party_invite_by_you" = "Meghívót küldtél neki: %@, hogy be tudjon lépni a szobába"; -"notice_room_third_party_registered_invite_by_you" = "A meghívót ide: %@ elfogadtad"; -"notice_room_third_party_revoked_invite_by_you" = "Visszavontad a meghívót ehhez a szobához: %@"; -"notice_room_join_by_you" = "Beléptél"; -"notice_room_leave_by_you" = "Távoztál"; -"notice_room_reject_by_you" = "A meghívót elutasítottad"; -"notice_room_kick_by_you" = "Kirúgtad őt: %@"; -"notice_room_unban_by_you" = "Visszaengedted őt: %@"; -"notice_room_ban_by_you" = "Kitiltottad őt: %@"; -"notice_room_withdraw_by_you" = "%@ meghívóját visszavontad"; -"notice_avatar_url_changed_by_you" = "A profilképedet megváltoztattad"; -"notice_display_name_set_by_you" = "A megjelenő nevedet megváltoztattad erre: %@"; -"notice_display_name_changed_from_by_you" = "A megjelenő nevedet megváltoztattad erről: %@ erre: %@"; -"notice_display_name_removed_by_you" = "A megjelenő nevedet törölted"; -"notice_topic_changed_by_you" = "A témát megváltoztattad erre: „%@”."; -"notice_room_name_changed_by_you" = "A szoba nevét megváltoztattad erre: %@."; -"notice_placed_voice_call_by_you" = "Hanghívást kezdeményeztél"; -"notice_placed_video_call_by_you" = "Videóhívást kezdeményeztél"; -"notice_answered_video_call_by_you" = "Fogadtad a hívást"; -"notice_ended_video_call_by_you" = "Befejezted a hívást"; -"notice_conference_call_request_by_you" = "VoIP konferenciát kezdeményeztél"; -"notice_room_name_removed_by_you" = "A szoba nevét törölted"; -"notice_room_topic_removed_by_you" = "A szoba témáját törölted"; -"notice_event_redacted_by_you" = " nálad"; -"notice_profile_change_redacted_by_you" = "A profilodat megváltoztattad: %@"; -"notice_room_created_by_you" = "A szobát létrehoztad és beállítottad."; -"notice_encryption_enabled_ok_by_you" = "A végpontok közötti titkosítást bekapcsoltad."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "A végpontok közötti titkosítást bekapcsoltad (az algoritmus ismeretlen: %@)."; -"notice_redaction_by_you" = "Kitakartál egy eseményt (azon.: %@)"; -"notice_room_history_visible_to_anyone_by_you" = "Láthatóvá tetted a szoba jövőbeni üzeneteit mindenki számára."; -"notice_room_history_visible_to_members_by_you" = "Láthatóvá tetted a szoba jövőbeni üzeneteit a szobában tartózkodók számára."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "A szoba jövőbeni üzeneteit a szobában lévő felhasználók számára a meghívásuk pillanatától láthatóvá tetted."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "A szoba jövőbeni üzeneteit a szobában lévő felhasználók számára a szobába való belépésük pillanatától láthatóvá tetted."; -"notice_room_name_removed_for_dm" = "%@ törölte a nevet"; -"notice_room_created_for_dm" = "%@ csatlakozott."; -// New -"notice_room_join_rule_invite" = "%@meghívásossá tette a szobát."; -"notice_room_join_rule_invite_for_dm" = "%@meghívásossá tette."; -"notice_room_join_rule_invite_by_you" = "A szobát meghívásossá tetted."; -"notice_room_join_rule_invite_by_you_for_dm" = "Meghívásossá tetted."; -"notice_room_join_rule_public" = "%@ nyilvánossá tette a szobát."; -"notice_room_join_rule_public_for_dm" = "%@ nyilvánossá tette."; -"notice_room_join_rule_public_by_you" = "A szobát nyilvánossá tetted."; -"notice_room_join_rule_public_by_you_for_dm" = "Ezt nyilvánossá tetted."; -"notice_room_power_level_intro_for_dm" = "A tagok a hozzáférési szintje:"; -"notice_room_aliases_for_dm" = "A becenevek: %@"; -"notice_room_history_visible_to_members_for_dm" = "%@ a jövőbeni üzeneteket láthatóvá tette a szobában lévő minden felhasználó számára."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ a jövőbeni üzeneteket láthatóvá tette mindenki számára a meghívásuk pillanatától."; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ a jövőbeni üzeneteket láthatóvá tette mindenki számára a belépésük pillanatától."; -"room_left_for_dm" = "Távoztál"; -"notice_room_third_party_invite_for_dm" = "%@ meghívta %@ felhasználót"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ visszavonta az ő meghívóját: %@"; -"notice_room_name_changed_for_dm" = "%@ megváltoztatta a nevet erre: %@."; -"notice_room_third_party_invite_by_you_for_dm" = "Meghívtad őt: %@"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Visszavontad az ő meghívóját: %@"; -"notice_room_name_changed_by_you_for_dm" = "Megváltoztattad a nevet erre: %@."; -"notice_room_name_removed_by_you_for_dm" = "A nevet törölted"; -"notice_room_created_by_you_for_dm" = "Beléptél."; -"notice_room_history_visible_to_members_by_you_for_dm" = "A jövőbeni üzeneteket láthatóvá tetted a szobában lévő minden felhasználó számára."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "A jövőbeni üzeneteket láthatóvá tetted mindenki számára a meghívásuk pillanatától."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "A jövőbeni üzeneteket láthatóvá tetted mindenki számára a belépésük pillanatától."; -"call_more_actions_dialpad" = "Tárcsázó számlap"; -"call_more_actions_transfer" = "Átadás"; -"call_more_actions_audio_use_device" = "Eszköz hangszóró"; -"call_more_actions_audio_use_headset" = "Fejhallgató használata"; -"call_more_actions_change_audio_device" = "Hang eszköz megváltoztatása"; -"call_more_actions_unhold" = "Folytatás"; -"call_more_actions_hold" = "Várakoztat"; -"call_holded" = "Felfüggesztette a hívást"; -"call_remote_holded" = "%@ felfüggesztette a hívást"; -"notice_declined_video_call_by_you" = "Elutasította a hívást"; -"notice_declined_video_call" = "%@ elutasította a hívást"; -"resume_call" = "Folytatás"; -"call_transfer_to_user" = "Hívásátirányítás ide: %@"; -"call_consulting_with_user" = "Konzultáció vele: %@"; -"call_video_with_user" = "Videóhívás vele: %@"; -"call_voice_with_user" = "Hanghívás vele: %@"; -"call_ringing" = "Hívás…"; -"e2e_passphrase_too_short" = "A jelmondat túl rövid (legalább %d karakter hosszúnak kell lennie)"; -"microphone_access_not_granted_for_voice_message" = "Ha hangüzenetekhez a mikrofonhoz szükséges a hozzáférés, de %@ nem rendelkezik a használatához szükséges engedéllyel"; -"message_reply_to_sender_sent_a_voice_message" = "hang üzenet elküldve."; -"attachment_large_with_resolution" = "Nagy %@ (~%@)"; -"attachment_medium_with_resolution" = "Közepes %@ (~%@)"; -"attachment_small_with_resolution" = "Kicsi %@ (~%@)"; -"attachment_size_prompt_message" = "Ezt a beállításokban kikapcsolhatod."; -"attachment_size_prompt_title" = "Méret megerősítése küldéshez"; -"room_displayname_all_other_participants_left" = "%@ (Bal)"; -"auth_reset_password_error_not_found" = "Nem található"; -"auth_reset_password_error_unauthorized" = "Nem engedélyezett"; -"auth_username_in_use" = "A felhasználónév foglalt"; -"auth_invalid_user_name" = "Érvénytelen felhasználónév"; -"rename" = "Átnevez"; -"room_displayname_all_other_members_left" = "%@ (Bal)"; -"attachment_unsupported_preview_message" = "Ez a fájl típus nem támogatott."; -"attachment_unsupported_preview_title" = "Az előnézetet nem lehet megjeleníteni"; -"message_reply_to_sender_sent_their_location" = "megosztotta a földrajzi helyzetét."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/id.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/id.lproj/MatrixKit.strings deleted file mode 100644 index 65682850d..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/id.lproj/MatrixKit.strings +++ /dev/null @@ -1,560 +0,0 @@ - - -"auth_username_in_use" = "Nama pengguna telah dipakai"; -"invite" = "Undang"; -"rename" = "Ubah Nama"; -"view" = "Tampilkan"; -"cancel" = "Batalkan"; -"leave" = "Tinggalkan"; -"save" = "Simpan"; -"notice_room_power_level_intro_for_dm" = "Level kekuatan anggota pesan langsung adalah:"; -"notice_room_power_level_intro" = "Level kekuatan anggota ruangan adalah:"; -"notice_room_join_rule_public_by_you_for_dm" = "Anda membuat pesan langsung ini publik."; -"notice_room_join_rule_public_by_you" = "Anda membuat ruangan ini publik."; -"notice_room_join_rule_public_for_dm" = "%@ membuat pesan langsung ini publik."; -"notice_room_join_rule_public" = "%@ membuat ruangan ini publik."; -"notice_room_join_rule_invite_by_you_for_dm" = "Anda membuat pesan langsung ini undangan saja."; -"notice_room_join_rule_invite_by_you" = "Anda membuat ruangan ini undangan saja."; -"notice_room_join_rule_invite_for_dm" = "%@ membuat pesan langsung ini undangan saja."; -// New -"notice_room_join_rule_invite" = "%@ membuat ruangan ini undangan saja."; -// Old -"notice_room_join_rule" = "Peraturan bergabung adalah: %@"; -"notice_room_created_for_dm" = "%@ bergabung."; -"notice_room_created" = "%@ membuat dan mengatur ruangan ini."; -"notice_profile_change_redacted" = "%@ memperbarui profilnya %@"; -"notice_event_redacted_reason" = " [alasan: %@]"; -"notice_event_redacted_by" = " dari %@"; -"notice_event_redacted" = ""; -"notice_room_topic_removed" = "%@ menghapus topik ruangan"; -"notice_room_name_removed_for_dm" = "%@ menghapus nama pesan langsung"; -"notice_room_name_removed" = "%@ menghapus nama ruangan"; - -// Events formatter -"notice_avatar_changed_too" = "(avatar juga diganti)"; -"unignore" = "Hapus Pengabaian"; -"ignore" = "Abaikan"; -"resume_call" = "Lanjutkan"; -"end_call" = "Akhiri Panggilan"; -"reject_call" = "Tolak Panggilan"; -"answer_call" = "Jawab Panggilan"; -"show_details" = "Tampilkan Detail"; -"cancel_upload" = "Batal Mengunggah"; -"cancel_download" = "Batal Mengunduh"; -"select_all" = "Pilih Semua"; -"resend_message" = "Kirim ulang pesan"; -"reset_to_default" = "Atur ulang ke bawaan"; -"invite_user" = "Undang pengguna Matrix"; -"capture_media" = "Ambil Foto/Video"; -"attach_media" = "Lampirkan Media dari Library"; -"select_account" = "Pilih sebuah akun"; -"mention" = "Sebutan"; -"start_video_call" = "Mulai Panggilan Video"; -"start_voice_call" = "Mulai Panggilan Suara"; -"start_chat" = "Mulai Mengobrol"; -"set_moderator" = "Tetapkan Moderator"; -"set_admin" = "Tetapkan Admin"; -"set_power_level" = "Atur Level Kekuatan"; -"set_default_power_level" = "Atur Ulang Level Kekuatan"; -"submit_code" = "Kirim kode"; -"submit" = "Kirim"; -"sign_up" = "Daftar"; -"retry" = "Coba Lagi"; -"dismiss" = "Lupakan"; -"discard" = "Buang"; -"continue" = "Lanjutkan"; -"close" = "Tutup"; -"back" = "Kembali"; -"abort" = "Batalkan"; -"yes" = "Ya"; - -// Action -"no" = "Tidak"; -"login_error_resource_limit_exceeded_contact_button" = "Hubungi Administrator"; -"login_error_resource_limit_exceeded_message_contact" = "\n\nSilakan hubungi service homeserver Anda untuk melanjutkan menggunakan perangkat ini."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Homeserver ini telah mencapai batas Pengguna Aktif Bulanan."; -"login_error_resource_limit_exceeded_message_default" = "Homeserver ini telah melebihi batas sumbernya."; -"login_error_resource_limit_exceeded_title" = "Melebihi Batas Sumber"; -"login_desktop_device" = "Desktop"; -"login_tablet_device" = "Tablet"; -"login_mobile_device" = "Mobile"; -"login_error_forgot_password_is_not_supported" = "Lupa kata sandi saat ini belum didukung"; -"register_error_title" = "Pendaftaran Gagal"; -"login_invalid_param" = "Parameter tidak valid"; -"login_leave_fallback" = "Batalkan"; -"login_use_fallback" = "Gunakan halaman fallback"; -"login_error_login_email_not_yet" = "Tautan email yang belum diklik"; -"login_error_user_in_use" = "Nama pengguna ini sudah dipakai"; -"login_error_limit_exceeded" = "Terlalu banyak permintaan yang dikirim"; -"login_error_not_json" = "Tidak mengandung JSON yang valid"; -"login_error_unknown_token" = "Token akses yang ditentukan tidak diketahui"; -"login_error_bad_json" = "JSON cacat"; -"login_error_forbidden" = "Nama pengguna/kata sandi tidak valid"; -"login_error_registration_is_not_supported" = "Pendaftaran saat ini tidak didukung"; -"login_error_do_not_support_login_flows" = "Saat ini kami tidak mendukung salah satu atau semua alur masuk yang ditentukan oleh homeserver ini"; -"login_error_no_login_flow" = "Kami gagal untuk menerima informasi otentikasi dari homeserver ini"; -"login_error_title" = "Login Gagal"; -"login_prompt_email_token" = "Harap masukkan token validasi email Anda:"; -"login_email_placeholder" = "Alamat email"; -"login_email_info" = "Menentukan alamat email memungkinkan pengguna lain untuk menemukan Anda di Matrix dengan lebih mudah, dan akan memberi Anda cara untuk menyetel ulang sandi di masa mendatang."; -"login_display_name_placeholder" = "Nama tampilan (mis. Bob Obson)"; -"login_optional_field" = "opsional"; -"login_password_placeholder" = "Kata sandi"; -"login_user_id_placeholder" = "ID Matrix (mis. @bob:matrix.org atau bob)"; -"login_identity_server_info" = "Matrix menyediakan server identitas untuk melacak email mana, dll., milik ID Matrix mana. Hanya https://matrix.org yang saat ini ada."; -"login_identity_server_title" = "URL server identitas:"; -"login_home_server_info" = "Homeserver Anda menyimpan semua pesan Anda dan data akun"; -"login_home_server_title" = "URL Homeserver:"; -"login_server_url_placeholder" = "URL (mis. https://matrix.org)"; - -// Login Screen -"login_create_account" = "Buat akun:"; -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "Matrix"; -"auth_reset_password_error_not_found" = "Tidak ditemukan"; -"auth_reset_password_error_unauthorized" = "Tidak diotorisasi"; -"auth_invalid_user_name" = "Nama pengguna tidak valid"; -"ssl_only_accept" = "HANYA terima sertifikat jika administrator server telah mempublikasikan sidik jari yang cocok dengan sidik jari di atas."; -"ssl_expected_existing_expl" = "Sertifikat ini telah berubah dari yang sebelumnya tepercaya menjadi yang tidak tepercaya. Servernya mungkin telah memperbarui sertifikatnya. Hubungi administrator server untuk sidik jari yang diharapkan."; -"ssl_unexpected_existing_expl" = "Sertifikat ini telah berubah dari yang dipercaya oleh ponsel Anda. Ini SANGAT TIDAK BIASA. Anda disarankan untuk TIDAK MENERIMA sertifikat baru ini."; -"ssl_cert_new_account_expl" = "Jika administrator server mengatakan bahwa ini diharapkan, pastikan bahwa sidik jari di bawah ini cocok dengan sidik jari yang disediakannya."; -"ssl_cert_not_trust" = "Ini bisa berarti bahwa seseorang mencegat lalu lintas Anda, atau bahwa ponsel Anda tidak mempercayai sertifikat yang disediakan oleh server jarak jauh."; -"ssl_could_not_verify" = "Tidak dapat memverifikasi identitas server jarak jauh."; -"ssl_fingerprint_hash" = "Sidik Jari (%@):"; -"ssl_remain_offline" = "Abaikan"; -"ssl_logout_account" = "Keluar"; - -// unrecognized SSL certificate -"ssl_trust" = "Percayai"; -"call_transfer_to_user" = "Pindahkan ke %@"; -"call_consulting_with_user" = "Mengkonsultasi dengan %@"; -"call_video_with_user" = "Panggilan video dengan %@"; -"call_voice_with_user" = "Panggilan suara dengan %@"; -"call_more_actions_dialpad" = "Tombol penyetel"; -"call_more_actions_transfer" = "Pindahkan"; -"call_more_actions_audio_use_device" = "Speaker Perangkat"; -"call_more_actions_change_audio_device" = "Ubah Perangkat Audio"; -"call_more_actions_unhold" = "Lanjutkan"; -"call_more_actions_hold" = "Jeda"; -"call_holded" = "Anda menjeda panggilan ini"; -"call_remote_holded" = "%@ menjeda panggilan ini"; -"call_invite_expired" = "Undangan Panggilan Kedaluwarsa"; -"incoming_voice_call" = "Masuk Panggilan Suara"; -"incoming_video_call" = "Masuk Panggilan Video"; -"call_ended" = "Panggilan diakhiri"; -"call_ringing" = "Berdering…"; - -// Settings keys - -// call string -"call_connecting" = "Menghubungkan…"; -"settings_config_user_id" = "ID Pengguna: %@"; -"settings_config_identity_server" = "Server identitas: %@"; - -// gcm section -"settings_config_home_server" = "Homeserver: %@"; -"notification_settings_notify_all_other" = "Beritahu untuk semua pesan/ruangan lainnya"; -"notification_settings_by_default" = "Secara default..."; -"notification_settings_suppress_from_bots" = "Jangan beritahu saya tentang notifikasi dari bot"; -"notification_settings_receive_a_call" = "Beritahu saya ketika saya menerima panggilan"; -"notification_settings_people_join_leave_rooms" = "Beritahu saya ketika ada orang bergabung atau meninggalkan ruangan"; -"notification_settings_invite_to_a_new_room" = "Beritahu saya ketika saya diundang ke ruangan baru"; -"notification_settings_just_sent_to_me" = "Beritahu saya dengan suara tentang pesan yang baru saja dikirim ke saya"; -"notification_settings_contain_my_display_name" = "Beritahu saya dengan suara tentang pesan yang berisi nama tampilan saya"; -"notification_settings_contain_my_user_name" = "Beritahu saya dengan suara tentang pesan yang berisi nama pengguna saya"; -"notification_settings_other_alerts" = "Pemberitahuan Lainnya"; -"notification_settings_select_room" = "Pilih sebuah ruangan"; -"notification_settings_sender_hint" = "@pengguna:domain.com"; -"notification_settings_per_sender_notifications" = "Notifikasi per pengirim"; -"notification_settings_per_room_notifications" = "Notifikasi per ruangan"; -"notification_settings_custom_sound" = "Suara kustom"; -"notification_settings_highlight" = "Highlight"; -"notification_settings_word_to_match" = "kata untuk dicocokkan"; -"notification_settings_never_notify" = "Jangan diberitahu"; -"notification_settings_always_notify" = "Selalu diberitahu"; -"notification_settings_per_word_info" = "Kata-kata tidak cocok dengan huruf besar-kecil, dan mungkin menyertakan karakter pengganti *. Jadi:\nfoo cocok dengan string foo yang dikelilingi oleh pembatas kata (misalnya tanda baca dan spasi atau awal/akhir baris).\nfoo* cocok dengan kata apa pun yang dimulai foo.\n*foo* cocok dengan kata apa pun yang menyertakan 3 huruf foo."; -"notification_settings_per_word_notifications" = "Notifikasi per kata"; -"notification_settings_global_info" = "Pengaturan notifikasi disimpan ke akun pengguna Anda dan dibagikan di antara semua client yang mendukungnya (termasuk pemberitahuan desktop).\n\nAturan diterapkan secara berurutan; aturan pertama yang cocok menentukan hasil untuk pesan.\nJadi: Notifikasi per kata lebih penting daripada notifikasi per ruangan yang lebih penting daripada notifikasi per pengirim.\nUntuk beberapa aturan dengan jenis yang sama, yang pertama dalam daftar yang cocok akan diprioritaskan."; -"notification_settings_enable_notifications_warning" = "Semua notifikasi saat ini dinonaktifkan untuk semua perangkat."; -"notification_settings_enable_notifications" = "Aktifkan notifikasi"; - -// Notification settings screen -"notification_settings_disable_all" = "Nonaktifkan semua notifikasi"; -"settings_title_notifications" = "Notifikasi"; - -// Settings screen -"settings_title_config" = "Konfigurasi"; - -// members list Screen - -// accounts list Screen - -// image size selection - -// invitation members list Screen - -// room creation dialog Screen - -// room info dialog Screen - -// room details dialog screen -"room_details_title" = "Detail Ruangan"; -"login_error_must_start_http" = "URL harus dimulai dengan http[s]://"; - -// Login Screen -"login_error_already_logged_in" = "Sudah masuk"; -"message_unsaved_changes" = "Ada perubahan yang belum disimpan. Meninggalkannya akan membuang mereka."; -"unban" = "Hilangkan Cekalan"; -"ban" = "Cekal"; -"kick" = "Keluarkan"; -"num_members_other" = "%@ pengguna"; -"num_members_one" = "%@ pengguna"; -"membership_ban" = "Dicekal"; -"membership_leave" = "Keluar"; -"membership_invite" = "Diundang"; -"create_account" = "Buat Akun"; -"create_room" = "Buat Ruangan"; -"login" = "Masuk"; - -// actions -"action_logout" = "Keluar"; -"delete" = "Hapus"; -"share" = "Bagikan"; -"redact" = "Hapus"; -"resend" = "Kirim Ulang"; -"copy_button_name" = "Salin"; -"send" = "Kirim"; - -// Room Screen - -// general errors - -// Home Screen - -// Last seen time - -// call events - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /console/src/main/res/values/strings.xml. -*/ - - -// titles - -// button names -"ok" = "OKE"; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Anda membuat sejarah pesan di masa mendatang dapat dilihat oleh semuanya, sejak mereka bergabung."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Anda membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruang, sejak mereka bergabung."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Anda mengaktifkan enkripsi ujung-ke-ujung (algoritma %@ tidak dikenal)."; -"notice_room_third_party_revoked_invite" = "%@ menghilangkan undangannya %@ untuk bergabung ke ruangan ini"; -"notice_room_third_party_revoked_invite_by_you" = "Anda menghilangkan undangannya %@ untuk bergabung ke ruangan ini"; -"account_email_validation_error" = "Tidak dapat memverifikasi alamat email. Silakan cek email Anda dan tekan tautannya yang ada. Setelah selesai, tekan lanjut"; - -// contacts list screen -"invitation_message" = "Saya ingin berkomunikasi dengan Anda dengan Matrix. Silakan kunjungi ke websitenya di https://matrix.org untuk informasi selanjutnya."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Anda membuat sejarah pesan di masa mendatang dapat dilihat oleh semuanya, sejak mereka diundang."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Anda membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruangan, sejak mereka diundang."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Anda membuat pesan di masa depan dapat dilihat oleh semua anggota ruangan."; -"notice_room_history_visible_to_members_by_you" = "Anda membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruangan."; -"notice_room_history_visible_to_anyone_by_you" = "Anda membuat sejarah ruangan di masa mendatang dapat dilihat oleh siapa saja."; -"notice_redaction_by_you" = "Anda menghapus sebuah peristiwa (id: %@)"; -"notice_encryption_enabled_ok_by_you" = "Anda mengaktifkan enkripsi ujung-ke-ujung."; -"notice_room_created_by_you_for_dm" = "Anda bergabung."; -"notice_room_created_by_you" = "Anda membuat dan mengatur ruangan ini."; -"notice_profile_change_redacted_by_you" = "Anda memperbarui profil Anda %@"; -"notice_event_redacted_by_you" = " oleh Anda"; -"notice_room_topic_removed_by_you" = "Anda menghilangkan topik ruangan ini"; -"notice_room_name_removed_by_you_for_dm" = "Anda menghilangkan nama ruangan ini"; -"notice_room_name_removed_by_you" = "Anda menghilangkan nama ruangan ini"; -"notice_conference_call_request_by_you" = "Anda telah meminta konferensi VoIP"; -"notice_declined_video_call_by_you" = "Anda menolak anggilannya"; -"notice_ended_video_call_by_you" = "Anda mengakhiri pangilannya"; -"notice_answered_video_call_by_you" = "Anda menjawab panggilannya"; -"notice_placed_video_call_by_you" = "Anda melakukan panggilan video"; -"notice_placed_voice_call_by_you" = "Anda melakukan panggilan suara"; -"notice_room_name_changed_by_you_for_dm" = "Anda mengubah nama ruangan ini ke%@."; -"notice_room_name_changed_by_you" = "Anda mengubah nama ruangan ini ke %@."; -"notice_topic_changed_by_you" = "Anda mengubah topik ruangan nini ke \"%@\"."; -"notice_display_name_removed_by_you" = "Anda menghilangkan nama tampilan Anda"; -"notice_display_name_changed_from_by_you" = "Anda mengubah nama tampilan Anda dari %@ ke %@"; -"notice_display_name_set_by_you" = "Anda mengubah nama tampilan Anda ke %@"; -"notice_avatar_url_changed_by_you" = "Anda mengubah avatar Anda"; -"notice_room_withdraw_by_you" = "Anda menghilangkan undangannya %@"; -"notice_room_ban_by_you" = "Anda mencekal %@"; -"notice_room_unban_by_you" = "Anda menghilangkan cekalan %@"; -"notice_room_kick_by_you" = "Anda mengeluarkan %@"; -"notice_room_reject_by_you" = "Anda menolak undangannya"; -"notice_room_leave_by_you" = "Anda keluar"; -"notice_room_join_by_you" = "Anda bergabung"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Anda menghilangkan undangannya %@"; -"notice_room_third_party_registered_invite_by_you" = "Anda menerima undangan untuk %@"; -"notice_room_third_party_invite_by_you_for_dm" = "Anda mengundang %@"; -"notice_room_third_party_invite_by_you" = "Anda mengirim sebuah undangan ke @% untuk bergabung ke ruangan ini"; -"notice_room_invite_you" = "%@ mengundang Anda"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "Anda mengundang %@"; -"notice_conference_call_finished" = "Konferensi VoIP diakhiri"; -"notice_conference_call_started" = "Konferensi VoIP dimulai"; -"notice_conference_call_request" = "%@ telah meminta konferensi VoIP"; -"notice_declined_video_call" = "%@ menolak panggilannya"; -"notice_ended_video_call" = "%@ mengakhiri panggilannya"; -"notice_answered_video_call" = "%@ menjawab panggilannya"; -"notice_placed_video_call" = "%@ melakukan panggilan video"; -"notice_placed_voice_call" = "%@ melakukan panggilan suara"; -"notice_room_name_changed_for_dm" = "%@ mengubah nama ruangan ini ke %@."; -"notice_room_name_changed" = "%@ mengubah nama ruangan ini ke %@."; -"notice_topic_changed" = "%@ mengubah topik ruangan ini ke \"%@\"."; -"notice_display_name_removed" = "%@ menghilangkan nama tampilannya"; -"notice_display_name_changed_from" = "%@ mengubah nama tampilannya dari %@ ke %@"; -"notice_display_name_set" = "%@ mengubah nama tampilannya ke %@"; -"notice_avatar_url_changed" = "%@ mengubah avatarnya"; -"notice_room_reason" = ". Alasan: %@"; -"notice_room_withdraw" = "%@ menghilangkan undangannya %@"; -"notice_room_ban" = "%@ mencekal %@"; -"notice_room_unban" = "%@ menghilangkan cekalan %@"; -"notice_room_kick" = "%@ mengeluarkan %@"; -"notice_room_reject" = "%@ menolak undangannya"; -"notice_room_leave" = "%@ keluar"; -"notice_room_join" = "%@ bergabung"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ menghilangkan undangannya %@"; -"notice_room_third_party_registered_invite" = "%@ menerima undangan untuk %@"; -"notice_room_third_party_invite_for_dm" = "%@ mengundang %@"; -"notice_room_third_party_invite" = "%@ mengirim sebuah undangan ke %@ untuk bergabung ke ruangan ini"; - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /matrix-sdk/src/main/res/values/strings.xml. -*/ - -"notice_room_invite" = "%@ mengundang %@"; -"language_picker_default_language" = "Bawaan (%@)"; - -// Language picker -"language_picker_title" = "Pilih sebuah bahasa"; - -// Country picker -"country_picker_title" = "Pilih sebuah negara"; -"microphone_access_not_granted_for_voice_message" = "Pesan suara membutuhkan akses ke Mikrofon tetapi %@ tidak memiliki izin untuk menggunakannya"; -"local_contacts_access_discovery_warning" = "Untuk menemukan kontak Anda yang sudah menggunakan Matrix, %@ dapat mengirim alamat email dan nomor telepon di kontak Anda ke server identitas Matrix yang Anda pilih. Di mana saja yang didukung, data personal akan di-hash sebelum dikirim — mohon cek kebijakan privasi identitas server Anda untuk detail lainnya."; -"local_contacts_access_discovery_warning_title" = "Penemuan pengguna"; -"local_contacts_access_not_granted" = "Penemuan pengguna dari kontak lokal membutuhkan akses ke kontak Anda tetapi %@ tidak memiliki izin untuk menggunakannya"; -"microphone_access_not_granted_for_call" = "Panggilan membutuhkan akses ke Mikrofon tetapi %@ tidak memiliki izin untuk menggunakannya"; - -// Permissions -"camera_access_not_granted_for_call" = "Panggilan video membutuhkan akses ke Kamera tetapi %@ tidak memiliki izin untuk menggunakannya"; -"ssl_homeserver_url" = "URL Homeserver: %@"; -"user_id_placeholder" = "misal: @bob:homeserver"; -"network_error_not_reachable" = "Mohon cek koneksi jaringan Anda"; -"power_level" = "Level Kekuatan"; -"public" = "Publik"; -"private" = "Privat"; -"default" = "bawaan"; -"not_supported_yet" = "Belum didukung"; -"error_common_message" = "Sebuah kesalahan terjadi. Coba lagi nanti."; -"error" = "Gagal"; -"unsent" = "Belum Terkirim"; -"offline" = "offline"; - -// Others -"user_id_title" = "ID Pangguna:"; -"e2e_passphrase_create" = "Buat frasa sandi"; -"e2e_passphrase_not_match" = "Frasa sandi harus cocok"; -"e2e_passphrase_too_short" = "Frasa sandi terlalu pendek (Harus minimal %d karakter panjangnya)"; -"e2e_passphrase_empty" = "Frasa sandi tidak boleh kosong"; -"e2e_passphrase_confirm" = "Konfirmasi frasa sandi"; -"e2e_export" = "Ekspor"; -"e2e_export_prompt" = "Proses ini memungkinkan Anda untuk mengekspor kunci untuk pesan yang Anda telah terima di ruangan terenkripsi ke file lokal. Anda nanti akan dapat mengimpor filenya ke client Matrix lainnya di masa mendatang, supaya client itu juga bisa mendekripsi pesan yang terenkripsi.\nFile yang diekspor akan memungkinan siapa saja yang dapat membaca untuk mendekripsikan pesan terenkripsi apa saja yang Anda bisa lihat, jadi Anda harus berhati-hati untuk menyimpannya secara aman."; - -// E2E export -"e2e_export_room_keys" = "Ekspor kunci ruangan"; -"e2e_passphrase_enter" = "Masukkan frasa sandi"; -"e2e_import" = "Impor"; -"e2e_import_prompt" = "Proses ini memungkinkan Anda untuk mengimpor kunci enkripsi yang Anda punya sebelumnya yang diekspor dari client Matrix lain. Anda nanti akan dapat mendekripsi pesan apa saja yang client lain dapat mendekripsinya.\nFile yang diekspor dilindungi dengan frasa sandi. Anda seharusnya masukkan frasa sandinya di sini, untuk mendekripsi filenya."; - -// E2E import -"e2e_import_room_keys" = "Impor kunci ruangan"; -"format_time_d" = "h"; -"format_time_h" = "j"; -"format_time_m" = "m"; - -// Time -"format_time_s" = "d"; -"search_searching" = "Pencarian sedang dilakukan..."; - -// Search -"search_no_results" = "Tidak Ada Hasil"; -"group_section" = "Grup"; - -// Groups -"group_invite_section" = "Undangan"; -"contact_local_contacts" = "Kontak Local"; - -// Contacts -"contact_mx_users" = "Pengguna Matrix"; -"attachment_e2e_keys_import" = "Impor..."; -"attachment_e2e_keys_file_prompt" = "File ini berisi kunci enkripsi yang diimpor dari client Matrix lain.\nApakah Anda ingin menampilkan konten file atau impor kunci yang berisi?"; -"attachment_multiselection_original" = "Ukuran Sebenarnya"; -"attachment_multiselection_size_prompt" = "Apakah Anda ingin mengirim gambarnya sebagai:"; -"attachment_cancel_upload" = "Batalkan unggahannya?"; -"attachment_cancel_download" = "Batalkan unduhannya?"; -"attachment_large_with_resolution" = "Besar %@ (~%@)"; -"attachment_medium_with_resolution" = "Sedang %@ (~%@)"; -"attachment_small_with_resolution" = "Kecil %@ (~%@)"; -"attachment_large" = "Besar (~%@)"; -"attachment_medium" = "Sedang (~%@)"; -"attachment_small" = "Kecil (~%@)"; -"attachment_original" = "Ukuran Sebenarnya (%@)"; -"attachment_size_prompt_message" = "Anda dapat menonaktifkannya di pengaturan."; -"attachment_size_prompt_title" = "Konfirmasi ukuran untuk dikirim"; - -// Attachment -"attachment_size_prompt" = "Apakah Anda ingin mengirimnya sebagai:"; -"room_member_power_level_prompt" = "Anda tidak akan lagi membatalkan perubahan ini ketika Anda mempromosikan penggunanya untuk memiliki tingkat daya yang sama dengan Anda sendiri.\nApakah Anda yakin?"; - -// Room members -"room_member_ignore_prompt" = "Apakah Anda yakin untuk menyembunyikan semua pesan dari pengguna ini?"; -"message_reply_to_message_to_reply_to_prefix" = "Membalas ke"; -"message_reply_to_sender_sent_a_file" = "mengirim sebuah file."; -"message_reply_to_sender_sent_a_voice_message" = "mengirim sebuah pesan suara."; -"message_reply_to_sender_sent_an_audio_file" = "mengirim sebuah file audio."; -"message_reply_to_sender_sent_a_video" = "mengirim sebuah video."; - -// Reply to message -"message_reply_to_sender_sent_an_image" = "mengirim sebuah gambar."; -"room_no_conference_call_in_encrypted_rooms" = "Panggilan konferensi tidak didukung di ruangan terenkripsi"; -"room_no_power_to_create_conference_call" = "Anda membutuhkan izin untuk mengundang untuk memulai konferensi di ruangan ini"; -"room_left_for_dm" = "Anda keluar"; -"room_left" = "Anda meninggalkan ruangan ini"; -"room_error_timeline_event_not_found" = "Aplikasi ini sedang mencoba untuk memuat titik tertenu di linimasa ruangan ini tetapi tidak dapat menemukannya"; -"room_error_timeline_event_not_found_title" = "Gagal untuk memuat posisi linimasa"; -"room_error_cannot_load_timeline" = "Gagal untuk memuat linimasa"; -"room_error_topic_edition_not_authorized" = "Anda tidak diizinkan untuk mengubah topik ruangan ini"; -"room_error_name_edition_not_authorized" = "Anda tidak diizinkan untuk mengubah nama ruangan ini"; -"room_error_join_failed_empty_room" = "Saat ini tidak mungkin untuk bergabung ke ruangan yang kosong."; -"room_error_join_failed_title" = "Gagal untuk bergabung ke ruangan"; - -// Room -"room_please_select" = "Silakan pilih sebuah ruangan"; -"room_creation_participants_placeholder" = "(mis. @bob:homeserver1; @john:homeserver2...)"; -"room_creation_participants_title" = "Anggota:"; -"room_creation_alias_placeholder_with_homeserver" = "(mis. #foo%@)"; -"room_creation_alias_placeholder" = "(mis. #foo:example.org)"; -"room_creation_alias_title" = "Alias ruangan:"; -"room_creation_name_placeholder" = "(mis. grupMakanSiang)"; - -// Room creation -"room_creation_name_title" = "Nama ruangan:"; -"account_error_push_not_allowed" = "Notifikasi tidak diizinkan"; -"account_error_msisdn_wrong_description" = "Ini sepertinya bukan nomor telepon yang valid"; -"account_error_msisdn_wrong_title" = "Nomor Telepon Tidak Valid"; -"account_error_email_wrong_description" = "Ini sepertinya bukan alamat email yang valid"; -"account_error_email_wrong_title" = "Alamat Email Tidak Valid"; -"account_error_matrix_session_is_not_opened" = "Sesi Matrix tidak dibuka"; -"account_error_picture_change_failed" = "Penggantian gambar gagal"; -"account_error_display_name_change_failed" = "Penggantian nama tampilan gagal"; -"account_msisdn_validation_error" = "Tidak dapat memverifikasi nomor telepon."; -"account_msisdn_validation_message" = "Kami telah mengirim sebuah SMS dengan kode aktivasi. Silakan masukkan kodenya di bawah."; -"account_msisdn_validation_title" = "Menunggu Verifikasi"; -"account_email_validation_message" = "Silakan cek email Anda dan tekan tautannya yang ada. Setelah selesai, tekan lanjut."; -"account_email_validation_title" = "Menunggu Verifikasi"; -"account_linked_emails" = "Email yang tertaut"; -"account_link_email" = "Tautkan Email"; - -// Account -"account_save_changes" = "Simpan perubahan"; -"room_event_encryption_verify_ok" = "Verifikasi"; -"room_event_encryption_verify_message" = "Untuk memverifikasi bahwa sesi ini dapat dipercaya, harap hubungi pemiliknya menggunakan cara lain (misalnya secara langsung atau melalui panggilan telepon) dan tanyakan apakah kunci yang mereka lihat di Pengaturan Pengguna untuk sesi ini cocok dengan kunci di bawah ini:\n\n\tNama sesi: %@\n\tID sesi: %@\n\tKunci sesi: %@\n\nJika cocok, tekan tombol verifikasi di bawah. Jika tidak, maka orang lain mencegat sesi ini dan Anda mungkin ingin menekan tombol daftar hitam sebagai gantinya.\n\nDi masa yang mendatang proses verifikasi ini akan semakin canggih."; -"room_event_encryption_verify_title" = "Verifikasi sesi\n\n"; -"room_event_encryption_info_unblock" = "Hilangkan dari daftar hitam"; -"room_event_encryption_info_block" = "Tambahkan ke daftar hitam"; -"room_event_encryption_info_unverify" = "Hilangkan verifikasi"; -"room_event_encryption_info_verify" = "Verifikasi..."; -"room_event_encryption_info_device_blocked" = "Di dalam daftar hitam"; -"room_event_encryption_info_device_not_verified" = "TIDAK terverifikasi"; -"room_event_encryption_info_device_verified" = "Terverifikasi"; -"room_event_encryption_info_device_fingerprint" = "Sidik jari Ed25519\n"; -"room_event_encryption_info_device_verification" = "Verifikasi\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_name" = "Nama Publik\n"; -"room_event_encryption_info_device_unknown" = "sesi tidak dikenal\n"; -"room_event_encryption_info_device" = "\nInformasi sesi pengirim\n"; -"room_event_encryption_info_event_none" = "tidak ada"; -"room_event_encryption_info_event_unencrypted" = "tidak terenkripsi"; -"room_event_encryption_info_event_decryption_error" = "Kesalahan saat mendekripsi\n"; -"room_event_encryption_info_event_session_id" = "ID Sesi\n"; -"room_event_encryption_info_event_algorithm" = "Algoritma\n"; -"room_event_encryption_info_event_fingerprint_key" = "Mendapatkan kunci sidik jari Ed25519\n"; -"room_event_encryption_info_event_identity_key" = "Kunci identitas Curve25519\n"; -"room_event_encryption_info_event_user_id" = "ID Pengguna\n"; -"room_event_encryption_info_event" = "Informasi peristiwa\n"; - -// Encryption information -"room_event_encryption_info_title" = "Informasi enkripsi ujung-ke-ujung\n\n"; -"device_details_delete_prompt_message" = "Operasi ini membutuhkan otentikasi tambahan.\nUntuk melanjutkan, silakan masukkan kata sandi Anda."; -"device_details_delete_prompt_title" = "Otentikasi"; -"device_details_rename_prompt_message" = "Nama publik sesi dapat dilihat oleh orang yang berkomunikasi dengan Anda"; -"device_details_rename_prompt_title" = "Nama Sesi"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_last_seen" = "Terakhir dilihat\n"; -"device_details_identifier" = "ID\n"; -"device_details_name" = "Nama Publik\n"; - -// Devices -"device_details_title" = "Informasi sesi\n"; -"notification_settings_room_rule_title" = "Ruangan: '%@'"; -"settings_enter_validation_token_for" = "Masukkan token validasi untuk %@:"; -"settings_enable_push_notifications" = "Aktifkan notifikasi push"; -"settings_enable_inapp_notifications" = "Aktifkan notifikasi di dalam aplikasi"; - -// Settings -"settings" = "Pengaturan"; -"room_displayname_all_other_members_left" = "%@ (Keluar)"; -"room_displayname_more_than_two_members" = "%@ dan %@ lainnya"; -"room_displayname_two_members" = "%@ dan %@"; - -// room display name -"room_displayname_empty_room" = "Ruangan kosong"; -"notice_in_reply_to" = "Membalas ke"; -"notice_sticker" = "stiker"; -"notice_crypto_error_unknown_inbound_session_id" = "Sesi pengirim belum mengirim kami kunci untuk pesan ini."; -"notice_crypto_unable_to_decrypt" = "** Tidak dapat mendekripsi: %@ **"; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ membuat pesan di masa mendatang dapat dilihat oleh semuanya, sejak mereka bergabung."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ membuat sejarah pesan di masa mendatang dapat dilihat oleh semuanya, sejak mereka diundang."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruangan, sejak mereka bergabung."; -"notice_room_history_visible_to_anyone" = "%@ membuat sejarah ruangan di masa mendatang dapat dilihat oleh siapa saja."; -"notice_room_history_visible_to_members" = "%@ membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruangan."; -"notice_room_history_visible_to_members_for_dm" = "%@ membuat semua pesan di masa mendatang dapat dilihat oleh semua anggota ruangan."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ membuat sejarah ruangan di masa mendatang dapat dilihat oleh semua anggota ruang, sejak mereka diundang."; -"notice_error_unknown_event_type" = "Tipe peristiwa yang tidak dikenal"; -"notice_error_unexpected_event" = "Peristiwa yang tidak terduga"; -"notice_error_unsupported_event" = "Peristiwa yang tidak didukung"; -"notice_redaction" = "%@ menghapus sebuah peristiwa (id: %@)"; -"notice_feedback" = "Peristiwa umpan balik (id: %@): %@"; -"notice_unsupported_attachment" = "Lampiran yang tidak didukung: %@"; -"notice_invalid_attachment" = "lampiran tidak valid"; -"notice_file_attachment" = "lampiran file"; -"notice_location_attachment" = "lampiran lokasi"; -"notice_video_attachment" = "lampiran video"; -"notice_audio_attachment" = "lampiran audio"; -"notice_image_attachment" = "lampiran gambar"; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ mengaktifkan enkripsi ujung-ke-ujung (algoritma %2$@ tidak dikenal)."; -"notice_encryption_enabled_ok" = "%@ mengaktifkan enkripsi ujung-ke-ujung."; -"notice_encrypted_message" = "Pesan terenkripsi"; -"notice_room_related_groups" = "Grup yang terkait dengan ruangan ini adalah: %@"; -"notice_room_aliases_for_dm" = "Aliasnya adalah: %@"; -"notice_room_aliases" = "Alias ruangannya adalah: %@"; -"notice_room_power_level_event_requirement" = "Tingkat daya minimum yang terkait dengan peristiwa adalah:"; -"notice_room_power_level_acting_requirement" = "Tingkat daya minimum yang harus dimiliki pengguna sebelum bertindak adalah:"; -"attachment_unsupported_preview_title" = "Tidak dapat ditampilkan"; -"attachment_unsupported_preview_message" = "Tipe file ini tidak didukung."; -"message_reply_to_sender_sent_their_location" = "telah membagikan lokasinya."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/is.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/is.lproj/MatrixKit.strings deleted file mode 100644 index 8b1378917..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/is.lproj/MatrixKit.strings +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/it.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/it.lproj/MatrixKit.strings deleted file mode 100644 index fb679dc2b..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/it.lproj/MatrixKit.strings +++ /dev/null @@ -1,481 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Nuovo utente:"; -"login_server_url_placeholder" = "URL (es. https://matrix.org)"; -"login_home_server_title" = "URL homeserver:"; -"login_home_server_info" = "Lo storico delle conversazioni e i dati utente sono salvati sul tuo homeserver"; -"login_identity_server_title" = "URL del server d'identità:"; -"login_identity_server_info" = "Matrix fornisce dei server d'identità per associare i tuoi recapiti (es. l'indirizzo email) al tuo ID Matrix. Attualmente esiste solo il server https://matrix.org."; -"login_user_id_placeholder" = "ID Matrix (es. @gianni:matrix.org o gianni)"; -"login_password_placeholder" = "Password"; -"login_optional_field" = "opzionale"; -"login_display_name_placeholder" = "Nome completo (es. Gianni Rossi)"; -"login_email_info" = "Indicare un indirizzo email consente ad altri utenti di trovarti facilmente in Matrix, e ti da modo di resettare la password in caso di necessità."; -"login_email_placeholder" = "Indirizzo email"; -"login_prompt_email_token" = "Inserisci il token di validazione della tua email:"; -"login_error_title" = "Accesso fallito"; -"login_error_no_login_flow" = "Impossibile ottenere i dati di autenticazione da questo homeserver"; -"login_error_do_not_support_login_flows" = "Al momento non è supportato alcuno dei flussi di accesso definiti da questo homeserver"; -"login_error_registration_is_not_supported" = "La registrazione non è consentita al momento"; -"login_error_forbidden" = "Nome utente o password errati"; -"login_error_unknown_token" = "Il token di accesso inserito non è stato riconosciuto"; -"login_error_bad_json" = "JSON malformato"; -"login_error_not_json" = "Contenuto JSON non valido"; -"login_error_limit_exceeded" = "Limite di richieste superato"; -"login_error_user_in_use" = "Questo nome utente è già in uso"; -"login_error_login_email_not_yet" = "Il link inviato via email che non è stata ancora visitato"; -"login_use_fallback" = "Usa la pagina alternativa"; -"login_leave_fallback" = "Annulla"; -"login_invalid_param" = "Parametro non valido"; -"register_error_title" = "Registrazione fallita"; -"login_error_forgot_password_is_not_supported" = "Le password dimenticate non sono supportate"; -"notice_room_join_rule" = "Regole per accedere: %@"; -// contacts list screen -"invitation_message" = "Vorrei comunicare con te usando Matrix. Visita il sito web http://matrix.org per avere maggiori informazioni."; -"login_mobile_device" = "Mobile"; -"login_tablet_device" = "Tablet"; -"login_desktop_device" = "Desktop"; -"login_error_resource_limit_exceeded_title" = "Superato il limite delle risorse"; -"login_error_resource_limit_exceeded_message_default" = "Questo homeserver ha superato uno dei suoi limiti di risorsa."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Questo homeserver ha raggiunto il limite massimo di utenti attivi in un mese."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nContatta l’amministratore del sistema per continuare a usare questo servizio."; -"login_error_resource_limit_exceeded_contact_button" = "Contatta l’amministratore"; -// Action -"no" = "No"; -"yes" = "Si"; -"abort" = "Annulla"; -"back" = "Indietro"; -"close" = "Chiudi"; -"continue" = "Continua"; -"discard" = "Annulla"; -"dismiss" = "Annulla"; -"retry" = "Riprova"; -"sign_up" = "Registrati"; -"submit" = "Invia"; -"submit_code" = "Invia codice"; -"set_power_level" = "Imposta livello di accesso"; -"set_default_power_level" = "Ripristina livello di accesso"; -"set_moderator" = "Imposta moderatore"; -"set_admin" = "Imposta amministratore"; -"start_chat" = "Nuova chat"; -"start_voice_call" = "Nuova telefonata"; -"start_video_call" = "Nuova videochiamata"; -"mention" = "Menziona"; -"select_account" = "Seleziona un utente"; -"attach_media" = "Allega contenuto multimediale"; -"capture_media" = "Riprendi foto/video"; -"invite_user" = "Invita un utente Matrix"; -"reset_to_default" = "Ripristina predefinito"; -"resend_message" = "Reinvia messaggio"; -"select_all" = "Seleziona tutto"; -"cancel_upload" = "Annulla caricamento"; -"cancel_download" = "Annulla scaricamento"; -"show_details" = "Mostra dettagli"; -"answer_call" = "Rispondi a chiamata"; -"reject_call" = "Rifiuta chiamata"; -"end_call" = "Chiudi chiamata"; -"ignore" = "Ignora"; -"unignore" = "Non ignorare"; -// Events formatter -"notice_avatar_changed_too" = "(anche l’avatar è cambiato)"; -"notice_room_name_removed" = "%@ ha cancellato il nome del canale"; -"notice_room_topic_removed" = "%@ ha cancellato il titolo"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " da %@"; -"notice_event_redacted_reason" = " [motivo: %@]"; -"notice_profile_change_redacted" = "%@ ha aggiornato il suo profilo %@"; -"notice_room_created" = "%@ ha creato e configurato la stanza."; -"notice_room_power_level_intro" = "Il livello di accesso dei partecipanti è:"; -"notice_room_power_level_acting_requirement" = "Il livello minimo di accesso per partecipare è:"; -"notice_room_power_level_event_requirement" = "Il livello minimo di accesso per visualizzare eventi è:"; -"notice_room_aliases" = "Gli alias di questo canale sono: %@"; -"notice_room_related_groups" = "I gruppi associati a questo canale sono: %@"; -"notice_encrypted_message" = "Messaggio criptato"; -"notice_encryption_enabled" = "%@ ha attivato la crittografia end-to-end (algoritmo %@)"; -"notice_image_attachment" = "allegato immagine"; -"notice_audio_attachment" = "allegato audio"; -"notice_video_attachment" = "allegato video"; -"notice_location_attachment" = "allegato posizione"; -"notice_file_attachment" = "allegato file"; -"notice_invalid_attachment" = "allegato non valido"; -"notice_unsupported_attachment" = "Allegato non supportato: %@"; -"notice_feedback" = "Evento di feedback (id: %@): %@"; -"notice_redaction" = "%@ ha modificato un evento (id: %@)"; -"notice_error_unsupported_event" = "Evento non supportato"; -"notice_error_unexpected_event" = "Evento inatteso"; -"notice_error_unknown_event_type" = "Tipo di evento sconosciuto"; -"notice_room_history_visible_to_anyone" = "%@ ha permesso a chiunque di visualizzare lo storico della conversazione."; -"notice_room_history_visible_to_members" = "%@ ha permesso di visualizzare lo storico della conversazione solo ai partecipanti."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ ha permesso di visualizzare lo storico della conversazione solo ai partecipanti, dal momento del loro invito."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ ha permesso di visualizzare lo storico della conversazione solo ai partecipanti, dal momento della loro entrata."; -"notice_crypto_unable_to_decrypt" = "** Impossibile decriptare: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "La sessione del mittente non ci ha inviato le chiavi per questo messaggio."; -"notice_sticker" = "etichetta"; -"notice_in_reply_to" = "In risposta a"; -// room display name -"room_displayname_empty_room" = "Canale senza partecipanti"; -"room_displayname_two_members" = "%@ e %@"; -"room_displayname_more_than_two_members" = "%@ e %@ altri"; -// Settings -"settings" = "Impostazioni"; -"settings_enable_inapp_notifications" = "Abilita notifiche In-App"; -"settings_enable_push_notifications" = "Abilita notifiche push"; -"settings_enter_validation_token_for" = "Inserisci token di validazione per %@:"; -"notification_settings_room_rule_title" = "Canale: '%@'"; -// Devices -"device_details_title" = "Informazioni sessione\n"; -"device_details_name" = "Nome pubblico\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Ultimo contatto\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_title" = "Nome sessione"; -"device_details_rename_prompt_message" = "Il nome pubblico della sessione è visibile alle persone con cui comunichi"; -"device_details_delete_prompt_title" = "Autenticazione"; -"device_details_delete_prompt_message" = "Questa operazione necessita di ulteriore autenticazione.\nInserisci la tua password per procedere."; -// Encryption information -"room_event_encryption_info_title" = "Informazioni crittografia End-to-end\n\n"; -"room_event_encryption_info_event" = "Informazioni evento\n"; -"room_event_encryption_info_event_user_id" = "ID utente:\n"; -"room_event_encryption_info_event_identity_key" = "Chiave di identificazione Curve25519\n"; -"room_event_encryption_info_event_fingerprint_key" = "Richiamata chiave per l’impronta Ed25519\n"; -"room_event_encryption_info_event_algorithm" = "Algoritmo\n"; -"room_event_encryption_info_event_session_id" = "ID sessione\n"; -"room_event_encryption_info_event_decryption_error" = "Errore decrittazione\n"; -"room_event_encryption_info_event_unencrypted" = "non criptato"; -"room_event_encryption_info_event_none" = "nessuna"; -"room_event_encryption_info_device" = "\nInformazioni sessione mittente\n"; -"room_event_encryption_info_device_unknown" = "sessione sconosciuta\n"; -"room_event_encryption_info_device_name" = "Nome pubblico\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "Verifica\n"; -"room_event_encryption_info_device_fingerprint" = "Impronta Ed25519\n"; -"room_event_encryption_info_device_verified" = "Verificato"; -"room_event_encryption_info_device_not_verified" = "NON verificato"; -"room_event_encryption_info_device_blocked" = "Bloccato"; -"room_event_encryption_info_verify" = "Verifica..."; -"room_event_encryption_info_unverify" = "Annulla verifica"; -"room_event_encryption_info_block" = "Bloccato"; -"room_event_encryption_info_unblock" = "Sbloccato"; -"room_event_encryption_verify_title" = "Verifica sessione\n\n"; -"room_event_encryption_verify_message" = "Per verificare che questa sessione possa essere fidata, si prega di contattare il suo proprietario in altro modo (es. di persona o via telefonica) e chiedergli se la chiave che lui vede nelle Impostazioni Utente per la sessione sia uguale a questa:\n\n\tNome sessione: %@\n\tID sessione: %@\n\tChiave sessione: %@\n\nSe le chiavi sono identiche, premere il pulsante di verifica qui sotto. Se non lo sono, allora quancun altro sta intercettando questa sessione e probabilmente dovresti bloccarlo.\n\nIn futuro questo processo di verifica sarà più sofisticato."; -"room_event_encryption_verify_ok" = "Verifica"; -// Account -"account_save_changes" = "Salva cambiamenti"; -"account_link_email" = "Collegamento email"; -"account_linked_emails" = "Indirizzi email collegati"; -"account_email_validation_title" = "Verifica in corso"; -"account_email_validation_message" = "Controlla l'email e clicca sul collegamento che contiene. Dopo averlo fatto, clicca su continua."; -"account_email_validation_error" = "Impossibile verificare l'indirizzo email. Controlla l'email e clicca sul collegamento che contiene. Dopo averlo fatto, clicca su continua"; -"account_msisdn_validation_title" = "Verifica in corso"; -"account_msisdn_validation_message" = "Abbiamo inviato un SMS con un codice di attivazione. Inserisci il codice qui sotto."; -"account_msisdn_validation_error" = "Impossibile verificare il numero di telefono."; -"account_error_display_name_change_failed" = "Cambio del nome completo fallito"; -"account_error_picture_change_failed" = "Cambio dell'immagine fallito"; -"account_error_matrix_session_is_not_opened" = "La sessione Matrix non è attiva"; -"account_error_email_wrong_title" = "Indirizzo email non valido"; -"account_error_email_wrong_description" = "Questo non sembra essere un indirizzo email valido"; -"account_error_msisdn_wrong_title" = "Numero di telefono non valido"; -"account_error_msisdn_wrong_description" = "Questo non sembra essere un numero telefonico valido"; -"account_error_push_not_allowed" = "Notifiche non permesse"; -// Room creation -"room_creation_name_title" = "Nome canale:"; -"room_creation_name_placeholder" = "(es. gruppoPranzo)"; -"room_creation_alias_title" = "Alias canale:"; -"room_creation_alias_placeholder" = "(es. #blah:dominio.it)"; -"room_creation_alias_placeholder_with_homeserver" = "(es. #blah%@)"; -"room_creation_participants_title" = "Partecipanti:"; -"room_creation_participants_placeholder" = "(e.g. @gianni:homeserver1; @alice:homeserver2...)"; -// Room -"room_please_select" = "Seleziona un canale"; -"room_error_join_failed_title" = "Accesso al canale fallito"; -"room_error_join_failed_empty_room" = "Al momento non è possibile entrare in una stanza vuota."; -"room_error_name_edition_not_authorized" = "Non sei autorizzato a modificare il nome di questo canale"; -"room_error_topic_edition_not_authorized" = "Non sei autorizzato a modificare l'argomento di questo canale"; -"room_error_cannot_load_timeline" = "Caricamento storico dei messaggi fallito"; -"room_error_timeline_event_not_found_title" = "Caricamento della posizione nello storico fallito"; -"room_error_timeline_event_not_found" = "L'applicazione ha cercato di caricare un punto specifico dello storico dei messaggi in questo canale, ma non è riuscita a trovarlo"; -"room_left" = "Sei uscito dalla stanza"; -"room_no_power_to_create_conference_call" = "Hai bisogno del permesso per invitare a iniziare una conferenza in questo canale"; -"room_no_conference_call_in_encrypted_rooms" = "Le chiamate in conferenza non sono supportate nei canali criptati"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "immagine inviata."; -"message_reply_to_sender_sent_a_video" = "video inviato."; -"message_reply_to_sender_sent_an_audio_file" = "file audio inviato."; -"message_reply_to_sender_sent_a_file" = "file inviato."; -"message_reply_to_message_to_reply_to_prefix" = "In risposta a"; -// Room members -"room_member_ignore_prompt" = "Sei sicuro di voler nascondere tutti i messaggi da questo utente?"; -"room_member_power_level_prompt" = "Non potrai annullare questa modifica perché stai innalzando i permessi dell'utente al tuo stesso livello di accesso.\nSei sicuro?"; -// Attachment -"attachment_size_prompt" = "Vuoi inviare come:"; -"attachment_original" = "Dim. effettiva (%@)"; -"attachment_small" = "Piccolo (~%@)"; -"attachment_medium" = "Medio (~%@)"; -"attachment_large" = "Grande (~%@)"; -"attachment_cancel_download" = "Interrompi scaricamento?"; -"attachment_cancel_upload" = "Interrompi caricamento?"; -"attachment_multiselection_size_prompt" = "Vuoi inviare le immagini come:"; -"attachment_multiselection_original" = "Originali"; -"attachment_e2e_keys_file_prompt" = "Questo file contiene le chiavi crittografiche esportate da un client Matrix.\nVuoi visualizzarlo o importare le chiavi che contiene?"; -"attachment_e2e_keys_import" = "Importa..."; -// Contacts -"contact_mx_users" = "Utenti Matrix"; -"contact_local_contacts" = "Contatti locali"; -// Groups -"group_invite_section" = "Inviti"; -"group_section" = "Gruppi"; -// Search -"search_no_results" = "Nessun risultato"; -"search_searching" = "Ricerca in corso..."; -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "h"; -"format_time_d" = "d"; -// E2E import -"e2e_import_room_keys" = "Importa le chiavi del canale"; -"e2e_import_prompt" = "Questo processo ti consente di importare le chiavi di crittografia che hai precedentemente esportato da un altro client Matrix. Sarai quindi in grado di decifrare gli stessi messaggi leggibili dall'altro client.\nIl file esportato è protetto da password. Devi inserirla qui per decifrare il file."; -"e2e_import" = "Importa"; -"e2e_passphrase_enter" = "Inserisci password"; -// E2E export -"e2e_export_room_keys" = "Esporta chiavi del canale"; -"e2e_export_prompt" = "Questo processo consente di esportare in un file locale le chiavi per leggere i messaggi ricevuti in canali criptati. Sarai quindi in grado di importare il file in un altro client Matrix, in modo da rendergli possibile decriptare quei messaggi in futuro.\nIl file esportato consentirà a chiunque di decriptare tutti i messaggi che puoi leggere, quindi dovresti tenerlo al sicuro."; -"e2e_export" = "Esporta"; -"e2e_passphrase_confirm" = "Conferma password di accesso"; -"e2e_passphrase_empty" = "La password di accesso non può essere vuota"; -"e2e_passphrase_not_match" = "Le password di accesso devono corrispondere"; -"e2e_passphrase_create" = "Crea password di accesso"; -// Others -"user_id_title" = "ID utente:"; -"offline" = "non in linea"; -"unsent" = "Non inviato"; -"error" = "Errore"; -"error_common_message" = "Si è verificato un errore. Riprova più tardi."; -"not_supported_yet" = "Non ancora supportato"; -"default" = "predefinito"; -"private" = "Privato"; -"public" = "Pubblico"; -"power_level" = "Livello di accesso"; -"network_error_not_reachable" = "Verifica di essere connesso alla rete"; -"user_id_placeholder" = "es.: @gianni@homeserver"; -"ssl_homeserver_url" = "URL homeserver: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Le video chiamate necessitano di accesso alla videocamera ma %@ non ha il permesso di usarla"; -"microphone_access_not_granted_for_call" = "Le telefonate necessitano l'accesso al microfono, ma %@ non ha il permesso di usarlo"; -"local_contacts_access_not_granted" = "La ricerca degli utenti fra i contatti locali necessita l'accesso alla rubrica, ma %@ non ha il permesso di usarla"; -"local_contacts_access_discovery_warning_title" = "Ricerca utenti"; -"local_contacts_access_discovery_warning" = "Per scoprire chi fra i tuoi contatti sta già usando Matrix, %@ può inviare gli indirizzi email e i numeri telefonici della tua rubrica al tuo server d'identità Matrix. Se possibile, i dati personali vengono codificati prima di essere inviati - controlla la politica di riservatezza del tuo server d'identità per maggiori dettagli."; -// Country picker -"country_picker_title" = "Scegli un paese"; -// Language picker -"language_picker_title" = "Scegli una lingua"; -"language_picker_default_language" = "Predefinito (%@)"; -"notice_room_invite" = "%@ invitato %@"; -"notice_room_third_party_invite" = "%@ ha invitato %@ a unirsi al canale"; -"notice_room_third_party_registered_invite" = "%@ ha accettato l'invito per %@"; -"notice_room_third_party_revoked_invite" = "%@ ha ritirato l'invito per %@ a unirsi al canale"; -"notice_room_join" = "%@ si è unito al canale"; -"notice_room_leave" = "%@ ha lasciato il canale"; -"notice_room_reject" = "%@ ha rifiutato l'invito"; -"notice_room_kick" = "%@ ha espulso %@"; -"notice_room_unban" = "%@ ha revocato il divieto di accesso a %@"; -"notice_room_ban" = "%@ ha vietato l'accesso a %@"; -"notice_room_withdraw" = "%@ ha ritirato l'invito di %@"; -"notice_room_reason" = ". Motivo: %@"; -"notice_avatar_url_changed" = "%@ ha modificato la sua immagine"; -"notice_display_name_set" = "%@ ha impostato il suo nome in %@"; -"notice_display_name_changed_from" = "%@ ha cambiato il suo nome da %@ a %@"; -"notice_display_name_removed" = "%@ ha rimosso il suo nome"; -"notice_topic_changed" = "%@ ha cambiato l'argomento in \"%@\"."; -"notice_room_name_changed" = "%@ ha cambiato il nome della stanza in %@."; -"notice_placed_voice_call" = "%@ ha effettuato una telefonata"; -"notice_placed_video_call" = "%@ ha iniziato una videochiamata"; -"notice_answered_video_call" = "%@ ha risposto alla chiamata"; -"notice_ended_video_call" = "%@ ha terminato la chiamata"; -"notice_conference_call_request" = "%@ ha richiesto una conferenza VoIP"; -"notice_conference_call_started" = "Conferenza VoIP iniziata"; -"notice_conference_call_finished" = "Conferenza VoIP terminata"; -// button names -"ok" = "OK"; -"cancel" = "Annulla"; -"save" = "Salva"; -"leave" = "Esci"; -"send" = "Invia"; -"copy_button_name" = "Copia"; -"resend" = "Invia di nuovo"; -"redact" = "Cancella"; -"share" = "Condividi"; -"delete" = "Elimina"; -"view" = "Visualizza"; -// actions -"action_logout" = "Esci"; -"create_room" = "Crea un canale"; -"login" = "Entra"; -"create_account" = "Crea utente"; -"membership_invite" = "Invitati"; -"membership_leave" = "Uscito"; -"membership_ban" = "Espulso"; -"num_members_one" = "%@ utente"; -"num_members_other" = "%@ utenti"; -"invite" = "Invita"; -"kick" = "Espelli"; -"ban" = "Vieta accesso"; -"unban" = "Consenti accesso"; -"message_unsaved_changes" = "Ci sono modifiche non salvate. Uscendo saranno perse."; -// Login Screen -"login_error_already_logged_in" = "Accesso già effettuato"; -"login_error_must_start_http" = "l'URL deve iniziare con http[s]://"; -// room details dialog screen -"room_details_title" = "Dettagli stanza"; -// Settings screen -"settings_title_config" = "Configurazione"; -"settings_title_notifications" = "Notifiche"; -// Notification settings screen -"notification_settings_disable_all" = "Disabilita tutte le notifiche"; -"notification_settings_enable_notifications" = "Abilita le notifiche"; -"notification_settings_enable_notifications_warning" = "Le notifiche sono al momento disabilitate per tutti i dispositivi."; -"notification_settings_global_info" = "Le impostazioni di notifica sono salvate nel tuo account e condivise fra i client che le supportano (incluse le notifiche del desktop)\n\nLe regole si applicano in ordine; la prima regola che corrisponde definisce l'esito del messaggio.\nQuindi: Le notifiche per-parola hanno la precedenza sulle notifiche per-canale, che precedono quelle per-mittente.\nSe esistono diverse regole dello stesso tipo, viene applicata la prima della lista."; -"notification_settings_per_word_notifications" = "Notifiche per-parola"; -"notification_settings_per_word_info" = "Le parole sono confrontate senza tenere conto dei caratteri maiuscoli/minuscoli, e possono includere asterischi. Quindi:\nblah corrisponde alla stringa blah con qualsiasi delimitatore di parola (es. segni di punteggiatura e spazi o segni di accapo).\nblah* corrisponde a qualsiasi parola inizi con blah.\n*blah* corrisponde a qualsiasi parola contenga le 4 lettere blah."; -"notification_settings_always_notify" = "Notifica sempre"; -"notification_settings_never_notify" = "Non notificare mai"; -"notification_settings_word_to_match" = "parola da cercare"; -"notification_settings_highlight" = "Evidenziare"; -"notification_settings_custom_sound" = "Suono personalizzato"; -"notification_settings_per_room_notifications" = "Notifiche per-canale"; -"notification_settings_per_sender_notifications" = "Notifiche per-mittente"; -"notification_settings_sender_hint" = "@utente:dominio.it"; -"notification_settings_select_room" = "Seleziona un canale"; -"notification_settings_other_alerts" = "Altri avvisi"; -"notification_settings_contain_my_user_name" = "Notifica con un suono i messaggi che contengono il mio nome utente"; -"notification_settings_contain_my_display_name" = "Notifica con un suono i messaggi che contengono il mio nome completo"; -"notification_settings_just_sent_to_me" = "Notifica con un suono i messaggi inviati solo a me"; -"notification_settings_invite_to_a_new_room" = "Notifica quando sono invitato in un nuovo canale"; -"notification_settings_people_join_leave_rooms" = "Notifica quando gli utenti entrano o escono dai canali"; -"notification_settings_receive_a_call" = "Notifica quando ricevo una chiamata"; -"notification_settings_suppress_from_bots" = "Sopprimi le notifiche dai bot"; -"notification_settings_by_default" = "Come predefinito..."; -"notification_settings_notify_all_other" = "Notifica tutti gli altri messaggi/canali"; -// gcm section -"settings_config_home_server" = "Homeserver: %@"; -"settings_config_identity_server" = "Server d'identità: %@"; -"settings_config_user_id" = "ID utente: %@"; -// call string -"call_waiting" = "Attendere..."; -"call_connecting" = "In connessione…"; -"call_ended" = "Chiamata terminata"; -"call_ring" = "Chiamata in corso..."; -"incoming_video_call" = "Videochiamata in arrivo"; -"incoming_voice_call" = "Telefonata in arrivo"; -"call_invite_expired" = "Tempo di chiamata scaduto"; -// unrecognized SSL certificate -"ssl_trust" = "Fidati"; -"ssl_logout_account" = "Esci"; -"ssl_remain_offline" = "Ignora"; -"ssl_fingerprint_hash" = "Impronta (%@):"; -"ssl_could_not_verify" = "Impossibile verificare l'identità del server remoto."; -"ssl_cert_not_trust" = "Potrebbe voler dire che qualcuno sta intercettando il tuo traffico, o che il tuo telefono non si fida del certificato offerto dal server remoto."; -"ssl_cert_new_account_expl" = "Se l'amministratore del server ti ha detto che questo sarebbe successo, accertati che l'impronta qui sotto corrisponda a quella che lui ti ha fornito."; -"ssl_unexpected_existing_expl" = "Il certificato è diverso da quello di cui il tuo telefono si fidava. Questo è un COMPORTAMENTO ANOMALO. Si consiglia di NON ACCETTARE questo nuovo certificato."; -"ssl_expected_existing_expl" = "Il certificato è cambiato da uno precedentemente accettato a uno che non è fidato. Il server potrebbe averlo rinnovato. Contatta l'amministratore del server per verificarne l'impronta."; -"ssl_only_accept" = "Accetta il certificato SOLAMENTE se l'amministratore del server ha pubblicato un'impronta che corrisponde a quella qui sopra."; -"notice_encryption_enabled_ok" = "%@ ha attivato la crittografia end-to-end."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ ha attivato la crittografia end-to-end (algoritmo %2$@ non riconosciuto)."; -// Notice Events with "You" -"notice_room_invite_by_you" = "Hai invitato %@"; -"notice_room_invite_you" = "%@ ti ha invitato"; -"notice_room_third_party_invite_by_you" = "Hai mandato un invito a %@ a unirsi alla stanza"; -"notice_room_third_party_registered_invite_by_you" = "Hai accettato l'invito per %@"; -"notice_room_third_party_revoked_invite_by_you" = "Hai revocato l'invito per %@ a unirsi alla stanza"; -"notice_room_join_by_you" = "Sei entrato"; -"notice_room_leave_by_you" = "Sei uscito"; -"notice_room_reject_by_you" = "Hai rifiutato l'invito"; -"notice_room_kick_by_you" = "Hai buttato fuori %@"; -"notice_room_unban_by_you" = "Hai riammesso %@"; -"notice_room_ban_by_you" = "Hai bandito %@"; -"notice_room_withdraw_by_you" = "Hai ritirato l'invito di %@"; -"notice_avatar_url_changed_by_you" = "Hai cambiato il tuo avatar"; -"notice_display_name_set_by_you" = "Hai impostato il tuo nome visualizzato a %@"; -"notice_display_name_changed_from_by_you" = "Hai cambiato il tuo nome visualizzato da %@ a %@"; -"notice_display_name_removed_by_you" = "Hai rimosso il tuo nome visualizzato"; -"notice_topic_changed_by_you" = "Hai cambiato l'argomento in \"%@\"."; -"notice_room_name_changed_by_you" = "Hai cambiato il nome della stanza in %@."; -"notice_placed_voice_call_by_you" = "Hai iniziato una telefonata"; -"notice_placed_video_call_by_you" = "Hai iniziato una videochiamata"; -"notice_answered_video_call_by_you" = "Hai risposto alla chiamata"; -"notice_ended_video_call_by_you" = "Hai terminato la chiamata"; -"notice_conference_call_request_by_you" = "Hai richiesto una conferenza VoIP"; -"notice_room_name_removed_by_you" = "Hai rimosso il nome della stanza"; -"notice_room_topic_removed_by_you" = "Hai rimosso l'argomento"; -"notice_event_redacted_by_you" = " da te"; -"notice_profile_change_redacted_by_you" = "Hai aggiornato il tuo profilo %@"; -"notice_room_created_by_you" = "Hai creato e configurato la stanza."; -"notice_encryption_enabled_ok_by_you" = "Hai attivato la crittografia end-to-end."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Hai attivato la crittografia end-to-end (algoritmo %@ sconosciuto)."; -"notice_redaction_by_you" = "Hai corretto un evento (id: %@)"; -"notice_room_history_visible_to_anyone_by_you" = "Hai reso visibile a chiunque la cronologia futura della stanza."; -"notice_room_history_visible_to_members_by_you" = "Hai reso visibile a tutti i membri della stanza la cronologia futura della stanza."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Hai reso visibile a tutti i membri della stanza la cronologia futura della stanza, dal momento del loro invito."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Hai reso visibile a tutti i membri della stanza la cronologia futura della stanza, dal momento della loro entrata."; -// New -"notice_room_join_rule_invite" = "%@ ha reso la stanza solo su invito."; -"notice_room_join_rule_invite_by_you" = "Hai reso la stanza solo su invito."; -"notice_room_join_rule_public" = "%@ ha reso la stanza pubblica."; -"notice_room_join_rule_public_by_you" = "Hai reso la stanza pubblica."; -"notice_room_name_removed_for_dm" = "%@ ha rimosso il nome"; -"notice_room_created_for_dm" = "%@ è entrato."; -"notice_room_join_rule_invite_for_dm" = "%@ l'ha resa solo su invito."; -"notice_room_join_rule_invite_by_you_for_dm" = "L'hai resa solo su invito."; -"notice_room_join_rule_public_for_dm" = "%@ l'ha resa pubblica."; -"notice_room_join_rule_public_by_you_for_dm" = "L'hai resa pubblica."; -"notice_room_power_level_intro_for_dm" = "Il livello di accesso dei partecipanti è:"; -"notice_room_aliases_for_dm" = "Gli alias sono: %@"; -"notice_room_history_visible_to_members_for_dm" = "%@ ha reso visibili i messaggi futuri a tutti i membri della stanza."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ ha reso visibili i messaggi futuri a chiunque, dal momento dell'invito."; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ ha reso visibili i messaggi futuri a chiunque, dal momento dell'entrata."; -"room_left_for_dm" = "Sei uscito"; -"notice_room_third_party_invite_for_dm" = "%@ ha invitato %@"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ ha revocato l'invito per %@"; -"notice_room_name_changed_for_dm" = "%@ ha cambiato il nome in %@."; -"notice_room_third_party_invite_by_you_for_dm" = "Hai invitato %@"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Hai revocato l'invito per %@"; -"notice_room_name_changed_by_you_for_dm" = "Hai cambiato il nome in %@."; -"notice_room_name_removed_by_you_for_dm" = "Hai rimosso il nome"; -"notice_room_created_by_you_for_dm" = "Sei entrato."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Hai reso visibili i messaggi futuri a tutti i membri della stanza."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Hai reso visibili i messaggi futuri a chiunque, dal momento dell'invito."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Hai reso visibili i messaggi futuri a chiunque, dal momento dell'entrata."; -"call_more_actions_dialpad" = "Tastierino numerico"; -"call_more_actions_transfer" = "Trasferisci"; -"call_more_actions_audio_use_device" = "Altoparlante dispositivo"; -"call_more_actions_audio_use_headset" = "Usa audio da cuffie"; -"call_more_actions_change_audio_device" = "Cambia dispositivo audio"; -"call_more_actions_unhold" = "Riprendi"; -"call_more_actions_hold" = "In attesa"; -"call_holded" = "Hai messo la chiamata in attesa"; -"call_remote_holded" = "%@ ha messo la chiamata in attesa"; -"notice_declined_video_call_by_you" = "Hai rifiutato la chiamata"; -"notice_declined_video_call" = "%@ ha rifiutato la chiamata"; -"resume_call" = "Riprendi"; -"call_transfer_to_user" = "Trasferisci a %@"; -"call_consulting_with_user" = "Consultazione con %@"; -"call_video_with_user" = "Videochiamata con %@"; -"call_voice_with_user" = "Telefonata con %@"; -"call_ringing" = "Sta squillando…"; -"e2e_passphrase_too_short" = "Password troppo corta (deve avere almeno %d caratteri)"; -"microphone_access_not_granted_for_voice_message" = "I messaggi vocali hanno bisogno dell'accesso al microfono, ma %@ non ha il permesso di usarlo"; -"message_reply_to_sender_sent_a_voice_message" = "inviato un messaggio vocale."; -"attachment_large_with_resolution" = "Grande %@ (~%@)"; -"attachment_medium_with_resolution" = "Medio %@ (~%@)"; -"attachment_small_with_resolution" = "Piccolo %@ (~%@)"; -"attachment_size_prompt_message" = "Puoi disattivarlo nelle impostazioni."; -"attachment_size_prompt_title" = "Conferma dimensione da inviare"; -"auth_reset_password_error_not_found" = "Non trovato"; -"auth_reset_password_error_unauthorized" = "Non autorizzato"; -"auth_invalid_user_name" = "Nome utente non valido"; -"room_displayname_all_other_members_left" = "%@ (Uscito)"; -"auth_username_in_use" = "Nome utente in uso"; -"rename" = "Rinomina"; -"attachment_unsupported_preview_message" = "Questo tipo di file non è supportato."; -"attachment_unsupported_preview_title" = "Anteprima non disponibile"; -"message_reply_to_sender_sent_their_location" = "ha condiviso la sua posizione."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ja.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ja.lproj/MatrixKit.strings deleted file mode 100644 index b6611ded7..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ja.lproj/MatrixKit.strings +++ /dev/null @@ -1,414 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "アカウント作成:"; -"login_server_url_placeholder" = "URL (例 https://matrix.org)"; -"login_home_server_title" = "接続先サーバーURL:"; -"login_home_server_info" = "あなたの接続先サーバーは、あなたの全ての会話とアカウント情報を保存します"; -"login_identity_server_title" = "認証サーバーURL:"; -"login_password_placeholder" = "パスワード"; -"login_email_placeholder" = "メールアドレス"; -// Action -"no" = "いいえ"; -"yes" = "はい"; -"back" = "戻る"; -"close" = "閉じる"; -"continue" = "続ける"; -"sign_up" = "登録"; -"resend_message" = "メッセージを再送信"; -"select_all" = "全て選択"; -"show_details" = "詳細を表示"; -"login_identity_server_info" = "Matrixは、どの電子メールなどがどのMatrix IDに属しているかを追跡するアイデンティティサーバーを提供します。 現在 https://matrix.org のみが存在します。"; -"login_user_id_placeholder" = "Matrix ID(例 @bob:matrix.org または bob)"; -"login_optional_field" = "オプション"; -"login_display_name_placeholder" = "表示名 (例 Bob Obson)"; -"login_email_info" = "メールアドレスを指定すると、他のユーザーがあなたをMatrixで簡単に見つけることができ、今後パスワードをリセットすることができます。"; -"login_prompt_email_token" = "メールの検証トークンを入力してください:"; -"login_error_title" = "ログインに失敗しました"; -"login_error_no_login_flow" = "このホームサーバーから認証情報を取得できませんでした"; -"login_error_do_not_support_login_flows" = "現在、このホームサーバーによって定義されたログインフローの一部または全てをサポートしていません"; -"login_error_registration_is_not_supported" = "登録は現在サポートされていません"; -"login_error_forbidden" = "無効なユーザー名/パスワード"; -"login_error_unknown_token" = "指定されたアクセストークンが認識されませんでした"; -"login_error_bad_json" = "不正な形式のJSON"; -"login_error_not_json" = "有効なJSONを含んでいませんでした"; -"login_error_limit_exceeded" = "あまりにも多くのリクエストが送られました"; -"login_error_user_in_use" = "このユーザー名は既に使用されています"; -"login_error_login_email_not_yet" = "まだクリックされていないメールリンク"; -"login_use_fallback" = "フォールバックページを使用"; -"login_leave_fallback" = "キャンセル"; -"login_invalid_param" = "無効なパラメーター"; -"register_error_title" = "登録に失敗しました"; -"login_error_forgot_password_is_not_supported" = "Forgot passwordは現在サポートされていません"; -"login_mobile_device" = "携帯"; -"login_tablet_device" = "タブレット"; -"login_desktop_device" = "デスクトップ"; -"login_error_resource_limit_exceeded_title" = "リソース制限を超えました"; -"login_error_resource_limit_exceeded_message_default" = "このホームサーバーは、リソース制限の1つを超えています。"; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "このホームサーバーは、月間アクティブユーザー制限を超えています。"; -"login_error_resource_limit_exceeded_message_contact" = "\n\nこのサービスを続行するには、サービス管理者に連絡してください。"; -"login_error_resource_limit_exceeded_contact_button" = "管理者に連絡"; -"abort" = "中断"; -"discard" = "破棄"; -"dismiss" = "却下"; -"retry" = "再試行"; -"submit" = "提出"; -"submit_code" = "コードを送信"; -"set_default_power_level" = "権限レベルをリセット"; -"set_moderator" = "モデレーターを設定"; -"set_admin" = "管理者を設定"; -"start_chat" = "チャットを開始"; -"start_voice_call" = "音声通話を開始"; -"start_video_call" = "ビデオ通話を開始"; -"mention" = "メンション"; -"select_account" = "アカウントを選択"; -"attach_media" = "ライブラリからメディアを添付"; -"capture_media" = "写真/ビデオを撮る"; -"invite_user" = "Matrixユーザーを招待"; -"reset_to_default" = "デフォルトにリセット"; -"cancel_upload" = "アップロードをキャンセル"; -"cancel_download" = "ダウンロードをキャンセル"; -"answer_call" = "通話に応答"; -"reject_call" = "通話を拒否"; -"end_call" = "通話終了"; -"ignore" = "無視"; -// Events formatter -"notice_avatar_changed_too" = "(アバターも変更されました)"; -"notice_room_name_removed" = "%@がルーム名を削除しました"; -"notice_room_topic_removed" = "%@がトピックを削除しました"; -"notice_event_redacted" = "<編集された%@>"; -"notice_event_redacted_by" = " %@により"; -"notice_event_redacted_reason" = " [理由: %@]"; -"notice_profile_change_redacted" = "%@が彼らのプロフィール %@を更新しました"; -"notice_room_created" = "%@がルームを作成しました"; -"notice_room_join_rule" = "結合ルールは次のとおり: %@"; -"notice_room_power_level_intro" = "ルームメンバーの権限レベル:"; -"notice_room_power_level_acting_requirement" = "アクション前にユーザーの必要な最小権限レベル:"; -"notice_room_power_level_event_requirement" = "イベントに関連する最小権限レベル:"; -"notice_room_aliases" = "ルームエイリアス: %@"; -"notice_room_related_groups" = "このルームに関連付けられたグループ: %@"; -"notice_encrypted_message" = "暗号化されたメッセージ"; -"notice_encryption_enabled" = "%@はエンドツーエンド暗号化を有効にする (アルゴリズム %@)"; -"notice_image_attachment" = "画像添付"; -"notice_audio_attachment" = "音声添付"; -"notice_video_attachment" = "動画添付"; -"notice_location_attachment" = "位置情報添付"; -"notice_file_attachment" = "ファイル添付"; -"notice_invalid_attachment" = "無効な添付"; -"notice_unsupported_attachment" = "サポートされていない添付: %@"; -"notice_feedback" = "フィードバックイベント (id: %@): %@"; -"notice_redaction" = "%@はイベントを編集しました (id: %@)"; -"notice_error_unsupported_event" = "サポートされていないイベント"; -"notice_error_unexpected_event" = "予期しないイベント"; -"notice_error_unknown_event_type" = "不明なイベントタイプ"; -"notice_room_history_visible_to_anyone" = "%@が今後のルーム履歴を「誰でも」閲覧可能に設定しました。"; -"notice_room_history_visible_to_members" = "%@が今後のルーム履歴を「メンバーのみ」閲覧可能に設定しました。"; -"notice_room_history_visible_to_members_from_invited_point" = "%@が今後のルーム履歴を「メンバーのみ (招待された時点以降)」閲覧可能に設定しました。"; -"notice_room_history_visible_to_members_from_joined_point" = "%@が今後のルーム履歴を「メンバーのみ (参加した時点以降)」閲覧可能に設定しました。"; -"notice_crypto_unable_to_decrypt" = "** 復号化できません: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "送信者のセッションからこのメッセージ用の鍵が送信されていません。"; -"notice_sticker" = "ステッカー"; -"notice_in_reply_to" = "返信先"; -// room display name -"room_displayname_empty_room" = "空のルーム"; -"room_displayname_two_members" = "%@ と %@"; -"room_displayname_more_than_two_members" = "%@ と %@ 他"; -// Settings -"settings" = "設定"; -"settings_enable_inapp_notifications" = "アプリ内通知を有効にする"; -"settings_enable_push_notifications" = "プッシュ通知を有効にする"; -"settings_enter_validation_token_for" = "%@の検証トークンを入力:"; -"notification_settings_room_rule_title" = "ルーム: '%@'"; -// Devices -"device_details_title" = "セッション情報\n"; -"device_details_name" = "名前\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "最終接続日\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "セッションの公開名は、あなたとやり取りする人々に対して表示されます"; -"device_details_delete_prompt_title" = "認証"; -"device_details_delete_prompt_message" = "この操作には、追加の認証が必要です。\n続行するには、パスワードを入力してください。"; -// Encryption information -"room_event_encryption_info_title" = "エンドツーエンド暗号化情報\n\n"; -"room_event_encryption_info_event" = "イベント情報\n"; -"room_event_encryption_info_event_user_id" = "ユーザーID\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519 固有鍵\n"; -"room_event_encryption_info_event_fingerprint_key" = "要求されたフィンガープリントキー Ed25519\n"; -"room_event_encryption_info_event_algorithm" = "アルゴリズム\n"; -"room_event_encryption_info_event_session_id" = "セッションID\n"; -"room_event_encryption_info_event_decryption_error" = "復号化エラー\n"; -"room_event_encryption_info_event_unencrypted" = "暗号化されていません"; -"room_event_encryption_info_event_none" = "なし"; -"room_event_encryption_info_device" = "\n送信者セッション情報\n"; -"room_event_encryption_info_device_unknown" = "未知のセッション\n"; -"room_event_encryption_info_device_name" = "名前\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "検証\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519 fingerprint\n"; -"room_event_encryption_info_device_verified" = "検証済"; -"room_event_encryption_info_device_not_verified" = "検証されていない"; -"room_event_encryption_info_device_blocked" = "ブラックリストに載せた"; -"room_event_encryption_info_verify" = "検証しています…"; -"room_event_encryption_info_unverify" = "未検証"; -"room_event_encryption_info_block" = "ブラックリスト"; -"room_event_encryption_info_unblock" = "ブラックでないリスト"; -"room_event_encryption_verify_title" = "セッション検証\n\n"; -"room_event_encryption_verify_message" = "このセッションが信頼できることを確認するには、他の方法(対面や電話など)で所有者に連絡し、セッションのユーザー設定で表示される鍵が以下の鍵と一致するかどうかを訪ねてください。\n\nセッション名: %@\nセッションID: %@\nセッションキー: %@\n\n一致する場合は、下の確認ボタンを押します。 それ以外の人がこのセッションを傍受している場合は、代わりにブラックリストボタンを押してください。\n\n将来この検証プロセスはより洗練されたものになります。"; -"room_event_encryption_verify_ok" = "検証"; -// Account -"account_save_changes" = "変更を保存"; -"account_link_email" = "リンクメール"; -"account_linked_emails" = "リンクされたメール"; -"account_email_validation_title" = "認証の保留中"; -"account_email_validation_message" = "電子メールを確認して、本文中のURLをクリックしてください。完了したら「続行する」をクリックしてください。"; -"account_email_validation_error" = "メールアドレスを認証できません。メールを確認して、記載されているリンクをクリックしてください。その後、「続行する」をクリックしてください"; -"account_msisdn_validation_title" = "認証の保留中"; -"account_msisdn_validation_message" = "SMSで認証番号を送りました。以下にその番号を入力してください。"; -"account_msisdn_validation_error" = "電話番号を確認できません。"; -"account_error_display_name_change_failed" = "表示名の変更に失敗しました"; -"account_error_picture_change_failed" = "画像の変更に失敗しました"; -"account_error_matrix_session_is_not_opened" = "Matrixセッションが開かれていません"; -"account_error_email_wrong_title" = "無効な電子メールアドレス"; -"account_error_email_wrong_description" = "メールアドレスの形式が正しくありません"; -"account_error_msisdn_wrong_title" = "無効な電話番号"; -"account_error_msisdn_wrong_description" = "電話番号の形式が正しくありません"; -// Room creation -"room_creation_name_title" = "ルーム名:"; -"room_creation_name_placeholder" = "(例 ランチグループ)"; -"room_creation_alias_title" = "ルームの別名:"; -"room_creation_alias_placeholder" = "(例 #foo:example.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(例 #foo%@)"; -"room_creation_participants_title" = "参加者:"; -"room_creation_participants_placeholder" = "(例 @bob:homeserver1; @john:homeserver2…)"; -// Room -"room_please_select" = "ルームを選択してください"; -"room_error_join_failed_title" = "ルームに参加できませんでした"; -"room_error_join_failed_empty_room" = "現在空のルームに再参加することはできません。"; -"room_error_name_edition_not_authorized" = "このルームの名前を編集する権限がありません"; -"room_error_topic_edition_not_authorized" = "このルームのトピックを編集する権限がありません"; -"room_error_cannot_load_timeline" = "タイムラインの読み込みに失敗しました"; -"room_error_timeline_event_not_found_title" = "タイムラインの位置を読み込めませんでした"; -"room_error_timeline_event_not_found" = "アプリケーションがこのルームのタイムラインに特定のポイントをロードしようとしましたが、それを見つけることができませんでした"; -"room_left" = "あなたはルームを出ました"; -"room_no_power_to_create_conference_call" = "このルームで会議を開始するために招待する権限が必要です"; -"room_no_conference_call_in_encrypted_rooms" = "暗号化された会議室では会議通話はサポートされません"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "画像を送信しました。"; -"message_reply_to_sender_sent_a_video" = "動画を送りました。"; -"message_reply_to_sender_sent_an_audio_file" = "オーディオファイルを送信しました。"; -"message_reply_to_sender_sent_a_file" = "ファイルを送信しました。"; -"message_reply_to_message_to_reply_to_prefix" = "に返信"; -// Room members -"room_member_ignore_prompt" = "このユーザーからの全てのメッセージを非表示にしますか?"; -"room_member_power_level_prompt" = "この変更を元に戻すことはできません。ユーザーが自分と同じレベルの権限を持つように促しますが、よろしいですか?"; -// Attachment -"attachment_size_prompt" = "次のように送信しますか:"; -"attachment_original" = "実際のサイズ: %@"; -"attachment_small" = "小: %@"; -"attachment_medium" = "中: %@"; -"attachment_large" = "大: %@"; -"attachment_cancel_download" = "ダウンロードをキャンセルしますか?"; -"attachment_cancel_upload" = "アップロードをキャンセルしますか?"; -"attachment_multiselection_size_prompt" = "画像を次のように送信しますか:"; -"attachment_multiselection_original" = "実際のサイズ"; -"attachment_e2e_keys_file_prompt" = "このファイルには、Matrixクライアントからエクスポートされた暗号鍵が含まれています。\nファイルの内容を表示するか、ファイル内の鍵をインポートしますか?"; -"attachment_e2e_keys_import" = "インポート…"; -// Contacts -"contact_mx_users" = "Matrixユーザー"; -"contact_local_contacts" = "ローカルの連絡先"; -// Groups -"group_invite_section" = "招待"; -"group_section" = "グループ"; -// Search -"search_no_results" = "結果がありません"; -"search_searching" = "検索しています…"; -// Time -"format_time_s" = "秒"; -"format_time_m" = "分"; -"format_time_h" = "時"; -"format_time_d" = "日"; -// E2E import -"e2e_import_room_keys" = "ルームの暗号鍵をインポート"; -"e2e_import_prompt" = "このプロセスでは、以前に別のMatrixクライアントからエクスポートした暗号鍵をインポートできます。 これにより、他のクライアントが解読できる全てのメッセージを解読することができます。\nエクスポートした暗号鍵のファイルは、パスフレーズで保護されています。 ファイルを復号化するには、パスフレーズをここに入力する必要があります。"; -"e2e_import" = "インポート"; -"e2e_passphrase_enter" = "パスフレーズを入力"; -// E2E export -"e2e_export_room_keys" = "ルームの暗号鍵をエクスポート"; -"e2e_export_prompt" = "このプロセスでは、暗号化されたルームで受信したメッセージの鍵をローカルファイルにエクスポートできます。 そのファイルを別のMatrixクライアントにインポートすると、クライアントはこれらのメッセージを復号化することができます。\nエクスポートしたファイルを使えば、誰でも暗号化されたメッセージを復号化できるので、ファイルを安全に保つように注意する必要があります。"; -"e2e_export" = "エクスポート"; -"e2e_passphrase_confirm" = "パスフレーズを確認"; -"e2e_passphrase_empty" = "パスフレーズは空であってはいけません"; -"e2e_passphrase_not_match" = "パスフレーズは一致する必要があります"; -"e2e_passphrase_create" = "パスフレーズの作成"; -// Others -"user_id_title" = "ユーザーID:"; -"offline" = "オフライン"; -"unsent" = "未送信"; -"error" = "エラー"; -"error_common_message" = "エラーが発生しました。 後でもう一度お試しください。"; -"not_supported_yet" = "まだサポートされていません"; -"default" = "既定"; -"private" = "非公開"; -"public" = "公開"; -"power_level" = "権限レベル"; -"network_error_not_reachable" = "ネットワーク接続を確認してください"; -"user_id_placeholder" = "例: @bob:homeserver"; -"ssl_homeserver_url" = "ホームサーバーのURL: %@"; -// Permissions -"camera_access_not_granted_for_call" = "ビデオ通話はカメラにアクセスする必要がありますが、%@にはそのカメラを使用する権限がありません"; -"microphone_access_not_granted_for_call" = "通話にはマイクへのアクセスが必要ですが、%@には使用許可がありません"; -"local_contacts_access_not_granted" = "ローカルの連絡先からユーザーを探すには連絡先にアクセスする必要がありますが、%@にはそのアクセス権限がありません"; -"local_contacts_access_discovery_warning_title" = "ユーザーの探索"; -"local_contacts_access_discovery_warning" = "%@は、ユーザーを検索するためにあなたの連絡先から電子メールと電話番号をアップロードしたい"; -// Country picker -"country_picker_title" = "国を選択"; -// Language picker -"language_picker_title" = "言語を選択"; -"language_picker_default_language" = "既定値 (%@)"; -"notice_room_invite" = "%@が%@を招待しました"; -"notice_room_third_party_invite" = "%@が%@にルームへの招待状を送りました"; -"notice_room_third_party_registered_invite" = "%@が%@の招待を受け入れました"; -"notice_room_join" = "%@が参加しました"; -"notice_room_leave" = "%@が退出しました"; -"notice_room_reject" = "%@が招待を拒否しました"; -"notice_room_kick" = "%@が%@を追い出しました"; -"notice_room_unban" = "%@が%@を追放解除しました"; -"notice_room_ban" = "%@が%@を追放しました"; -"notice_room_withdraw" = "%@が%@の招待を辞退しました"; -"notice_room_reason" = ". 理由: %@"; -"notice_avatar_url_changed" = "%@がアバターを変更しました"; -"notice_display_name_set" = "%@が表示名を%@に設定しました"; -"notice_display_name_changed_from" = "%@が表示名を%@から%@に変更しました"; -"notice_display_name_removed" = "%@が表示名を削除しました"; -"notice_topic_changed" = "%@がトピックを次のように変更しました:%@"; -"notice_room_name_changed" = "%@がルーム名を次のように変更しました:%@"; -"notice_placed_voice_call" = "%@が電話をかけました"; -"notice_placed_video_call" = "%@がビデオ電話をかけました"; -"notice_answered_video_call" = "%@が電話に出ました"; -"notice_ended_video_call" = "%@が通話を終了しました"; -"notice_conference_call_request" = "%@がVoIP会議をリクエストしました"; -"notice_conference_call_started" = "VoIP会議が開始しました"; -"notice_conference_call_finished" = "VoIP会議が終了しました"; -// button names -"ok" = "OK"; -"cancel" = "キャンセル"; -"save" = "保存"; -"leave" = "退出"; -"send" = "送信"; -"copy_button_name" = "コピー"; -"resend" = "再送信"; -"redact" = "編集"; -"share" = "共有"; -"set_power_level" = "権限レベル"; -"delete" = "削除"; -"view" = "表示"; -// actions -"action_logout" = "ログアウト"; -"create_room" = "ルームを作る"; -"login" = "ログイン"; -"create_account" = "アカウントを作成"; -"membership_invite" = "招待しました"; -"membership_leave" = "退出しました"; -"membership_ban" = "ブロックしました"; -"num_members_one" = "%@ ユーザー"; -"num_members_other" = "%@ ユーザー"; -"invite" = "招待"; -"kick" = "キック"; -"ban" = "ブロック"; -"unban" = "ブロック解除"; -"message_unsaved_changes" = "保存されていない変更があります。 退出すると変更は取り消されます。"; -// Login Screen -"login_error_already_logged_in" = "ログイン済"; -"login_error_must_start_http" = "URLは http[s]:// で始まる必要があります"; -// room details dialog screen -"room_details_title" = "ルームの詳細"; -// contacts list screen -"invitation_message" = "私はmatrixであなたとチャットしたい。 詳細はウェブサイトhttp://matrix.orgをお尋ねください。"; -// Settings screen -"settings_title_config" = "構成"; -"settings_title_notifications" = "通知"; -// Notification settings screen -"notification_settings_disable_all" = "全ての通知を無効にする"; -"notification_settings_enable_notifications" = "通知を有効にする"; -"notification_settings_enable_notifications_warning" = "現在、全ての端末で全ての通知が無効になっています。"; -"notification_settings_global_info" = "通知設定はユーザーアカウントに保存され、デスクトップ通知を含む全てのクライアント間で共有されます。\n\nルールは順番に適用されます。 一致する最初のルールは、メッセージの結果を定義します。\nだから:単語ごとの通知は、送信者ごとの通知よりも重要なルームごとの通知よりも重要です。\n同じ種類の複数のルールの場合、一致するリストの最初のルールが優先されます。"; -"notification_settings_per_word_notifications" = "単語単位の通知"; -"notification_settings_per_word_info" = "単語は大文字と小文字を区別せずに一致させ、*ワイルドカードを含めることができます。 従って:\nfooは、区切り文字で囲まれた文字列foo(例 句読点や空白、行の開始/終了)と一致します。\nfoo*は、fooで始まる単語に一致します。\n*foo*は、3文字のfooを含む単語に一致します。"; -"notification_settings_always_notify" = "常に通知"; -"notification_settings_never_notify" = "決して通知しない"; -"notification_settings_word_to_match" = "一致する単語"; -"notification_settings_highlight" = "Highlight"; -"notification_settings_custom_sound" = "カスタムサウンド"; -"notification_settings_per_room_notifications" = "1ルームあたりの通知"; -"notification_settings_per_sender_notifications" = "送信者ごとの通知"; -"notification_settings_sender_hint" = "@user:domain.com"; -"notification_settings_select_room" = "ルームを選択"; -"notification_settings_other_alerts" = "その他のアラート"; -"notification_settings_contain_my_user_name" = "私のユーザー名を含むメッセージについて音で私に通知してください"; -"notification_settings_contain_my_display_name" = "私の表示名が含まれているメッセージが届いた際に音で通知"; -"notification_settings_just_sent_to_me" = "私に送られたメッセージについての音で私に知らせる"; -"notification_settings_invite_to_a_new_room" = "私が新しいルームに招待されたときに知らせる"; -"notification_settings_people_join_leave_rooms" = "誰かがルームに参加もしくは退出したときに通知"; -"notification_settings_receive_a_call" = "通話を受信したときに通知"; -"notification_settings_suppress_from_bots" = "ボットからの通知を抑制"; -"notification_settings_by_default" = "既定値では…"; -"notification_settings_notify_all_other" = "他の全てのメッセージ/ルームについて通知"; -// gcm section -"settings_config_home_server" = "ホームサーバー: %@"; -"settings_config_identity_server" = "IDサーバー: %@"; -"settings_config_user_id" = "ユーザーID: %@"; -// call string -"call_waiting" = "待機中..."; -"call_connecting" = "通話接続中…"; -"call_ended" = "通話終了"; -"call_ring" = "呼び出し中..."; -"incoming_video_call" = "着信ビデオ通話"; -"incoming_voice_call" = "着信音声通話"; -"call_invite_expired" = "期限切れの招待コール"; -// unrecognized SSL certificate -"ssl_trust" = "信頼"; -"ssl_logout_account" = "ログアウト"; -"ssl_remain_offline" = "無視"; -"ssl_fingerprint_hash" = "指紋 (%@):"; -"ssl_could_not_verify" = "リモートサーバーのIDを確認できませんでした。"; -"ssl_cert_not_trust" = "これは、誰かがあなたのトラフィックを悪意を持って傍受しているか、あなたの電話機がリモートサーバーから提供された証明書を信頼していないことを意味します。"; -"ssl_cert_new_account_expl" = "サーバー管理者がこれが予期されると述べた場合は、以下の指紋が提供された指紋と一致することを確認してください。"; -"ssl_unexpected_existing_expl" = "証明書は、お使いの携帯電話にて信頼されたものから変更されました。 これは非常に珍しいことです。 この新しい証明書に同意しないことをお勧めします。"; -"ssl_expected_existing_expl" = "証明書が以前に信頼されたものから信頼されていないものに変更されました。 サーバーが証明書を更新した可能性があります。 予想される指紋については、サーバー管理者にお問い合わせください。"; -"ssl_only_accept" = "サーバー管理者が上記のものと一致する指紋を発行した場合にのみ、証明書を受け入れてください。"; -"unignore" = "無視しない"; -"notice_encryption_enabled_ok" = "%@がエンドツーエンド暗号化をオンにしました。"; -"notice_encryption_enabled_unknown_algorithm" = "%1$@がエンドツーエンド暗号化をオンにしました(不明なアルゴリズム %2$@)。"; -"device_details_rename_prompt_title" = "セッション名"; -"account_error_push_not_allowed" = "通知は許可されていません"; -"notice_room_third_party_revoked_invite" = "%@が%@のルームへの招待を取り消しました"; -// Notice Events with "You" -"notice_room_invite_by_you" = "%@を招待しました"; -"notice_room_invite_you" = "%@があなたを招待しました"; -"notice_room_join_by_you" = "参加しました"; -"notice_room_leave_by_you" = "退出しました"; -"notice_room_kick_by_you" = "%@をキックしました"; -"notice_room_unban_by_you" = "%@のブロックを解除しました"; -"notice_room_ban_by_you" = "%@をブロックしました"; -"notice_avatar_url_changed_by_you" = "アバターを変更しました"; -"notice_display_name_set_by_you" = "表示名を%@に変更しました"; -"notice_display_name_changed_from_by_you" = "表示名を%@から%@に変更しました"; -"notice_display_name_removed_by_you" = "表示名を削除しました"; -"notice_topic_changed_by_you" = "トピックを変更しました: %@"; -"notice_room_name_changed_by_you" = "ルームの名前を変更しました: %@"; -"notice_placed_voice_call_by_you" = "音声通話を開始しました"; -"notice_placed_video_call_by_you" = "ビデオ通話を開始しました"; -"notice_answered_video_call_by_you" = "電話に出ました"; -"notice_ended_video_call_by_you" = "通話を終了しました"; -"notice_conference_call_request_by_you" = "VoIP会議をリクエストしました"; -"notice_room_name_removed_by_you" = "ルーム名を削除しました"; -"notice_room_topic_removed_by_you" = "トピックを削除しました"; -"notice_profile_change_redacted_by_you" = "プロフィール %@を更新しました"; -"notice_room_created_by_you" = "ルームを作成しました"; -"notice_encryption_enabled_ok_by_you" = "あなたはエンドツーエンド暗号化をオンにしました。"; -"notice_encryption_enabled_unknown_algorithm_by_you" = "あなたはエンドツーエンド暗号化をオンにしました (不明なアルゴリズム %2$@)。"; -"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" = "%@が今後のメッセージを「メンバーのみ」閲覧可能に設定しました。"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/kab.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/kab.lproj/MatrixKit.strings deleted file mode 100644 index 8749803a1..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/kab.lproj/MatrixKit.strings +++ /dev/null @@ -1,530 +0,0 @@ - - - -"ssl_expected_existing_expl" = "Aselkin yettwabeddel seg win yettwamanen ɣer win ur nettwaman ara. Ahat aqeddac iɛawed-d aselkin-ines. Nermes anedbal n uqeddac ɣef udsil umḍin yetturaǧun."; -"ssl_unexpected_existing_expl" = "Aselken yettubeddel deg ubdil n win yettwamanen deg tiliɣri-inek·inem. Aya MAČČI D AYEN IGERRZEN. Issefk UR TETTAQBALEḌ ARA aselkin-a amaynut."; -"ssl_cert_new_account_expl" = "Ma yella anedbal n uqeddac yenna-d belli aya yettuau, ẓer ma yella adsil umḍin ddaw yemṣada d udsil umḍin i d-mudden nutni."; -"ssl_cert_not_trust" = "Aya yebɣa ad d-yini yellawin d ugur i tikli-inek·inem s yir udem, neɣ tiliɣri-inek·inem ur yettkil ara ɣef uselkin i as-imudd uqeddac anmeggag."; -"ssl_could_not_verify" = "D awezɣi ad nsenqed timagit n uqeddac agemmaḍ."; -"ssl_remain_offline" = "Ttu"; -"ssl_logout_account" = "Tuffɣa"; - -// unrecognized SSL certificate -"ssl_trust" = "Ittkel"; -"incoming_voice_call" = "Asiwel s taɣect i d-ikecmen"; -"incoming_video_call" = "Asiwel s tvidyut i d-ikecmen"; -"call_ring" = "Yessawal..."; -"call_ended" = "Asiwel yekfa"; -"notification_settings_notify_all_other" = "Ṭṭef-d ilɣa i meṛṛa iznan/tixxamin"; -"settings_title_notifications" = "Ilɣa"; - -// Settings screen -"settings_title_config" = "Tawila"; - -// members list Screen - -// accounts list Screen - -// image size selection - -// invitation members list Screen - -// room creation dialog Screen - -// room info dialog Screen - -// room details dialog screen -"room_details_title" = "Talqayt n texxamt"; -"login_error_must_start_http" = "Ilaq ad yebdu URL s http[s]://"; -"ban" = "Agi"; -"kick" = "Suffeɣ"; -"invite" = "Nced"; -"membership_leave" = "Azelmaḍ"; -"membership_invite" = "Yettwancad"; -"create_account" = "Rnu amiḍan"; -"login" = "Isem n useqdac"; -"create_room" = "Rnu taxxamt"; - -// actions -"action_logout" = "Tuffɣa"; -"view" = "Wali"; -"delete" = "Kkes"; -"share" = "Bḍu"; -"redact" = "Sfeḍ"; -"resend" = "Ɛawed azen"; -"copy_button_name" = "Nɣel"; -"send" = "Azen"; -"leave" = "Ffeɣ"; -"save" = "Sekles"; -"cancel" = "Sefsex"; - -// Room Screen - -// general errors - -// Home Screen - -// Last seen time - -// call events - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /console/src/main/res/values/strings.xml. -*/ - - -// titles - -// button names -"ok" = "IH"; -"notice_room_created_by_you_for_dm" = "Terniḍ."; -"notice_room_created_by_you" = "Aql-ak·akem terniḍ, tsewleḍ taxxamt."; -"notice_conference_call_request_by_you" = "Tsutreḍ-d asarag VoIP"; -"notice_avatar_url_changed_by_you" = "Tbeddleḍ avatar-inek·inem"; -"notice_room_reject_by_you" = "Tufiḍ tinubga"; -"notice_room_leave_by_you" = "Truḥeḍ"; -"notice_room_join_by_you" = "Terniḍ"; -"notice_conference_call_finished" = "Asarag VoIP yekfa"; -"notice_conference_call_started" = "Asarag VoIP yebda"; - -// Country picker -"country_picker_title" = "Fren tamurt"; -"public" = "Azayez"; -"private" = "Amaẓlay"; -"default" = "amezwer"; -"error" = "Tuccḍa"; -"e2e_passphrase_create" = "Rnu tafyirt tuffirt"; -"e2e_passphrase_not_match" = "Tifyar tuffirin ilaq ad mṣadant"; -"e2e_passphrase_empty" = "Tafyirt tuffirt ur ilaq ara ad ilint d tilmawin"; -"e2e_passphrase_confirm" = "Sentem tafyirt tuffirt"; -"e2e_export" = "Sifeḍ"; - -// E2E export -"e2e_export_room_keys" = "Sifeḍ tisura n texxamt"; -"e2e_passphrase_enter" = "Sekcem tafyirt tuffirt"; -"e2e_import" = "Kter"; - -// E2E import -"e2e_import_room_keys" = "Kter tisura n texxamt"; -"format_time_d" = "d"; -"format_time_h" = "sr"; - -// Time -"format_time_s" = "s"; -"group_section" = "Igrawen"; - -// Groups -"group_invite_section" = "Inced-d"; -"attachment_cancel_upload" = "Sefsex asali?"; -"attachment_cancel_download" = "Sefsex asider?"; -"room_member_power_level_prompt" = "Ur tettizmireḍ ara ad tesfesxeḍ asnifel-a acku tessebɣaseḍ aseqdac ad yesɛu aswir n tezmert am kečč·kemm.\nTebɣiḍ s tidet?"; -"room_no_conference_call_in_encrypted_rooms" = "Isiwlen isaragen ur ttwasefraken ara deg texxamin yettwawgelhen"; -"room_no_power_to_create_conference_call" = "Tesriḍ tisirag akken ad tebduḍ asarag deg texxamt-a"; -"room_left_for_dm" = "Truḥeḍ"; -"room_left" = "Teǧǧiḍ taxxamt"; -"room_error_timeline_event_not_found_title" = "Asali n yideg n tesnakudt ur yeddi ara"; -"room_error_join_failed_title" = "Anekcum ɣer texxamt ur yeddi ara"; -"account_error_email_wrong_description" = "Tagi ur tettban ara d tansa n yimayl tameɣtut"; -"account_error_email_wrong_title" = "Tansa n yimayl d tarameɣtut"; -"account_msisdn_validation_error" = "Asenqed n wuṭṭun n tilifun ur yeddi ara."; -"account_msisdn_validation_title" = "Asenqed yettṛaǧu"; -"account_email_validation_message" = "Ma ulac aɣilif, senqed imayl-ik/im syen sit ɣef useɣwen i yellan. Akken ara yemmed waya, sit ad tkemmleḍ."; -"account_email_validation_title" = "Asenqed yettṛaǧu"; - -// Account -"account_save_changes" = "Sekles ibeddilen"; -"room_event_encryption_verify_ok" = "Senqed"; -"room_event_encryption_info_unblock" = "Kkes seg tebdart taberkant"; -"room_event_encryption_info_block" = "Tabdart taberkant"; -"room_event_encryption_info_unverify" = "Ur yettusenqed ara"; -"room_event_encryption_info_device_blocked" = "Deg tebdart taberkant"; -"room_event_encryption_info_device_verified" = "Yettwasenqed"; -"room_event_encryption_info_event_none" = "ulac"; -"device_details_delete_prompt_message" = "Tamahelt-a tesra asentem-nniḍen.\nI ukemmel, ma ulac aɣilif sekcem awal-ik·im uffir."; -"device_details_delete_prompt_title" = "Asesteb"; -"device_details_rename_prompt_message" = "Isem n tiɣimit tazayezt yettban i yimdanen wukud tettmeslayeḍ"; - -// Settings -"settings" = "Iɣewwaren"; -"notice_encrypted_message" = "Izen yettwawgelhen"; -"notice_room_join_rule_invite_by_you_for_dm" = "Tgiḍ aya i tinubga kan."; -"notice_room_join_rule_invite_by_you" = "Terriḍ taxxamt s tinubga kan."; -"unignore" = "Ur yettwazgel ara"; -"ignore" = "Ttu"; -"show_details" = "Sken talqayt"; -"cancel_download" = "Sefsex Asider"; -"cancel_upload" = "Sefsex Asali"; -"select_all" = "Fren kulec"; -"reset_to_default" = "Wennez ɣer umezwer"; -"mention" = "Abder"; -"start_video_call" = "Yebda usiwel s tvidyut"; -"start_voice_call" = "Yebda usiwel s taɣect"; -"submit" = "Azen"; -"sign_up" = "Jerred"; -"retry" = "Ɛreḍ tikkelt-nniḍen"; -"dismiss" = "Agi"; -"discard" = "Ignorer"; -"continue" = "Kemmel"; -"close" = "Mdel"; -"back" = "Uɣal ɣer deffir"; -"abort" = "Sefsex"; -"yes" = "Ih"; - -// Action -"no" = "Uhu"; -"login_error_resource_limit_exceeded_contact_button" = "Nermes anedbal"; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Aqeddac-a agejdan yewweḍ ɣer talast n useqdac urmid n wayyur."; -"login_error_resource_limit_exceeded_message_default" = "Aqeddac-a agejdan iɛedda yiwet seg tlisa-ines tiɣbula."; -"login_error_resource_limit_exceeded_title" = "Talast n yiɣbula tettuɛedda"; -"login_desktop_device" = "Aniraw"; -"login_tablet_device" = "Taṭablit"; -"login_mobile_device" = "Aziraz"; -"login_leave_fallback" = "Sefex"; -"login_error_login_email_not_yet" = "Aseɣwen n yimayl iɣef mazal ur yettusit ara fell-as"; -"login_error_user_in_use" = "Isem n useqdac-a yettwaseqdac yakan"; -"login_error_limit_exceeded" = "Aṭas n yisuturen i yettwaznen"; -"login_error_not_json" = "Ulac deg-s JSON ameɣtu"; -"login_error_bad_json" = "JSON ur yemsil ara akken iwata"; -"login_error_unknown_token" = "Ajuṭu n unekcum i yettwafernen ur yettwassen ara"; -"login_error_forbidden" = "Isem n uqeddac/awal uffir d arameɣtu"; -"login_email_placeholder" = "Tansa n l'email"; -"login_password_placeholder" = "Mot de passe"; -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "Matrix"; -"account_msisdn_validation_message" = "Ad naze-n SMS deg-s tangalt n usenqed. Ttxil-k·m sekcem tangalt-a ddaw."; -"login_server_url_placeholder" = "URL (e.g. https://matrix.org)"; -"notification_settings_per_room_notifications" = "Ilɣa s texxamt"; -"notification_settings_per_word_notifications" = "Ilɣa s awal"; -"notice_redaction_by_you" = "Tsemsawiḍ aneḍru (asulay: %@)"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Tesfesxeḍ tinubga n %@"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ isefsex tinubga n %@"; -"device_details_last_seen" = "Timeẓri taneggarut\n"; -"notice_feedback" = "Aneḍru n timawin (asulay: %@): %@"; -"login_error_registration_is_not_supported" = "Iklasen ur ttusefraken ara akka tura"; -"ssl_only_accept" = "Ur qebbel ara aselkin alamma isuffeɣ-d unedbal n uqeddac adsil umḍin yemṣadan d win yellan ddaw-a."; -"ssl_fingerprint_hash" = "Adsil umḍin (%@):"; -"call_invite_expired" = "Ancad ɣer usiwel yezri"; - -// Settings keys - -// call string -"call_waiting" = "Yettraǧu..."; -"settings_config_user_id" = "Asulay n useqdac:%@"; -"notification_settings_other_alerts" = "Ilɣuten-nniḍen"; -"notification_settings_select_room" = "Fren taxxamt"; -"notification_settings_sender_hint" = "@user:domain.com"; -"notification_settings_highlight" = "Asebrureq"; -"notification_settings_never_notify" = "Ur ttelɣu ara akk"; -"notification_settings_always_notify" = "Selɣu yal tikkelt"; -"notification_settings_enable_notifications" = "Rmed ilɣa"; -"num_members_other" = "%@ iseqdacen"; -"num_members_one" = "%@ n useqdac"; -"membership_ban" = "Yettwagdel"; -"notice_profile_change_redacted_by_you" = "Tleqqmeḍ amaɣnu-inek·inem %@"; -"notice_event_redacted_by_you" = " sɣur-k·m"; -"notice_display_name_set_by_you" = "Tesbadud isem n uskan ɣer %@"; -"notice_room_unban_by_you" = "Tgedleḍ %@"; -"notice_room_third_party_registered_invite_by_you" = "Tqebleḍ tinubga n %@"; -"notice_room_third_party_invite_by_you_for_dm" = "Tnecdeḍ-d %@"; -"notice_room_invite_you" = "%@ inced-ik·kem-id"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "Tnecdeḍ-d %@"; -"notice_conference_call_request" = "%@ isuter asarag VoIP"; -"notice_ended_video_call" = "%@ iḥbes asiwel"; -"notice_answered_video_call" = "%@ yerra ɣef usiwel"; -"notice_placed_video_call" = "%@ isɛedda siwel s tvidyut"; -"notice_placed_voice_call" = "%@ isɛedda asiwel s taɣect"; -"notice_avatar_url_changed" = "%@ t·ibeddel·t avatar-ines"; -"notice_room_ban" = "%@ igdel %@"; -"notice_room_unban" = "%@ ur yegdil ara %@"; -"notice_room_kick" = "%@ isuffeɣ %@"; -"notice_room_reject" = "%@ yugi tinubga"; -"notice_room_leave" = "%@ azelmaḍ"; -"notice_room_join" = "%@ yerna"; -"notice_room_third_party_registered_invite" = "%@ yeqbel tinnubga n %@"; -"notice_room_third_party_invite_for_dm" = "%@ inced-d %@"; - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /matrix-sdk/src/main/res/values/strings.xml. -*/ - -"notice_room_invite" = "%@ inced-d %@"; -"ssl_homeserver_url" = "URL n uqeddac agejdan: %@"; -"user_id_placeholder" = "am.: @bob:amedya.com"; -"network_error_not_reachable" = "Ma ulac aɣilif senqed tuqqna-inek·inem"; -"offline" = "aruqqin"; - -// Others -"user_id_title" = "Asulay n useqdac:"; -"format_time_m" = "m"; -"search_searching" = "Anadi la iteddu..."; - -// Search -"search_no_results" = "Ulac igmaḍ"; -"contact_local_contacts" = "Inermisen idiganen"; - -// Contacts -"contact_mx_users" = "Iseqdacen n Matrix"; -"attachment_e2e_keys_import" = "Kter..."; -"attachment_large" = "Meqqer: %@"; -"attachment_medium" = "Alemmas: %@"; -"attachment_small" = "Mecṭuḥ: %@"; -"message_reply_to_sender_sent_a_file" = "yuzen afaylu."; -"message_reply_to_sender_sent_a_video" = "yuzen-d tavidyut."; - -// Reply to message -"message_reply_to_sender_sent_an_image" = "Azen tugna."; - -// Room -"room_please_select" = "Ttxil-k·m fren taxxamt"; -"room_creation_participants_title" = "Imttekkiyen:"; -"room_creation_alias_placeholder_with_homeserver" = "(am. +foo%@)"; -"room_creation_name_placeholder" = "(am. lunchGroup)"; - -// Room creation -"room_creation_name_title" = "Isem n texxamt:"; -"account_error_msisdn_wrong_description" = "Ur yettban ara wagi d uṭṭun n tiliɣri ameɣtu"; -"account_error_msisdn_wrong_title" = "Yir uṭṭun n tiliɣri"; -"account_error_matrix_session_is_not_opened" = "Tiɣimit n Matrix ur teldi ara"; -"account_email_validation_error" = "Ulamek akk tettwasenqed tansa n yimayl. Ma ulac aɣilif senqed imayl-inek·inem syen sit ɣef useɣwen yellan deg-s. Akken ara tgeḍ aya, sit ɣef kemmel"; -"room_event_encryption_info_verify" = "Senqed..."; -"room_event_encryption_info_device_not_verified" = "UR yettwasenqed ARA"; -"room_event_encryption_info_device_fingerprint" = "Adsil umḍin Ed25519\n"; -"room_event_encryption_info_device_name" = "Isem azayez\n"; -"room_event_encryption_info_event_unencrypted" = "ur yettwawgelhen ara"; -"room_event_encryption_info_event_decryption_error" = "Tuccḍa deg tukksa n uwgelhen\n"; -"room_event_encryption_info_event_algorithm" = "Alguritm\n"; -"room_event_encryption_info_event_fingerprint_key" = "Tasarut n udsil umḍin Ed25519 tettusra\n"; -"room_event_encryption_info_event_identity_key" = "Tasarut n timagit Curve25519\n"; -"room_event_encryption_info_event_user_id" = "Asulay n useqdac\n"; -"room_event_encryption_info_event" = "Talɣut n uneḍru\n"; - -// Encryption information -"room_event_encryption_info_title" = "Talɣut n uwgelhen seg yixef ɣer yixef\n\n"; -"device_details_rename_prompt_title" = "Isem n tɣimit"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_name" = "Isem azayez\n"; - -// Devices -"device_details_title" = "Talɣut ɣef tɣimit\n"; -"notification_settings_room_rule_title" = "Taxxamt: '%@'"; -"settings_enter_validation_token_for" = "Sekcem ajiṭun n usentem i %@:"; -"settings_enable_push_notifications" = "Rmed ilɣa n push"; -"room_displayname_more_than_two_members" = "%@ d %@ d wiyaḍ"; -"room_displayname_two_members" = "%@ akked %@"; - -// room display name -"room_displayname_empty_room" = "Texxamt tilemt"; -"notice_crypto_unable_to_decrypt" = "**Ukamek yettwakkes uwgelhen: %@**"; -"notice_invalid_attachment" = "taceqquft yeddan d tarameɣtut"; -"notice_file_attachment" = "afaylu yeddan"; -"notice_room_related_groups" = "Igrawen icudden ɣer texxamt-a d: %@"; -"notice_room_join_rule_public" = "%@ yerra taxxamt d tazayazt."; -"notice_room_created_for_dm" = "%@ yerna."; -"notice_room_created" = "%@ yerna taxxamt syen iswel-itt."; -"notice_profile_change_redacted" = "%@ leqqmen amaɣnu-nsen %@"; -"notice_event_redacted_by" = " s %@"; -"notice_event_redacted" = ""; - -// Events formatter -"notice_avatar_changed_too" = "(ula d avaṭar yettubeddel)"; -"reject_call" = "Agi asiwel"; -"answer_call" = "Err ɣef usiwel"; -"resend_message" = "Ales tuzna n yizen"; -"capture_media" = "Ṭṭef tawlaft/tavidyut"; -"select_account" = "Fren amiḍan"; -"start_chat" = "Bdu adiwenni"; -"set_admin" = "Sbadu anedbal"; -"submit_code" = "Azen tangalt"; -"login_error_resource_limit_exceeded_message_contact" = "\n\nTtxil-k·m nermes anedbal-ik·im n uqeddac i wakken ad tkemmleḍ aseqdec n uqeddac-a."; -"register_error_title" = "Ajerred yecceḍ"; -"login_invalid_param" = "Aɣewwar d arameɣtu"; -"login_use_fallback" = "Seqdec asebtar n ufrananeggaru"; -"login_prompt_email_token" = "Ttxil-k sekcem ajuṭu-inek·inem n usentem n yimayl:"; -"login_optional_field" = "d afrayan"; -"login_identity_server_title" = "URL n uqeddac n timagit:"; -"login_home_server_title" = "URL n uqeddac agejdan:"; - -// Login Screen -"login_create_account" = "Rnu amiḍan:"; -"notification_settings_per_word_info" = "Awalen i d-yettwafen s war ma nefka azal i umṣada n yisekkilen, i izemren ad yesεu ajukeṛ *. Ihi:\nfoo yufa-d azrir foo zzin-as-d s yijemmaqen n wawalen (am. aisgez, tallunt d tazwara neɣ taggara n yizirig).\nfoo* yufa-d meṛṛa awalen i ibeddun s foo.\n*foo* yufa-d akk awalen ideg llan kraḍ n yisekkilen-a foo."; -"notification_settings_global_info" = "Iɣewwaren n yilɣa ttuskelsen deg umiḍan-inek·inem n useqdac, ad ttwabḍun gar meṛṛa imsaɣen ara ten-isferken (ula d iɣewwaren n tnarit).\n\nIlugan ttusnasen akken myezwaren; alugan amezwaru i yemṣadan tesbaduy agmuḍ n yizen.\nIhi: Ilɣa s wawal sεan azal ugar n yilɣa s texxamt i yesεan azal ula d nutni ɣef yilɣa s umazan.\nI wugar n yilugan n yiwen wanaw, amezwaru deg tebdart yemṣadan d netta i d tazwart."; -"local_contacts_access_discovery_warning" = "I usnirem n yinermisen s useqdec yakan n Matrix, %@ yezmer ad yazen tansiwin n yimayl d wuṭṭunen n tiliɣri n udlis-inek·inem n tansiwin ɣer uqeddac-inek·inem n timagit n Matrix i tferneḍ. Ma yella yettusefrak, isefka-inek·inem udmawanen ad ttwagzamen send ad ttwaznen - ttxil-k·m senqed tasertit n tudert tabaḍnit n uqeddac-ik·im n timagit i wugar n telqayt."; -"local_contacts_access_not_granted" = "I usnirem n yiseqdacen seg yinermisen idiganen, anekcum ɣer yinermisen yettusra maca %@ ur yesεi ara tisirag ad t-iseqdec"; -"e2e_export_prompt" = "Akala-a ad ak·am-imudd tisirag i usifeḍ n tsura n yiznan i d-tremseḍ deg texxamin yettwawgelhen, ɣer ufaylu adigan. Syen tzemreḍ ad tketreḍ afaylu deg umsaɣ-nniḍen n Matrix, i wakken amsaɣ-a ad yizmir ad yekkes awgelhen i yiznan-a.\nAfaylu i d-yettusifḍen ad imudd tisirag i yal win i izemren ad t-iɣer, ad yekkes awgelhen i yiznan yettwawgelhen i tzemreḍ ad twaliḍ. Γef waya ilaq ad t-tḥerzeḍ deg wadeg aɣellsan."; -"e2e_import_prompt" = "Akala-a ad ak·am-imudd tisirag i wakken ad tketreḍ tisura i d-tsifḍeḍ yakan seg umsaɣ-nniḍen n Matrix. Tzemreḍ mbeεd ad tekkseḍ awgelhen n yal izen iwumi yezmer umsaɣ-nniḍen ad asen-yekkes awgelhen.\nAfaylu i d-yettisifḍen yettwammesten s tefyirt tuffirt. Ilaq ad teskecmeḍ tafyirt tuffirt dagi, i wakken ad tekkseḍ awgelhen i ufaylu."; -"attachment_e2e_keys_file_prompt" = "Afaylu-a deg-s tisura n uwgelhen ttusifḍent-d seg umsaɣ Matrix.\nTebɣiḍ ad twaliḍ agbur n ufaylu neɣ ad d-tketreḍ tisura i yellan deg-s?"; -"room_error_timeline_event_not_found" = "Asnas yettaεraḍ ad d-isali kra n wagazen ufrinen deg tesnakudt n texxamt, maca ur tt-yifi ara"; -"room_event_encryption_verify_message" = "I usenqed n tɣimit-a ma tzemreḍ ad tettekleḍ fell-as, ttxil-k·m nermes bab-is s useqdec s ubrid-nniḍen (am. s timmad-is neɣ s usiwel) syen steqsi-t ma yella tasarut i yettwali deg yiɣewwaren-is n useqdac n tɣimit-a temṣada d tsarut yellan ddaw:\n\n Isem n tɣimit: %@\n Asulay n texxamt: %@\n Tasarut n texxamt: %@\n\nMa yella mṣadant, sit ɣef tqeffalt n usenqed ddaw. Ma yella ur mṣadant ara, ihi yella win i yettεekkiṛen tiɣimit-a, neɣ ahat tebɣiḍ ad tsiteḍ ɣef tqeffalt n tebdart taberkant deg ubdel.\n\nΓer sdat, akala-a n usenqed-a ad yuɣal yemmed ugar."; -"call_connecting" = "Asiwel iteddu..."; -"settings_config_identity_server" = "Aqeddac n timagit: %@"; - -// gcm section -"settings_config_home_server" = "Aqeddac agejdan: %@"; -"notification_settings_by_default" = "S umezwer..."; -"notification_settings_suppress_from_bots" = "Kkes ilɣa n yiṛubuten"; -"notification_settings_receive_a_call" = "Lɣu-yi-d mi ara yi-d-yaweḍ usiwel"; -"notification_settings_people_join_leave_rooms" = "Lɣu-yi-d mi ara ad d-rnun neɣ ad ǧǧen yimdanen tixxamin"; -"notification_settings_invite_to_a_new_room" = "Lɣu-yi-d mi ara ttunecdeɣ ɣer texxamt tamaynut"; -"notification_settings_just_sent_to_me" = "Lɣu-yi-d s yimesli ɣef yiznan i d-yettwaznen i nekk kan"; -"notification_settings_contain_my_display_name" = "Lɣu-yi-d s yimesli ɣef yiznan ideg yella yisem-iw ameskan"; -"notification_settings_contain_my_user_name" = "Lɣu-yi-d s yimesli ɣef yiznan ideg yella yisem-inu n useqdac"; -"notification_settings_per_sender_notifications" = "Ilɣa s umazan"; -"notification_settings_custom_sound" = "imesli udmawan"; -"notification_settings_word_to_match" = "awala ara d-yettwafen"; -"notification_settings_enable_notifications_warning" = "Meṛṛa ilɣa nsan akka tura ɣef meṛṛa ibenkan."; - -// Notification settings screen -"notification_settings_disable_all" = "Sens meṛṛa ilɣa"; - -// contacts list screen -"invitation_message" = "Bɣiɣ ad mmeslayeɣ yid-k·m s Matrix. Ttxil-k·m, rzu ɣer usmel web http://matrix.org i wugar n talɣut."; - -// Login Screen -"login_error_already_logged_in" = "Yeqqen yakan"; -"message_unsaved_changes" = "Llan isenfal ur nettusekles ara. Tuffɣa ad ten-tsefsex."; -"unban" = "Kkes agdel"; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Terriḍ iznan si sya d asawen ad ttbanen i yal yiwen, segmi ara d-rnun."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Terriḍ azray n texxamt si sya d asawen ad d-yettban i meṛṛa imttekkiyen n texxamt, sgmi ara d-rnun."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Terriḍ iznan si sya d asawen ad d-ttbanen i yal yiwen, segmi ara d-ttusnubegten."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Terriḍ azray n texxamt si sya d asawen ad d-yettban i meṛṛa imttekkiyen n texxamt, segmi ara d-ttusnubegten."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Terriḍ iznan si sya ɣer sdat ad d-ttbanen i meṛṛa imttekkiyen n texxamt."; -"notice_room_history_visible_to_members_by_you" = "Terriḍ azray n texxamt si sya ɣer sdat ad d-yettban i meṛṛa imttekkiyen n texxamt."; -"notice_room_history_visible_to_anyone_by_you" = "Terriḍ azray n texxamt si sya ɣer sdat ad yettban i yal yiwen."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Tremdeḍ awgelhen seg yixef ɣer yixef (alguritm d arussin %@)."; -"notice_encryption_enabled_ok_by_you" = "Tremdeḍ awgelhen seg yixef ɣer yixef."; -"notice_room_topic_removed_by_you" = "Tekkseḍ asentel"; -"notice_room_name_removed_by_you_for_dm" = "Tekkseḍ isem"; -"notice_room_name_removed_by_you" = "Tekkseḍ isem n texxamt"; -"notice_ended_video_call_by_you" = "Tekfiḍ asiwel"; -"notice_answered_video_call_by_you" = "Terriḍ ɣef usiwel"; -"notice_placed_video_call_by_you" = "Tseεeddaḍ asiwel s tvidyut"; -"notice_placed_voice_call_by_you" = "Tesεeddaḍ asiwel s umeslaw"; -"notice_room_name_changed_by_you_for_dm" = "Tbeddleḍ isem s %@."; -"notice_room_name_changed_by_you" = "Tbeddleḍ isem n texxamt s %@."; -"notice_topic_changed_by_you" = "Tbeddleḍ asentel s \"%@\"."; -"notice_display_name_removed_by_you" = "Tekkzeḍ isem-inek·inem ameskan"; -"notice_display_name_changed_from_by_you" = "Tbeddleḍ isem-inek ameskan seg %@ ɣer %@"; -"notice_room_withdraw_by_you" = "Tesfesxeḍ tinubga n %@"; -"notice_room_kick_by_you" = "Tsuffɣeḍ %@"; -"notice_room_ban_by_you" = "Tgedleḍ %@"; -"notice_room_third_party_revoked_invite_by_you" = "Tekkseḍ tinubga n %@ i wakken ad d-yernu ɣer texxamt"; -"notice_room_third_party_invite_by_you" = "Tuzneḍ tinubga i %@ i wakken ad d-yernu ɣer texxamt"; -"notice_room_name_changed_for_dm" = "%@ ibeddel isem s %@."; -"notice_room_name_changed" = "%@ ibeddel isem n texxamt s %@."; -"notice_topic_changed" = "%@ ibeddel asentel s \"%@\"."; -"notice_display_name_removed" = "%@ yekkes isem-is ameskan"; -"notice_display_name_changed_from" = "%@ ibeddel isem-is ameskan seg %@ ɣer %@"; -"notice_display_name_set" = "%@ yesbadu isem-ines ameskan s %@"; -"notice_room_reason" = "Ssebba: %@"; -"notice_room_withdraw" = "%@ isefsex tinubga n %@"; -"notice_room_third_party_revoked_invite" = "%@ yekkes tinubga n %@ i wakken ad d-yernu ɣer texxamt"; -"notice_room_third_party_invite" = "%@ yuzen tinubga i %@ i wakken ad d-yernu  ɣer texxamt"; -"language_picker_default_language" = "Amezwer (%@)"; - -// Language picker -"language_picker_title" = "Fren tutlayt"; -"local_contacts_access_discovery_warning_title" = "Asnirem n yiseqdacen"; -"microphone_access_not_granted_for_call" = "Isawalen sran ad kecmen ɣer usawaḍ maca %@ ur yesεi ara tisirag ad t-iseqdec"; - -// Permissions -"camera_access_not_granted_for_call" = "Isawalen s tvidyut sran anekcum ɣer tkamiṛat maca %@ ur yesεi ara tisirag ad tt-iseqdec"; -"power_level" = "Aswir n tezmert"; -"not_supported_yet" = "Ur yettusefrak ara akka tura"; -"error_common_message" = "Tella-d tuccḍa. Ttxil-kṃ εreḍ tikkelt-nniḍen ticki."; -"unsent" = "Ur yettwazen ara"; -"attachment_multiselection_original" = "Teɣzi tamirant"; -"attachment_multiselection_size_prompt" = "Tebɣiḍ ad tazneḍ iznan d:"; -"attachment_original" = "Teɣzi tamirant: %@"; - -// Attachment -"attachment_size_prompt" = "Tebɣiḍ ad t-tazneḍ d:"; - -// Room members -"room_member_ignore_prompt" = "D tidet tebɣiḍ ad teffreḍ meṛṛa iznan i d-yusan sɣur aseqdac-a?"; -"message_reply_to_message_to_reply_to_prefix" = "D tiririt i"; -"message_reply_to_sender_sent_an_audio_file" = "yuzen afaylu ameslaw."; -"room_error_cannot_load_timeline" = "Asali n tesnakudt ur yeddi ara"; -"room_error_topic_edition_not_authorized" = "Ur tesεiḍ tisirag ad tesnefleḍ asentel n texxamt-a"; -"room_error_name_edition_not_authorized" = "Ur tesεiḍ ara tisirag ad tesnefleḍ isem n texxamt-a"; -"room_error_join_failed_empty_room" = "D awezɣi akka tura ad talseḍ tuɣalin ɣer texxamt tilemt."; -"room_creation_participants_placeholder" = "(am. @bob:homeserver1; @john:homeserver2...)"; -"room_creation_alias_placeholder" = "(am. #foo:example.org)"; -"room_creation_alias_title" = "Isem yettunefken i texxamt:"; -"account_error_push_not_allowed" = "Ilɣa ur ttusirgen ara"; -"account_error_picture_change_failed" = "Asenfel n tugna yecceḍ"; -"account_error_display_name_change_failed" = "Asenfel n yisem ameskan yecceḍ"; -"account_linked_emails" = "Imaylen yettwacudden"; -"account_link_email" = "Rnu imayl"; -"room_event_encryption_verify_title" = "Senqed tiɣimit\n\n"; -"room_event_encryption_info_device_verification" = "Asenqed\n"; -"room_event_encryption_info_device_id" = "Asulay\n"; -"room_event_encryption_info_device_unknown" = "tiɣimit tarussint\n"; -"room_event_encryption_info_device" = "\nTalɣut n tɣimit n umazan\n"; -"room_event_encryption_info_event_session_id" = "Asulay n tɣimit\n"; -"device_details_identifier" = "Asulay\n"; -"settings_enable_inapp_notifications" = "Rmed ilɣa deg usnas"; -"notice_in_reply_to" = "D tiririt i"; -"notice_sticker" = "astiker"; -"notice_crypto_error_unknown_inbound_session_id" = "Tiɣimit n umazan ur aɣ-d-tuzin ara tisura i yizen-a."; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ yerra iznan si sya ɣer sdat ttbanen i yal yiwen, seg wasmi ara d-rnun."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ yerra azray n texxamt si sya ɣer sdat yettban i meṛṛa imttekkiyen, seg wasmi ara d-rnun."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ yerra azray n texxamt si sya ɣer sdat yettban i yal yiwen, segmi ara d-yettusnubget."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ yerra azray n texxamt si sya ɣer sdat yettban i meṛṛa imttekkiyen n texxamt, seg wasmi ara d-ttusnubegten."; -"notice_room_history_visible_to_anyone" = "%@ yerra azray n texxamt si sya ɣer sdat yettban i yal yiwen."; -"notice_room_history_visible_to_members" = "%@ yerra azray n texxamt si sya ɣer sdat yettban i meṛṛa imttekkiyen n texxmat."; -"notice_room_history_visible_to_members_for_dm" = "%@ yerra iznan si sya ɣer sdat ttbanen i meṛṛa imttekkiyen n texxamt."; -"notice_error_unknown_event_type" = "Anaw n uneḍru d arussin"; -"notice_error_unexpected_event" = "Aneḍru ur nettwaṛǧæ ara"; -"notice_error_unsupported_event" = "Aneḍru ur yettusefrak ara"; -"notice_redaction" = "%@ yekkes aneḍru (asulay: %@)"; -"notice_unsupported_attachment" = "taceqquft yeddan ur tettusefrak ara: %@"; -"notice_location_attachment" = "adig yeddan"; -"notice_video_attachment" = "tavidyut yeddan"; -"notice_audio_attachment" = "ameslaw yeddan"; -"notice_image_attachment" = "tugna yeddan"; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ yermed awgelhen seg yixef ɣer yixef (alguritm %2$@ d arussin)."; -"notice_encryption_enabled_ok" = "%@ yermed awgelhen seg yixef ɣer yixef."; -"notice_room_aliases_for_dm" = "Ismawen yettunefken d: %@"; -"notice_room_aliases" = "Ismawen yettunefken i texxamt d: %@"; -"notice_room_power_level_event_requirement" = "Iswiren n tezmert addayen icudden ɣer yineḍruyen d:"; -"notice_room_power_level_acting_requirement" = "Iswiren n tezmert addayen i yezmer ad yesεu useqdac send asedmer d:"; -"notice_room_power_level_intro" = "Aswir n tezmert n yimttekkiyen n texxamt d:"; -"notice_room_power_level_intro_for_dm" = "Aswir n tezmert n yimttekkiyen d:"; -"notice_room_join_rule_public_by_you_for_dm" = "Terriḍ aya d azayaz."; -"notice_room_join_rule_public_by_you" = "Terriḍ taxxamt d tazayazt."; -"notice_event_redacted_reason" = " [ssebba: %@]"; -"notice_room_join_rule_public_for_dm" = "%@ yerra aya d azayaz."; -"notice_room_join_rule_invite_for_dm" = "%@ yerra aya s tinubga kan."; -// New -"notice_room_join_rule_invite" = "%@ yerra taxxamt s tinubga kan."; -// Old -"notice_room_join_rule" = "Alugan n tmerna d: %@"; -"notice_room_topic_removed" = "%@ yekkes asentel"; -"notice_room_name_removed" = "%@ yekkes isem n texxamt"; -"notice_room_name_removed_for_dm" = "%@ yekkes isem"; -"end_call" = "Kfu asiwel"; -"invite_user" = "Snubget-d aseqdac n Matrix"; -"attach_media" = "Seddu amidyat seg temkarḍit"; -"set_moderator" = "Sbadu imḍebber"; -"set_power_level" = "Sbadu aswir n tezmert"; -"set_default_power_level" = "Wennez aswir n tezmert"; -"login_error_forgot_password_is_not_supported" = "Tatut n wawal uffir ur yettusefrak ara akka tura"; -"login_error_do_not_support_login_flows" = "Akka tura ur nsefrak ara ula yiwen neɣ meṛṛa aragen yettusbadun s uqeddac-a agejdan"; -"login_error_no_login_flow" = "Tiririt n telɣut n usesteb seg uqeddac-a agejdan ur teddi ara"; -"login_error_title" = "Anekcum yecceḍ"; -"login_email_info" = "Afran n tansa n yiamyl tettaǧǧa iseqdacen-nniḍen ad ak·akem-afen deg Matrix s sshala, rnu ad ak-tmudd abrid ad twennzeḍ awala-ik·im uffir ar sdat."; -"login_display_name_placeholder" = "Isem yettwaskanen (am. Bob Obson)"; -"login_user_id_placeholder" = "Asulay n Matrix (am. @bob:matrix.org neɣ bob)"; -"login_identity_server_info" = "Matrix yettmuddu-d iqeddacen n timagit i ucuddu n yimaylen, atg. Wuɣur ttuɣalen yisulayen n Matrix. Ala https://matrix.org i yellan akka tura."; -"login_home_server_info" = "Aqeddac-ik·im agejdan isseklas meṛṛa idiwenniyen-inek·inem d yisefka n umiḍan-inekịnem"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ko.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ko.lproj/MatrixKit.strings deleted file mode 100644 index 88e2af12a..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ko.lproj/MatrixKit.strings +++ /dev/null @@ -1,381 +0,0 @@ -"view" = "보기"; -"back" = "돌아가기"; -"continue" = "계속"; -"leave" = "떠나기"; -"invite" = "초대"; -"retry" = "다시 시도"; -"cancel" = "취소"; -"save" = "저장"; -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "계정 만들기:"; -"login_server_url_placeholder" = "URL (예: https://matrix.org)"; -"login_home_server_title" = "홈서버 URL:"; -"login_identity_server_title" = "ID 서버 URL:"; -"login_user_id_placeholder" = "Matrix ID (예: @bob:matrix.org 혹은 bob)"; -"login_password_placeholder" = "비밀번호"; -"login_optional_field" = "선택"; -"login_email_placeholder" = "이메일 주소"; -"login_error_title" = "로그인 실패"; -"login_error_forbidden" = "잘못된 이름/비밀번호"; -"login_error_user_in_use" = "이 이름은 이미 사용중입니다"; -"login_leave_fallback" = "취소"; -"register_error_title" = "가입 실패"; -"login_error_forgot_password_is_not_supported" = "비밀번호 찾기는 현재 지원하지 않습니다"; -"login_mobile_device" = "모바일"; -"login_tablet_device" = "태블릿"; -"login_desktop_device" = "데스크톱"; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "이 홈서버가 월 간 활성 사용자 한도를 초과했습니다."; -"login_error_resource_limit_exceeded_message_contact" = "\n\n서비스를 계속 이용하려면 서비스 관리자에게 연락하세요."; -"login_error_resource_limit_exceeded_contact_button" = "관리자에게 연락하기"; -// Action -"no" = "아니요"; -"yes" = "네"; -"close" = "닫기"; -"sign_up" = "등록하기"; -"submit" = "제출"; -"submit_code" = "코드 제출"; -"set_moderator" = "중재자로 설정"; -"set_admin" = "관리자로 설정"; -"start_chat" = "대화 시작"; -"abort" = "중단"; -"discard" = "삭제"; -"start_voice_call" = "음성 통화 시작"; -"start_video_call" = "영상 통화 시작"; -"select_account" = "계정 선택"; -"capture_media" = "사진/영상 찍기"; -"invite_user" = "Matrix 사용자 초대"; -"reset_to_default" = "기본으로 되돌리기"; -"resend_message" = "메시지 다시 보내기"; -"select_all" = "모두 선택"; -"cancel_upload" = "업로드 취소"; -"cancel_download" = "다운로드 취소"; -"show_details" = "세부 정보 표시"; -"answer_call" = "전화 받기"; -"reject_call" = "전화 거부"; -"end_call" = "전화 끝내기"; -"ignore" = "무시"; -"unignore" = "무시하지 않기"; -"notice_sticker" = "스티커"; -// room display name -"room_displayname_empty_room" = "빈 방"; -"room_displayname_two_members" = "%@님과 %@님"; -// Settings -"settings" = "설정"; -"settings_enable_push_notifications" = "푸시 알림 켜기"; -// Devices -"device_details_title" = "기기 정보\n"; -"device_details_name" = "공개 이름\n"; -"device_details_identifier" = "ID\n"; -"device_details_rename_prompt_message" = "기기의 공개 이름은 대화하는 사람들에게 보여집니다"; -"device_details_delete_prompt_title" = "확인"; -"device_details_delete_prompt_message" = "이 작업은 추가 확인이 필요합니다.\n계속하려면, 비밀번호를 입력해주세요."; -// Encryption information -"room_event_encryption_info_title" = "종단간 암호화 정보\n\n"; -"room_event_encryption_info_event_user_id" = "사용자 ID\n"; -"room_event_encryption_info_event_algorithm" = "알고리즘\n"; -"room_event_encryption_info_event_unencrypted" = "암호화되지 않음"; -"room_event_encryption_info_device" = "\n발신자 기기 정보\n"; -"room_event_encryption_info_device_unknown" = "알 수 없는 기기\n"; -"room_event_encryption_info_device_name" = "공개 이름\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "확인\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519 지문\n"; -"room_event_encryption_info_device_verified" = "확인됨"; -"room_event_encryption_info_device_not_verified" = "확인되지 않음"; -"account_link_email" = "이메일 연결"; -"account_linked_emails" = "이메일 연결함"; -// Others -"user_id_title" = "사용자 ID:"; -"offline" = "오프라인"; -"error" = "오류"; -"not_supported_yet" = "아직 지원하지 않음"; -"default" = "기본"; -"ssl_homeserver_url" = "홈서버 URL: %@"; -// Country picker -"country_picker_title" = "나라를 고르세요"; -// Language picker -"language_picker_title" = "언어를 고르세요"; -"language_picker_default_language" = "기본 (%@)"; -"login_home_server_info" = "당신의 홈서버는 대화와 계정 정보를 저장합니다"; -"login_identity_server_info" = "Matrix는 어떤 이메일이 어떤 Matrix ID에 속하느 지 추적하도록 ID 서버를 제공합니다. 현재는 https://matrix.org만 존재합니다."; -"login_display_name_placeholder" = "표시 이름 (예: Bob Obson)"; -"login_email_info" = "다른 사용자가 Matrix에서 당신을 더 쉽게 찾고, 이후 비밀번호를 다시 설정할 수 있도록 이메일 주소를 지정하세요."; -"login_prompt_email_token" = "이메일 확인 토큰을 입럭해주세요:"; -"login_error_no_login_flow" = "이 홈서버에서 확인 정보를 검색하는데 실패함"; -"login_error_do_not_support_login_flows" = "현재 이 홈서버가 정의한 일부 혹은 모든 로그인 흐름을 지원하지 않음"; -"login_error_registration_is_not_supported" = "등록을 현재 지원하지 않음"; -"login_error_unknown_token" = "지정된 접근 토큰이 인식되지 않음"; -"login_error_bad_json" = "잘못된 JSON"; -"login_error_not_json" = "올바른 JSON을 포함하지 않음"; -"login_error_limit_exceeded" = "너무 많은 요청을 보냈습니다"; -"login_error_login_email_not_yet" = "아직 클릭하지 않은 이메일 링크"; -"login_use_fallback" = "대체 페이지 사용"; -"login_invalid_param" = "잘못된 매개변수"; -"login_error_resource_limit_exceeded_title" = "리소스 한도 초과됨"; -"login_error_resource_limit_exceeded_message_default" = "이 홈서버가 리소스 한도를 초과했습니다."; -"dismiss" = "버리기"; -"set_power_level" = "권한 등급 설정"; -"set_default_power_level" = "권한 등급 다시 설정"; -"mention" = "언급"; -"attach_media" = "라이브러리에서 미디어 첨부"; -// Events formatter -"notice_avatar_changed_too" = "(아바타도 변경됬습니다)"; -"notice_room_name_removed" = "%@님이 방 이름을 제거했습니다"; -"notice_room_topic_removed" = "%@님이 주제를 제거했습니다"; -"notice_event_redacted" = "<%@ 검열됨>"; -"notice_event_redacted_by" = " 사용자 %@님"; -"notice_event_redacted_reason" = " [이유: %@]"; -"notice_profile_change_redacted" = "%@님이 프로필 %@을(를) 업데이트했습니다"; -"notice_room_created" = "%@님이 방을 만들었습니다"; -"notice_room_join_rule" = "참가 규칙: %@"; -"notice_room_power_level_intro" = "방 구성원의 권한 등급:"; -"notice_room_power_level_acting_requirement" = "사용자가 활동할 수 있는 최소 권한 등급:"; -"notice_room_power_level_event_requirement" = "이벤트와 관련된 최소 권한 등급:"; -"notice_room_aliases" = "방의 별칭: %@"; -"notice_room_related_groups" = "이 방과 관련된 그룹: %@"; -"notice_encrypted_message" = "암호화된 메시지"; -"notice_encryption_enabled" = "%@님이 종단간 암호화를 켰습니다 (알고리즘 %@)"; -"notice_image_attachment" = "사진 첨부"; -"notice_audio_attachment" = "소리 첨부"; -"notice_video_attachment" = "영상 첨부"; -"notice_location_attachment" = "위치 첨부"; -"notice_file_attachment" = "파일 첨부"; -"notice_invalid_attachment" = "잘못된 첨부"; -"notice_unsupported_attachment" = "지원하지 않는 첨부: %@"; -"notice_feedback" = "피드백 이벤트 (ID: %@): %@"; -"notice_redaction" = "%@님이 이벤트를 검열했습니다 (ID: %@)"; -"notice_error_unsupported_event" = "지원하지 않는 이벤트"; -"notice_error_unexpected_event" = "예기치 못한 이벤트"; -"notice_error_unknown_event_type" = "알 수 없는 이벤트 유형"; -"notice_room_history_visible_to_anyone" = "%@님이 이후 방 기록을 누구나 볼 수 있게 했습니다."; -"notice_room_history_visible_to_members" = "%@님이 이후 방 기록을 모든 방 구성원이 볼 수 있게 했습니다."; -"notice_room_history_visible_to_members_from_invited_point" = "%@님이 이후 방 기록을 초대된 시점부터 모든 방 구성원이 볼 수 있게 했습니다."; -"notice_room_history_visible_to_members_from_joined_point" = "%@님이 이후 방 기록을 참가한 시점부터 모든 방 구성원이 볼 수 있게 했습니다."; -"notice_crypto_unable_to_decrypt" = "** 암호를 복호화할 수 없음: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "발신자의 기기에서 이 메시지의 키를 보내지 않았습니다."; -"notice_in_reply_to" = "관련 대화"; -"room_displayname_more_than_two_members" = "%@님 외 %@명"; -"settings_enable_inapp_notifications" = "인앱 알림 켜기"; -"settings_enter_validation_token_for" = "%@의 확인 토큰을 입력하세요:"; -"notification_settings_room_rule_title" = "방: '%@'"; -"device_details_last_seen" = "마지막으로 본 순간\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"room_event_encryption_info_event" = "이벤트 정보\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519 ID 키\n"; -"room_event_encryption_info_event_fingerprint_key" = "Ed25519 핑거프린트 키가 필요함\n"; -"room_event_encryption_info_event_session_id" = "세션 ID\n"; -"room_event_encryption_info_event_decryption_error" = "암호 복호화 오류\n"; -"room_event_encryption_info_event_none" = "없음"; -"room_event_encryption_info_device_blocked" = "블랙리스트 대상"; -"room_event_encryption_info_verify" = "확인 중..."; -"room_event_encryption_info_unverify" = "확인하지 않음"; -"room_event_encryption_info_block" = "블랙리스트"; -"room_event_encryption_info_unblock" = "블랙리스트 제외"; -"room_event_encryption_verify_title" = "기기 확인\n\n"; -"room_event_encryption_verify_message" = "이 기기를 신뢰할 수 있는지 확인하려면, 다른 방법을 사용하여 소유자와 연락해주세요 (예: 현실에서 혹은 전화로) 그리고 이 기기의 사용자 설정에서 볼 수 있는 키가 아래의 키와 일치하는지 물어보세요:\n\n\t기기 이름: %@\n\t기기 ID: %@\n\t기기 키: %@\n\n그것이 맞다면, 아래 확인 버튼을 누르세요. 맞지 않다면, 다른 사람이 이 기기를 가로채고 있는 것이고 블랙리스트에 올려야 합니다.\n\n앞으로 이 확인 절차는 더 정교해질 것입니다."; -"room_event_encryption_verify_ok" = "확인"; -// Account -"account_save_changes" = "변경 사항 저장"; -"account_email_validation_title" = "확인 보류 중"; -"account_email_validation_message" = "이메일을 확인하고 거기에 있는 링크를 클릭해주세요. 모두 끝나면, 계속을 클릭하세요."; -"account_email_validation_error" = "이메일 주소를 확인할 수 없습니다. 이메일을 확인하고 거기에 있는 링크를 클릭해주세요. 모두 끝나면, 계속을 클릭하세요"; -"account_msisdn_validation_title" = "확인 보류 중"; -"account_msisdn_validation_message" = "활성 코드가 있는 SMS를 보냈습니다. 아래에 이 코드를 입력해주세요."; -"account_msisdn_validation_error" = "전화번호를 확인할 수 없습니다."; -"account_error_display_name_change_failed" = "표시 이름 변경에 실패함"; -"account_error_picture_change_failed" = "사진 변경에 실패함"; -"account_error_matrix_session_is_not_opened" = "Matrix 세션이 열리지 않았습니다"; -"account_error_email_wrong_title" = "올바르지 않은 이메일 주소"; -"account_error_email_wrong_description" = "올바른 이메일 주소로 보이지 않습니다"; -"account_error_msisdn_wrong_title" = "올바르지 않은 전화번호"; -"account_error_msisdn_wrong_description" = "올바른 전화번호로 보이지 않습니다"; -"account_error_push_not_allowed" = "알림이 허용되지 않음"; -// Room creation -"room_creation_name_title" = "방 이름:"; -"room_creation_name_placeholder" = "(예: lunchGroup)"; -"room_creation_alias_title" = "방 별칭:"; -"room_creation_alias_placeholder" = "(예: #foo:example.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(예: #foo%@)"; -"room_creation_participants_title" = "참가자:"; -"room_creation_participants_placeholder" = "(예: @bob:homeserver1; @john:homeserver2...)"; -// Room -"room_please_select" = "방을 선택해주세요"; -"room_error_join_failed_title" = "방 참가에 실패함"; -"room_error_join_failed_empty_room" = "현재 빈 방에 다시 참가할 수 없습니다."; -"room_error_name_edition_not_authorized" = "이 방 이름을 편집할 권한이 없습니다"; -"room_error_topic_edition_not_authorized" = "이 방 주제를 편집할 권한이 없습니다"; -"room_error_cannot_load_timeline" = "타임라인 불러오기에 실패함"; -"room_error_timeline_event_not_found_title" = "타임라인 위치 불러오기에 실패함"; -"room_error_timeline_event_not_found" = "애플리케이션이 이 방의 타임라인에서 특정 시점을 불러오려 했으나 찾을 수 없었습니다"; -"room_left" = "당신은 방을 떠났습니다"; -"room_no_power_to_create_conference_call" = "이 방에 회의를 시작하려면 초대할 권한이 필요합니다"; -"room_no_conference_call_in_encrypted_rooms" = "암호화된 방에서 회의 전화는 지원되지 않습니다"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "사진 보내기."; -"message_reply_to_sender_sent_a_video" = "영상 보내기."; -"message_reply_to_sender_sent_an_audio_file" = "음성 파일 보내기."; -"message_reply_to_sender_sent_a_file" = "파일 보내기."; -"message_reply_to_message_to_reply_to_prefix" = "관련 대화"; -// Room members -"room_member_ignore_prompt" = "이 사용자의 모든 메시지를 숨기겠습니까?"; -"room_member_power_level_prompt" = "사용자를 자신과 같은 권한 등급으로 승급시키는 변경 사항은 취소할 수 없습니다.\n확신합니까?"; -// Attachment -"attachment_size_prompt" = "다음으로 보내겠습니까:"; -"attachment_original" = "실제 크기: %@"; -"attachment_small" = "작게: %@"; -"attachment_medium" = "중간: %@"; -"attachment_large" = "크게: %@"; -"attachment_cancel_download" = "다운로드를 취소합니까?"; -"attachment_cancel_upload" = "업로드를 취소합니까?"; -"attachment_multiselection_size_prompt" = "다음으로 사진을 보내겠습니까:"; -"attachment_multiselection_original" = "실제 크기"; -"attachment_e2e_keys_file_prompt" = "이 파일은 Matrix 클라이언트에서 내보낸 암호화 키를 갖고 있습니다.\n파일 내용물을 보거나 갖고 있는 키를 가져오고 싶나요?"; -"attachment_e2e_keys_import" = "가져오기..."; -// Contacts -"contact_mx_users" = "Matrix 사용자"; -"contact_local_contacts" = "로컬 연락처"; -// Groups -"group_invite_section" = "초대"; -"group_section" = "그룹"; -// Search -"search_no_results" = "결과 없음"; -"search_searching" = "검색 중..."; -// Time -"format_time_s" = "초"; -"format_time_m" = "분"; -"format_time_h" = "시"; -"format_time_d" = "일"; -// E2E import -"e2e_import_room_keys" = "방 키 가져오기"; -"e2e_import_prompt" = "이 과정으로 다른 Matrix 클라이언트에서 이전에 내보낸 암호화 키를 가져올 수 있습니다. 이 키로 다른 클라이언트에서 복호화할 수 있는 모든 메시지를 복호화할 수 있게 됩니다.\n내보낸 파일은 암호로 보호됩니다. 파일을 복호화하려면 여기에 암호를 입력해야 합니다."; -"e2e_import" = "가져오기"; -"e2e_passphrase_enter" = "암호 입력"; -// E2E export -"e2e_export_room_keys" = "방 키 내보내기"; -"e2e_export_prompt" = "이 과정으로 암호화된 방에서 받은 메시지의 키를 로컬 파일로 내보낼 수 있습니다. 그런 다음 이후 다른 Matrix 클라이언트에 파일을 가져올 수 있습니다, 이 키로 메시지를 복호화할 수 있게 됩니다.\n파일을 읽을 수 있는 모든 사용자는 내보낸 파일로 볼 수 있는 암호화된 메시지를 복호화할 수 있으므로, 안전하게 보관해야 합니다."; -"e2e_export" = "내보내기"; -"e2e_passphrase_confirm" = "암호 확인"; -"e2e_passphrase_empty" = "암호를 입력해주세요"; -"e2e_passphrase_not_match" = "암호가 일치하지 않음"; -"e2e_passphrase_create" = "암호 만들기"; -"unsent" = "보내지지 않음"; -"error_common_message" = "오류가 발생했습니다. 나중에 다시 시도해주세요."; -"private" = "보안"; -"public" = "공개"; -"power_level" = "권한 등급"; -"network_error_not_reachable" = "네트워크 연결 상태를 확인해주세요"; -"user_id_placeholder" = "예: @bob:homeserver"; -// Permissions -"camera_access_not_granted_for_call" = "영상 통화를 하려면 카메라에 접근해야 하지만 %@은(는) 사용할 권한이 없습니다"; -"microphone_access_not_granted_for_call" = "전화를 하려면 마이크에 접근해야 하지만 %@은(는) 사용할 권한이 없습니다"; -"local_contacts_access_not_granted" = "로컬 연락처에서 사용자를 검색하려면 연락처에 접근해야 하지만 %@은(는) 사용할 권한이 없습니다"; -"local_contacts_access_discovery_warning_title" = "사용자 검색"; -"local_contacts_access_discovery_warning" = "Matrix를 사용 중인 연락처 사람들을 찾기 위해 %@은(는) 주소록에 있는 이메일 주소와 전화번호를 선택한 Matrix ID 서버로 보낼 수 있습니다. 서버가 지원한다면, 개인 정보는 보내기 전에 해시됩니다 - 더 자세한 정보는 ID 서버의 개인 정보 정책을 확인해주세요."; -"notice_room_invite" = "%@님이 %@님을 초대했습니다"; -"notice_room_third_party_invite" = "%@님이 %@님에게 방에 참가하라는 초대를 보냈습니다"; -"notice_room_third_party_registered_invite" = "%@님이 %@님의 초대를 수락했습니다"; -"notice_room_join" = "%@님이 참가했습니다"; -"notice_room_leave" = "%@님이 떠났습니다"; -"notice_room_reject" = "%@님이 초대를 거절했습니다"; -"notice_room_kick" = "%@님이 %@님을 추방했습니다"; -"notice_room_unban" = "%@님이 %@님의 출입 금지를 풀었습니다"; -"notice_room_ban" = "%@님이 %@님을 출입 금지했습니다"; -"notice_room_withdraw" = "%@님이 %@님의 초대를 취소했습니다"; -"notice_room_reason" = ". 이유: %@"; -"notice_avatar_url_changed" = "%@님이 아바타를 바꿨습니다"; -"notice_display_name_set" = "%@님이 표시 이름을 %@(으)로 설정했습니다"; -"notice_display_name_changed_from" = "%@님이 표시 이름을 %@에서 %@(으)로 바꿨습니다"; -"notice_display_name_removed" = "%@님이 표시 이름을 제거했습니다"; -"notice_topic_changed" = "%@님이 주제를 다음으로 바꿨습니다: %@"; -"notice_room_name_changed" = "%@님이 방 이름을 다음으로 바꿨습니다: %@"; -"notice_placed_voice_call" = "%@님이 음성 통화를 걸었습니다"; -"notice_placed_video_call" = "%@님이 영상 통화를 걸었습니다"; -"notice_answered_video_call" = "%@님이 전화를 받았습니다"; -"notice_ended_video_call" = "%@님이 전화를 끊었습니다"; -"notice_conference_call_request" = "%@님이 VoIP 회의를 요청했습니다"; -"notice_conference_call_started" = "VoIP 회의가 시작했습니다"; -"notice_conference_call_finished" = "VoIP 회의가 끝났습니다"; -// button names -"ok" = "예"; -"send" = "보내기"; -"copy_button_name" = "복사"; -"resend" = "다시 보내기"; -"redact" = "감추기"; -"share" = "공유"; -"delete" = "삭제"; -// actions -"action_logout" = "로그아웃"; -"create_room" = "방 만들기"; -"login" = "로그인"; -"create_account" = "계정 만들기"; -"membership_invite" = "초대받음"; -"membership_leave" = "떠남"; -"membership_ban" = "출입 금지당함"; -"num_members_one" = "%@명의 사용자"; -"num_members_other" = "%@명의 사용자"; -"kick" = "추방"; -"ban" = "출입 금지"; -"unban" = "출입 금지 풀기"; -"message_unsaved_changes" = "저장하지 않은 변경 사항이 있습니다. 떠나게 되면 변경 사항은 버려집니다."; -// Login Screen -"login_error_already_logged_in" = "이미 로그인됨"; -"login_error_must_start_http" = "URL은 http[s]://로 시작해야 함"; -// room details dialog screen -"room_details_title" = "방 세부 사항"; -// contacts list screen -"invitation_message" = "저는 Matrix로 당신과 대화하고 싶습니다. 자세한 정보는 웹사이트 http://martix.org에 방문해주세요."; -// Settings screen -"settings_title_config" = "설정"; -"settings_title_notifications" = "알림"; -// Notification settings screen -"notification_settings_disable_all" = "모든 알림 끄기"; -"notification_settings_enable_notifications" = "알림 켜기"; -"notification_settings_enable_notifications_warning" = "모든 기기에 모든 알림이 현재부터 꺼집니다."; -"notification_settings_global_info" = "알림 설정은 사용자 계정에 저장되며 계정을 등록한 모든 클라이언트 간에 공유됩니다 (데스크톱 알림 포함)\n\n규칙은 순서대로 적용됩니다; 일치하는 것의 첫 번째 규칙은 메시지의 결과를 정의하는 것입니다.\n따라서: 발신자 별 알림보다 방 별 알림이, 방 별 알림보다 단어 별 알림이 더 중요합니다.\n동일한 종류의 여러 규칙이 있다면, 목록에서 일치하는 첫 번째 규칙이 우선됩니다."; -"notification_settings_per_word_notifications" = "단어 별 알림"; -"notification_settings_per_word_info" = "단어는 대소문자를 구분하지 않고, * 와이드카드 기호를 넣을 수 있습니다. 따라서:\nfoo라는 단어는 양끝에 단어가 이어지지 않은 경우 (예: 문장 부호, 공백 또는 문장의 시작과 끝)에 있는 단어를 맞춥니다.\nfoo*는 foo로 시작하는 모든 단어를 맞춥니다.\n*foo*는 foo라는 세 글자를 포함하는 모든 단어를 맞춥니다."; -"notification_settings_always_notify" = "항상 알림"; -"notification_settings_never_notify" = "절대 알리지 않기"; -"notification_settings_word_to_match" = "맞춰볼 단어"; -"notification_settings_highlight" = "강조"; -"notification_settings_custom_sound" = "맞춤 소리"; -"notification_settings_per_room_notifications" = "방 별 알림"; -"notification_settings_per_sender_notifications" = "발신자 별 알림"; -"notification_settings_sender_hint" = "@user:domain.com"; -"notification_settings_select_room" = "방 선택"; -"notification_settings_other_alerts" = "기타 경고"; -"notification_settings_contain_my_user_name" = "내 사용자 이름이 있는 메시지에 대해 소리로 알림"; -"notification_settings_contain_my_display_name" = "내 표시 이름이 있는 메시지에 대해 소리로 알림"; -"notification_settings_just_sent_to_me" = "나에게만 온 메시지에 대해 소리로 알림"; -"notification_settings_invite_to_a_new_room" = "내가 새 방에 초대받았을 때 알림"; -"notification_settings_people_join_leave_rooms" = "사람들이 참가하고 떠날 때 알림"; -"notification_settings_receive_a_call" = "전화를 받을 때 알림"; -"notification_settings_suppress_from_bots" = "봇의 알림 억제"; -"notification_settings_by_default" = "기본으로 되돌리기..."; -"notification_settings_notify_all_other" = "모든 다른 메시지/방의 알림"; -// gcm section -"settings_config_home_server" = "홈서버: %@"; -"settings_config_identity_server" = "ID 서버: %@"; -"settings_config_user_id" = "사용자 ID: %@"; -// call string -"call_waiting" = "대기 중..."; -"call_connecting" = "전화 연결 중..."; -"call_ended" = "전화 종료됨"; -"call_ring" = "전화 중..."; -"incoming_video_call" = "수신 영상 통화"; -"incoming_voice_call" = "수신 음성 통화"; -"call_invite_expired" = "전화 초대가 만료됨"; -// unrecognized SSL certificate -"ssl_trust" = "신뢰"; -"ssl_logout_account" = "로그아웃"; -"ssl_remain_offline" = "무시"; -"ssl_fingerprint_hash" = "핑거프린트 (%@):"; -"ssl_could_not_verify" = "원격 서버의 ID를 확인할 수 없습니다."; -"ssl_cert_not_trust" = "누군가가 악의적으로 트래픽을 가로채고 있거나, 휴대 전화가 원격 서버에서 제공한 인증을 신뢰하지 않습니다."; -"ssl_cert_new_account_expl" = "서버 관리자가 예상된다고 대답했다면, 아래 핑거프린트가 그들이 제공한 핑거프린트와 맞는지 확인하세요."; -"ssl_unexpected_existing_expl" = "휴대 전화를 인증했던 인증서가 다른 것으로 변경되었습니다. 이것은 매우 비정상적입니다. 이 새로운 인증서를 수락하지 않는 것을 권합니다."; -"ssl_expected_existing_expl" = "인증서가 신뢰했던 것에서 신뢰하지 않은 것으로 변경되었습니다. 서버가 인증서를 세로 작성했을 수 있습니자. 예상되는 핑거프린트를 위해 서버 관리자에게 연락하세요."; -"ssl_only_accept" = "위의 것과 일치한 핑거프린트를 서버 관리자가 게시해야 인증서를 수락할 수 있습니다."; -"notice_room_third_party_revoked_invite" = "%@님이 %@님에게 보낸 초대를 취소했습니다"; -"device_details_rename_prompt_title" = "기기 이름"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/lv.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/lv.lproj/MatrixKit.strings deleted file mode 100644 index b7e38eef4..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/lv.lproj/MatrixKit.strings +++ /dev/null @@ -1,119 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Izveidot kontu:"; -"login_server_url_placeholder" = "URL adrese (piemēram, https://matrix.org)"; -"login_home_server_title" = "Mājas serveria URL:"; -"login_home_server_info" = "Tavs mājas serveris glabā visas sarunas un konta datus"; -"login_identity_server_title" = "Identifikācijas servera URL:"; -"view" = "Skatīt"; -"back" = "Atpakaļ"; -"continue" = "Turpināt"; -"leave" = "Atstāt"; -"invite" = "Uzaicināt"; -"retry" = "Atgriezties"; -"cancel" = "Atcelt"; -"save" = "Saglabāt"; -"login_password_placeholder" = "Parole"; -"login_display_name_placeholder" = "Displeja vārds (piem. Bob Obson)"; -"login_email_placeholder" = "Epasta adrese"; -"login_prompt_email_token" = "Lūdzu ievadi savu epasta pārbaudes kodu:"; -"login_error_title" = "Piekļuve neizdevās"; -"login_error_registration_is_not_supported" = "Reģistrācija pašlaik netiek atbalstīta"; -"login_error_forbidden" = "Nederīgs lietotājvārds/parole"; -"login_error_limit_exceeded" = "Pārāk daudz pieprasījumi tikuši izsūtīti"; -"login_error_user_in_use" = "Šis lietotājvārds jau tiek izmantots"; -"login_leave_fallback" = "Atcelt"; -"login_invalid_param" = "Nepareizs parametrs"; -"register_error_title" = "Reģistrācija neizdevās"; -"login_error_resource_limit_exceeded_title" = "Resursu Limits Pārsniegts"; -"yes" = "Jā"; -"close" = "Aizvērt"; -"sign_up" = "Pieteikties"; -"start_chat" = "Sākt čatu"; -"start_voice_call" = "Sākt Balss Zvanu"; -"start_video_call" = "Sākt Video Zvanu"; -"select_account" = "Izvēlies kontu"; -"invite_user" = "Uzaicini matrix Lietotāju"; -"select_all" = "Izvēlēties Visus"; -"cancel_upload" = "Atcelt Augšupielādi"; -"cancel_download" = "Atcelt Lejupielādi"; -"show_details" = "Rādīt Detaļas"; -"answer_call" = "Pacelt Zvanu"; -"reject_call" = "Atteikt Zvanu"; -"end_call" = "Beigt Zvanu"; -"ignore" = "Ignorēt"; -"unignore" = "At-Ignorēt"; -"notice_room_name_removed" = "%@ noņēma istabas nosaukumu"; -"notice_room_created" = "%@ izveidoja istabu"; -"notice_encrypted_message" = "Šifrēts ziņojums"; -"notice_image_attachment" = "attēla pielikums"; -"notice_audio_attachment" = "audio pielikums"; -"notice_video_attachment" = "video pielikums"; -"notice_location_attachment" = "atrašanās vietas pielikums"; -"notice_file_attachment" = "datnes pielikums"; -"notice_invalid_attachment" = "nederīgs pielikums"; -"notice_unsupported_attachment" = "Neatbalstīts pielikums: %@"; -"notice_error_unsupported_event" = "Neatbalstīts notikums"; -"notice_error_unexpected_event" = "Negaidīts notikums"; -"notice_error_unknown_event_type" = "Nezināms notikuma veids"; -"notice_sticker" = "uzlīme"; -"room_displayname_two_members" = "%@ un %@"; -"room_displayname_more_than_two_members" = "%@ un %@ citi"; -"notification_settings_room_rule_title" = "Istaba: '%@'"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Pēdējoreiz redzēts\n"; -"device_details_rename_prompt_title" = "Sesijas Nosaukums"; -"device_details_delete_prompt_title" = "Autentifikācija"; -"room_event_encryption_info_event_user_id" = "Lietotāja ID\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519 identitātes atslēga\n"; -"room_event_encryption_info_event_algorithm" = "Algoritms\n"; -"room_event_encryption_info_event_session_id" = "Sesijas ID\n"; -"room_event_encryption_info_event_decryption_error" = "Atšifrēšanas kļūda\n"; -"room_event_encryption_info_event_none" = "nav"; -"room_event_encryption_info_device_unknown" = "nezināma sesija\n"; -"room_event_encryption_info_device_name" = "Publiskais Nosaukums\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "Verifikācija\n"; -"room_event_encryption_info_device_verified" = "Verificēts"; -"room_event_encryption_info_device_not_verified" = "NAV verificēts"; -"notice_room_name_removed_for_dm" = "%@ noņēma nosaukumu"; - -// Events formatter -"notice_avatar_changed_too" = "(avatars arī tika nomainīts)"; -"resume_call" = "Atjaunot"; -"resend_message" = "Atkārtot ziņojuma sūtīšanu"; -"reset_to_default" = "Atietatīt uz noklusējumu"; -"capture_media" = "Uzņemt foto/video"; -"attach_media" = "Pievienot mediju no bibliotēkas"; -"mention" = "Pieminēt"; -"set_admin" = "Norādīt administratoru"; -"set_moderator" = "Norādīt moderatoru"; -"set_default_power_level" = "Nodzēst jaudas līmeni"; -"set_power_level" = "Iestatīt jaudas līmeni"; -"submit_code" = "Iesniegt kodu"; -"submit" = "Iesniegt"; -"dismiss" = "Noraidīt"; -"discard" = "Izmest"; -"abort" = "Pārtraukt"; - -// Action -"no" = "Nē"; -"login_error_resource_limit_exceeded_contact_button" = "Sazinieties ar administratoru"; -"login_error_resource_limit_exceeded_message_contact" = "\n\nLai turpinātu lietot šo pakalpojumu, lūdzu, sazinieties ar savu pakalpojuma administratoru."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Šis mājas serveris ir sasniedzis ikmēneša aktīvo lietotāju limitu."; -"login_error_resource_limit_exceeded_message_default" = "Šis mājas serveris ir sasniedzis vienu no savu resursu limitiem."; -"login_desktop_device" = "Dators"; -"login_tablet_device" = "Planšete"; -"login_mobile_device" = "Mobilā iekārta"; -"login_error_forgot_password_is_not_supported" = "“Aizmirsu paroli” patlaban nav atbalstīta"; -"login_use_fallback" = "Lietojiet atkāpšanās lappusi"; -"login_error_login_email_not_yet" = "E-pasta saite vel nav noklikšķināta"; -"login_error_not_json" = "Nesatur derīgu JSON"; -"login_error_bad_json" = "Bojāts JSON"; -"login_error_unknown_token" = "Netika atpazīta norādītā pieejas atslēga"; -"login_error_do_not_support_login_flows" = "Mēs patrez neatbalstām jebkādas pieteikšanās plūsmas, kas definētas no šī mājas servera"; -"login_error_no_login_flow" = "Mums neizdevās saņemt autentifikācijas informāciju no šī mājas servera."; -"login_email_info" = "E-pasta adreses norādīšana ļauj citiem lietotājiem viegli atras tevi Matix, kā arī nodrošinās tev iespēju nākotnē atjaunot savu paroli."; -"login_optional_field" = "neobligāts"; -"login_user_id_placeholder" = "Matrix ID (piem. @bob:matrix.org vai bobs)"; -"login_identity_server_info" = "Matrix nodrošina identifikācijas serverus, lai atšķirtu, kuri e-pasti, u.c., pieder kuram Matrix ID. Patlaban pastāv vienīgi https://matrix.org"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/nb-NO.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/nb-NO.lproj/MatrixKit.strings deleted file mode 100644 index 7f2347f95..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/nb-NO.lproj/MatrixKit.strings +++ /dev/null @@ -1,544 +0,0 @@ - - -"room_event_encryption_info_device_verification" = "Verifisering\n"; -"notice_display_name_set" = "%@ satte visningsnavnet sitt til %@"; -"room_no_power_to_create_conference_call" = "Du trenger tillatelse til å invitere for å starte en konferanse i dette rommet"; -"room_error_join_failed_empty_room" = "Det er for øyeblikket ikke mulig å bli med i et tomt rom igjen."; -"room_event_encryption_verify_message" = "For å verifisere at denne økten er til å stole på, vennligst kontakt eieren på andre måter (f.eks. personlig eller en telefonsamtale) og spør dem om nøkkelen de ser i brukerinnstillingene for denne økten samsvarer med nøkkelen nedenfor:\n\n\tØkt-navn: %@\n\tØkt-ID: %@\n\tØkt-nøkkel: %@\n\nHvis den stemmer overens, trykk på verifiserings-knappen nedenfor. Hvis den ikke gjør det, er det noen andre som overvåker denne økten, og du vil sannsynligvis trykke på svartelisteknappen i stedet.\n\nI fremtiden vil denne verifiseringsprosessen bli mer sofistikert."; -"room_event_encryption_info_block" = "Svarteliste"; -"device_details_delete_prompt_title" = "Autentisering"; -"notice_room_power_level_acting_requirement" = "Minimum tilgangsnivå en bruker må ha før utførelse av handling er:"; -"login_prompt_email_token" = "Vennligst skriv inn valideringstokenet ditt for e-post:"; -"login_server_url_placeholder" = "URL (f.eks. https://matrix.org)"; - -// Login Screen -"login_create_account" = "Opprett konto:"; -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "Matrix"; -"ssl_cert_not_trust" = "Dette kan bety at noen overvåker trafikken din, eller at telefonen ikke stoler på sertifikatet fra den eksterne serveren."; -"resend" = "Send på nytt"; -"login_identity_server_title" = "URL til identitetsserver:"; -"login_home_server_info" = "Hjemmeserveren lagrer alle samtalene og kontodataene dine"; -"login_home_server_title" = "Hjemmeserver-URL:"; -"login_identity_server_info" = "Matrix tilbyr identitetsservere for å spore hvilke e-postadresser etc. som tilhører hvilke Matrix-IDer. Bare https://matrix.org eksisterer for øyeblikket."; -"login_user_id_placeholder" = "Matrix-ID (f.eks. @Bob: matrix.org eller bob)"; -"login_email_info" = "Angi en e-postadresse slik at andre brukere lettere kan finne deg, og samtidig gi deg en måte å tilbakestille passordet ditt senere."; -"login_display_name_placeholder" = "Visningsnavn (f.eks. Bob Obson)"; -"login_optional_field" = "valgfri"; -"login_password_placeholder" = "Passord"; -"login_error_do_not_support_login_flows" = "Foreløpig støtter vi ikke påloggingsflytene som er definert for denne hjemmeserveren"; -"login_error_no_login_flow" = "Vi kunne ikke hente autentiseringsinformasjon fra denne hjemmeserveren"; -"login_error_title" = "Innlogging feilet"; -"login_email_placeholder" = "E-postadresse"; -"login_error_unknown_token" = "Angitt tilgangstoken ble ikke gjenkjent"; -"login_error_forbidden" = "Ugyldig brukernavn/passord"; -"login_error_registration_is_not_supported" = "Registrering støttes ikke for øyeblikket"; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Denne hjemmeserveren har nådd grensen for aktive månedlige brukere."; -"login_error_resource_limit_exceeded_message_default" = "Denne hjemmeserveren har overskredet en av ressursgrensene."; -"login_error_resource_limit_exceeded_title" = "Ressursgrensen er overskredet"; -"login_desktop_device" = "PC"; -"login_tablet_device" = "Nettbrett"; -"login_mobile_device" = "Mobil"; -"login_error_forgot_password_is_not_supported" = "Glemt passord støttes for øyeblikket ikke"; -"register_error_title" = "Registrering feilet"; -"login_invalid_param" = "Ugyldig parameter"; -"login_leave_fallback" = "Avbryt"; -"login_use_fallback" = "Bruk reserveside"; -"login_error_login_email_not_yet" = "E-postlinken som ikke er klikket på ennå"; -"login_error_user_in_use" = "Dette brukernavnet er allerede brukt"; -"login_error_limit_exceeded" = "Det er sendt for mange forespørsler"; -"login_error_not_json" = "Inneholdt ikke gyldig JSON"; -"login_error_bad_json" = "Feilformatert JSON"; -"set_power_level" = "Bestem tilgangsnivå"; -"submit_code" = "Send inn kode"; -"submit" = "Send inn"; -"sign_up" = "Meld deg på"; -"retry" = "Prøv på nytt"; -"dismiss" = "Ignorer"; -"discard" = "Forkast"; -"continue" = "Fortsett"; -"close" = "Lukk"; -"back" = "Tilbake"; -"abort" = "Avbryt"; -"yes" = "Ja"; - -// Action -"no" = "Nei"; -"login_error_resource_limit_exceeded_contact_button" = "Kontakt administrator"; -"login_error_resource_limit_exceeded_message_contact" = "\n\nKontakt tjenesteadministratoren din for å fortsette å bruke denne tjenesten."; -"set_default_power_level" = "Tilbakestill tilgangsnivå"; -"start_chat" = "Start samtale"; -"set_admin" = "Velg admin"; -"set_moderator" = "Velg moderator"; -"invite_user" = "Inviter bruker"; -"capture_media" = "Ta bilde/video"; -"attach_media" = "Legg ved media fra biblioteket"; -"select_account" = "Velg en konto"; -"mention" = "Nevn"; -"start_video_call" = "Start videoanrop"; -"start_voice_call" = "Start taleanrop"; -"answer_call" = "Svar på anrop"; -"show_details" = "Vis detaljer"; -"cancel_download" = "Avbryt nedlasting"; -"cancel_upload" = "Avbryt opplasting"; -"select_all" = "Velg alle"; -"resend_message" = "Send meldingen på nytt"; -"reset_to_default" = "Tilbakestill til standard"; -"reject_call" = "Avvis anrop"; -"end_call" = "Avslutt samtale"; -// Old -"notice_room_join_rule" = "Bli-med regelen er: %@"; -"notice_room_created_for_dm" = "%@ ble med."; -"notice_room_created" = "%@ opprettet og konfigurerte rommet."; -"notice_profile_change_redacted" = "%@ oppdaterte profilen sin %@"; -"notice_event_redacted_reason" = " [årsak: %@]"; -"notice_event_redacted_by" = " av %@"; -"notice_event_redacted" = ""; -"notice_room_topic_removed" = "%@ fjernet emnet"; -"notice_room_name_removed_for_dm" = "%@ fjernet navnet"; -"notice_room_name_removed" = "%@ fjernet romnavnet"; - -// Events formatter -"notice_avatar_changed_too" = "(avatar ble også endret)"; -"unignore" = "Opphev ignorering"; -"ignore" = "Ignorer"; -"resume_call" = "Gjenoppta"; -"notice_room_power_level_intro" = "Medlemmenes tilgangsnivå i rommet er:"; -"notice_room_join_rule_public_by_you_for_dm" = "Du gjorde dette offentlig."; -"notice_room_join_rule_public_by_you" = "Du gjorde rommet offentlig."; -"notice_room_join_rule_public_for_dm" = "%@ gjorde dette offentlig."; -"notice_room_join_rule_public" = "%@ gjorde rommet offentlig."; -"notice_room_join_rule_invite_by_you_for_dm" = "Du endret til kun inviterte."; -"notice_room_join_rule_invite_by_you" = "Du endret rommet til kun inviterte."; -"notice_room_join_rule_invite_for_dm" = "%@ endret til kun inviterte."; -// New -"notice_room_join_rule_invite" = "%@ endret rommet til kun inviterte."; -"notice_room_power_level_intro_for_dm" = "Medlemmenes tilgangsnivå er:"; -"notice_room_power_level_event_requirement" = "Minimum tilgangsnivå relatert til events er:"; -"notice_unsupported_attachment" = "Ikke støttet vedlegg: %@"; -"notice_invalid_attachment" = "ugyldig vedlegg"; -"notice_file_attachment" = "filvedlegg"; -"notice_location_attachment" = "lokasjonsvedlegg"; -"notice_video_attachment" = "videovedlegg"; -"notice_audio_attachment" = "lydvedlegg"; -"notice_image_attachment" = "bildevedlegg"; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ slo på ende-til-ende-kryptering (ukjent algoritme %2$@)."; -"notice_encryption_enabled_ok" = "%@ slo på ende-til-ende-kryptering."; -"notice_encrypted_message" = "Kryptert melding"; -"notice_room_related_groups" = "Gruppene som er tilknyttet dette rommet er: %@"; -"notice_room_aliases_for_dm" = "Aliasene er: %@"; -"notice_room_aliases" = "Rom-aliasene er: %@"; -"room_event_encryption_info_event" = "Hendelseinformasjon\n"; - -// Encryption information -"room_event_encryption_info_title" = "Ende-til-ende-krypteringsinformasjon\n\n"; -"device_details_delete_prompt_message" = "Denne operasjonen krever ekstra godkjenning.\nFor å fortsette, vennligst skriv inn passordet ditt."; -"device_details_rename_prompt_message" = "En økts offentlige navn er synlig for folk du kommuniserer med"; -"device_details_rename_prompt_title" = "Øktnavn"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_last_seen" = "Sist sett\n"; -"device_details_identifier" = "ID\n"; -"device_details_name" = "Offentlig navn\n"; - -// Devices -"device_details_title" = "Øktinformasjon\n"; -"notification_settings_room_rule_title" = "Rom: '%@'"; -"settings_enter_validation_token_for" = "Angi valideringstoken for %@:"; -"settings_enable_push_notifications" = "Aktiver push-varsler"; -"settings_enable_inapp_notifications" = "Aktiver varsler i appen"; - -// Settings -"settings" = "Innstillinger"; -"room_displayname_more_than_two_members" = "%@ og %@ andre"; -"room_displayname_two_members" = "%@ og %@"; - -// room display name -"room_displayname_empty_room" = "Tomt rom"; -"notice_in_reply_to" = "Som svar på"; -"notice_sticker" = "klistremerke"; -"notice_crypto_error_unknown_inbound_session_id" = "Avsenderøkten har ikke sendt oss nøklene til denne meldingen."; -"notice_crypto_unable_to_decrypt" = "** Kan ikke dekryptere: %@ **"; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ gjorde fremtidige meldinger synlige for alle, fra de ble med."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ gjorde fremtidige meldinger synlige for alle, fra de blir invitert."; -"notice_room_history_visible_to_anyone" = "%@ gjorde fremtidig romhistorie synlig for alle."; -"notice_error_unknown_event_type" = "Ukjent hendelsestype"; -"notice_error_unexpected_event" = "Uventet hendelse"; -"notice_error_unsupported_event" = "Ikke støttet hendelse"; -"notice_feedback" = "Tilbakemeldingshendelse (id: %@): %@"; -"notice_room_history_visible_to_members_from_joined_point" = "%@ synliggjorde fremtidig romhistorie for alle medlemmer i rommet, fra det tidspunktet de ble med."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ synliggjorde fremtidig romhistorie for alle medlemmer i rommet, fra det punktet de er invitert."; -"notice_room_history_visible_to_members_for_dm" = "%@ gjorde fremtidige meldinger synlige for alle medlemmer i rommet."; -"notice_room_history_visible_to_members" = "%@ synliggjorde fremtidig romhistorie for alle medlemmer i rommet."; -"notice_redaction" = "%@ holdt igjen en hendelse (id: %@)"; -"room_event_encryption_info_event_fingerprint_key" = "Benyttet Ed25519 fingeravtrykknøkkel\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519 identitetsnøkkel\n"; -"room_event_encryption_info_event_user_id" = "Bruker-ID\n"; -"room_event_encryption_info_event_session_id" = "Økt-ID\n"; -"room_event_encryption_info_event_algorithm" = "Algoritme\n"; -"account_email_validation_message" = "Sjekk e-posten din og klikk på linken den inneholder. Når dette er gjort, klikker du på fortsett."; -"account_linked_emails" = "Linkede e-poster"; -"account_link_email" = "Link e-post"; - -// Account -"account_save_changes" = "Lagre endringer"; -"room_event_encryption_verify_ok" = "Verifiser"; -"room_event_encryption_verify_title" = "Verifiser økt\n\n"; -"room_event_encryption_info_unblock" = "Fjern svartelisting"; -"room_event_encryption_info_unverify" = "Fjern verifisering"; -"room_event_encryption_info_verify" = "Verifiser..."; -"room_event_encryption_info_device_blocked" = "Svartelistet"; -"room_event_encryption_info_device_not_verified" = "IKKE verifisert"; -"room_event_encryption_info_device_verified" = "Verifisert"; -"room_event_encryption_info_device_fingerprint" = "Ed25519 fingeravtrykk\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_name" = "Offentlig navn\n"; -"room_event_encryption_info_device_unknown" = "ukjent økt\n"; -"room_event_encryption_info_device" = "\nInformasjon om avsenderøkt\n"; -"room_event_encryption_info_event_none" = "ingen"; -"room_event_encryption_info_event_unencrypted" = "ukryptert"; -"room_event_encryption_info_event_decryption_error" = "Dekrypteringsfeil\n"; -"account_email_validation_title" = "Venter på verifisering"; -"room_creation_alias_placeholder" = "(f.eks. #foo:example.org)"; -"room_creation_alias_title" = "Romalias:"; -"room_creation_name_placeholder" = "(f.eks. lunsjgruppe)"; - -// Room creation -"room_creation_name_title" = "Romnavn:"; -"account_error_push_not_allowed" = "Varsler ikke tillatt"; -"account_error_msisdn_wrong_description" = "Dette ser ikke ut til å være et gyldig telefonnummer"; -"account_error_msisdn_wrong_title" = "Ugyldig telefonnummer"; -"account_error_email_wrong_description" = "Dette ser ikke ut til å være en gyldig e-postadresse"; -"account_error_email_wrong_title" = "Ugyldig e-postadresse"; -"account_error_matrix_session_is_not_opened" = "Matrix-økt er ikke åpnet"; -"account_error_picture_change_failed" = "Endring av bildet feilet"; -"account_error_display_name_change_failed" = "Endring av visningsnavn feilet"; -"account_msisdn_validation_error" = "Kan ikke bekrefte telefonnummeret."; -"account_msisdn_validation_message" = "Vi har sendt en SMS med en aktiveringskode. Vennligst skriv inn denne koden nedenfor."; -"account_email_validation_error" = "Kan ikke bekrefte e-postadressen. Sjekk e-posten din og klikk på lenken den inneholder. Når dette er gjort, klikker du på fortsett"; -"account_msisdn_validation_title" = "Venter på verifisering"; -"room_error_join_failed_title" = "Deltakelse i rommet feilet"; - -// Room -"room_please_select" = "Vennligst velg et rom"; -"room_creation_participants_placeholder" = "(f.eks. @bob:hjemmeserver1; @john:hjemmeserver2 ...)"; -"room_creation_participants_title" = "Deltakere:"; -"room_creation_alias_placeholder_with_homeserver" = "(f.eks. #foo%@)"; -"room_member_power_level_prompt" = "Du vil ikke kunne angre denne endringen ettersom du gir brukeren samme tilgangsnivå som deg selv.\nEr du sikker?"; - -// Room members -"room_member_ignore_prompt" = "Er du sikker på at du vil skjule alle meldinger fra denne brukeren?"; -"message_reply_to_message_to_reply_to_prefix" = "Som svar på"; -"message_reply_to_sender_sent_a_file" = "sendte en fil."; -"message_reply_to_sender_sent_an_audio_file" = "sendte en lydfil."; -"message_reply_to_sender_sent_a_video" = "sendte en video."; - -// Reply to message -"message_reply_to_sender_sent_an_image" = "sendte et bilde."; -"room_no_conference_call_in_encrypted_rooms" = "Konferansesamtaler støttes ikke i krypterte rom"; -"room_left_for_dm" = "Du forlot"; -"room_left" = "Du forlot rommet"; -"room_error_timeline_event_not_found" = "Applikasjonen prøvde å laste inn et bestemt punkt i tidslinjen til dette rommet, men kunne ikke finne det"; -"room_error_timeline_event_not_found_title" = "Kunne ikke laste tidslinjeposisjonen"; -"room_error_cannot_load_timeline" = "Kunne ikke laste tidslinjen"; -"room_error_topic_edition_not_authorized" = "Du har ikke autorisasjon til å redigere dette romemnet"; -"room_error_name_edition_not_authorized" = "Du har ikke autorisasjon til å redigere dette romnavnet"; - -// Groups -"group_invite_section" = "Invitasjoner"; -"contact_local_contacts" = "Lokale kontakter"; - -// Contacts -"contact_mx_users" = "Matrix-brukere"; -"attachment_e2e_keys_import" = "Importer..."; -"attachment_e2e_keys_file_prompt" = "Denne filen inneholder krypteringsnøkler eksportert fra en Matrix-klient.\nVil du se filinnholdet eller importere nøklene den inneholder?"; -"attachment_multiselection_original" = "Faktisk størrelse"; -"attachment_multiselection_size_prompt" = "Vil du sende bilder som:"; -"attachment_cancel_upload" = "Avbryte opplastingen?"; -"attachment_cancel_download" = "Avbryte nedlastingen?"; -"attachment_large" = "Stor: %@"; -"attachment_medium" = "Medium: %@"; -"attachment_small" = "Liten: %@"; -"attachment_original" = "Faktisk størrelse: %@"; - -// Attachment -"attachment_size_prompt" = "Vil du sende som:"; -"search_searching" = "Søk pågår..."; - -// Search -"search_no_results" = "Ingen resultater"; -"group_section" = "Grupper"; -"format_time_h" = "t"; -"format_time_m" = "m"; - -// Time -"format_time_s" = "s"; -"e2e_import_prompt" = "Denne prosessen lar deg importere krypteringsnøkler som du tidligere hadde eksportert fra en annen app. Du vil da kunne dekryptere alle meldinger som den andre klienten kan dekryptere.\nEksportfilen er beskyttet med en passordfrase. Du bør angi passordet her for å dekryptere filen."; - -// E2E import -"e2e_import_room_keys" = "Importer romnøkler"; -"format_time_d" = "d"; -"e2e_import" = "Importer"; -"e2e_export_prompt" = "Denne prosessen lar deg eksportere nøklene for meldinger du har mottatt i krypterte rom til en lokal fil. Du vil da kunne importere filen til en annen app i fremtiden, slik at den også kan dekryptere disse meldingene.\nDen eksporterte filen lar alle som kan lese den dekryptere alle krypterte meldinger du kan se, så du bør passe på å lagre den sikkert."; - -// E2E export -"e2e_export_room_keys" = "Eksporter romnøkler"; -"e2e_passphrase_enter" = "Skriv inn passordfrase"; -"e2e_export" = "Eksporter"; -"e2e_passphrase_empty" = "Passordfrase kan ikke være tom"; -"e2e_passphrase_confirm" = "Bekreft passordfrase"; -"power_level" = "Tilgangsnivå"; -"public" = "Offentlig"; -"private" = "Privat"; -"default" = "standard"; -"not_supported_yet" = "Støttes ikke ennå"; -"error_common_message" = "En feil oppstod. Prøv igjen senere."; -"error" = "Feil"; -"unsent" = "Ikke sendt"; -"offline" = "offline"; - -// Others -"user_id_title" = "Bruker-ID:"; -"e2e_passphrase_create" = "Opprett passordfrase"; -"e2e_passphrase_not_match" = "Passordfrase må stemme overens"; -"user_id_placeholder" = "eks: @bob:hjemmeserver"; -"network_error_not_reachable" = "Vennligst kontroller nettverkstilkoblingen"; -"local_contacts_access_discovery_warning" = "For å finne kontakter som allerede bruker løsningen, kan %@ sende e-postadresser og telefonnumre i adresseboken til den valgte identitetsserveren. Der det støttes, blir personlige data indeksert før sending - vennligst sjekk identitetsserverens personvernregler for mer informasjon."; -"local_contacts_access_discovery_warning_title" = "Finne brukere"; -"local_contacts_access_not_granted" = "Å finne brukere fra lokale kontakter krever tilgang til dine kontakter, men %@ har ikke tillatelse til å bruke dem"; -"microphone_access_not_granted_for_call" = "Samtaler krever tilgang til mikrofonen, men %@ har ikke tillatelse til å bruke den"; - -// Permissions -"camera_access_not_granted_for_call" = "Videosamtaler krever tilgang til kameraet, men %@ har ikke tillatelse til å bruke det"; -"ssl_homeserver_url" = "Hjemmeserver-URL:% @"; - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /matrix-sdk/src/main/res/values/strings.xml. -*/ - -"notice_room_invite" = "%@ inviterte %@"; -"language_picker_default_language" = "Standard (%@)"; - -// Language picker -"language_picker_title" = "Velg språk"; - -// Country picker -"country_picker_title" = "Velg et land"; -"notice_room_kick" = "%@ utviste %@"; -"notice_room_reject" = "%@ avviste invitasjonen"; -"notice_room_leave" = "%@ forlot"; -"notice_room_join" = "%@ ble med"; -"notice_room_third_party_registered_invite" = "%@ godtok invitasjonen til %@"; -"notice_room_third_party_invite_for_dm" = "%@ inviterte %@"; -"notice_room_third_party_invite" = "%@ sendte en invitasjon til %@ om å bli med i rommet"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ tilbakekalte invitasjonen til %@ om å bli med i rommet"; -"notice_room_third_party_revoked_invite" = "%@ tilbakekalte invitasjonen til %@ om å bli med i rommet"; -"notice_answered_video_call" = "%@ svarte på anropet"; -"notice_placed_video_call" = "%@ startet et videoanrop"; -"notice_placed_voice_call" = "%@ startet et taleanrop"; -"notice_room_name_changed_for_dm" = "%@ endret navnet til %@."; -"notice_room_name_changed" = "%@ endret romnavnet til %@."; -"notice_topic_changed" = "%@ endret emnet til \"%@\"."; -"notice_display_name_removed" = "%@ fjernet visningsnavnet"; -"notice_display_name_changed_from" = "%@ endret visningsnavnet fra %@ til %@"; -"notice_avatar_url_changed" = "%@ byttet avatar"; -"notice_room_reason" = ". Grunnen til: %@"; -"notice_room_withdraw" = "%@ trakk tilbake invitasjonen til %@"; -"notice_room_ban" = "%@ utestengte %@"; -"notice_room_unban" = "%@ omgjorde utestenging %@"; -"notice_declined_video_call" = "%@ avviste anropet"; -"notice_ended_video_call" = "%@ avsluttet samtalen"; -"notice_room_third_party_invite_by_you" = "Du sendte en invitasjon til %@ om å bli med i rommet"; -"notice_room_invite_you" = "%@ inviterte deg"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "Du inviterte %@"; -"notice_conference_call_finished" = "VoIP-konferansen avsluttet"; -"notice_conference_call_started" = "VoIP-konferansen startet"; -"notice_conference_call_request" = "%@ ba om en VoIP-konferanse"; -"notice_room_kick_by_you" = "Du utviste %@"; -"notice_room_reject_by_you" = "Du avviste invitasjonen"; -"notice_room_leave_by_you" = "Du forlot"; -"notice_room_join_by_you" = "Du ble med"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Du tilbakekalte invitasjonen til %@"; -"notice_room_third_party_revoked_invite_by_you" = "Du tilbakekalte invitasjonen til %@ om å bli med i rommet"; -"notice_room_third_party_registered_invite_by_you" = "Du godtok invitasjonen til %@"; -"notice_room_third_party_invite_by_you_for_dm" = "Du inviterte %@"; -"notice_room_unban_by_you" = "Du omgjorde utestenging av %@"; -"notice_room_ban_by_you" = "Du utestengte %@"; -"notice_answered_video_call_by_you" = "Du svarte på anropet"; -"notice_placed_video_call_by_you" = "Du startet et videoanrop"; -"notice_placed_voice_call_by_you" = "Du startet et taleanrop"; -"notice_room_name_changed_by_you_for_dm" = "Du endret navnet til %@."; -"notice_room_name_changed_by_you" = "Du endret romnavnet til %@."; -"notice_topic_changed_by_you" = "Du endret emnet til \"%@\"."; -"notice_display_name_removed_by_you" = "Du fjernet visningsnavnet ditt"; -"notice_display_name_changed_from_by_you" = "Du endret visningsnavnet ditt fra %@ til %@"; -"notice_display_name_set_by_you" = "Du satte visningsnavnet ditt til %@"; -"notice_room_withdraw_by_you" = "Du trakk tilbake invitasjonen til %@"; -"notice_avatar_url_changed_by_you" = "Du byttet avatar"; -"notice_declined_video_call_by_you" = "Du avviste anropet"; -"notice_ended_video_call_by_you" = "Du avsluttet samtalen"; -"login" = "Innlogging"; -"create_room" = "Opprett rom"; - -// actions -"action_logout" = "Logg ut"; -"view" = "Visning"; -"delete" = "Slett"; -"share" = "Del"; -"redact" = "Fjern"; -"copy_button_name" = "Kopier"; -"send" = "Send"; -"leave" = "Forlat"; -"save" = "Lagre"; -"cancel" = "Avbryt"; - -// Room Screen - -// general errors - -// Home Screen - -// Last seen time - -// call events - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /console/src/main/res/values/strings.xml. -*/ - - -// titles - -// button names -"ok" = "OK"; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Du gjorde fremtidige meldinger synlige for alle, fra de ble med."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Du gjorde fremtidig romhistorie synlig for alle medlemmer i rommet, fra det tidspunktet de ble med."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Du gjorde fremtidige meldinger synlige for alle, fra de blir invitert."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Du gjorde fremtidig romhistorie synlig for alle medlemmer i rommet, fra det tidspunktet de er invitert."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Du gjorde fremtidige meldinger synlige for alle medlemmer i rommet."; -"notice_room_history_visible_to_members_by_you" = "Du gjorde fremtidig romhistorie synlig for alle medlemmer i rommet."; -"notice_room_history_visible_to_anyone_by_you" = "Du gjorde fremtidig romhistorie synlig for alle."; -"notice_redaction_by_you" = "Du fjernet en hendelse (id: %@)"; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Du slo på ende-til-ende-kryptering (ukjent algoritme %@)."; -"notice_encryption_enabled_ok_by_you" = "Du slo på ende-til-ende-kryptering."; -"notice_room_created_by_you_for_dm" = "Du ble med."; -"notice_room_created_by_you" = "Du opprettet og konfigurerte rommet."; -"notice_profile_change_redacted_by_you" = "Du oppdaterte profilen din %@"; -"notice_event_redacted_by_you" = " av deg"; -"notice_room_topic_removed_by_you" = "Du fjernet emnet"; -"notice_room_name_removed_by_you_for_dm" = "Du fjernet navnet"; -"notice_room_name_removed_by_you" = "Du fjernet romnavnet"; -"notice_conference_call_request_by_you" = "Du ba om en VoIP-konferanse"; -"kick" = "Utvis"; -"invite" = "Inviter"; -"num_members_other" = "%@ brukere"; -"num_members_one" = "%@ bruker"; -"membership_ban" = "Utestengt"; -"membership_leave" = "Forlot"; -"membership_invite" = "Invitert"; -"create_account" = "Opprett konto"; -"notification_settings_global_info" = "Varslingsinnstillinger lagres i brukerkontoen din og deles mellom alle klienter som støtter dem (inkludert skrivebordsvarsler).\n\nRegler brukes i rekkefølge; den første regelen som samsvarer definerer resultatet for meldingen.\nSå: Varsler per ord er viktigere enn varsler per rom som er viktigere enn varsler per avsender.\nVed flere regler av samme type benyttes den første i listen som samsvarer."; -"notification_settings_enable_notifications_warning" = "Alle varsler er for øyeblikket deaktivert for alle enheter."; -"notification_settings_enable_notifications" = "Aktiver varsler"; - -// Notification settings screen -"notification_settings_disable_all" = "Deaktiver alle varsler"; -"settings_title_notifications" = "Varsler"; - -// Settings screen -"settings_title_config" = "Konfigurasjon"; - -// contacts list screen -"invitation_message" = "Jeg vil gjerne chatte med deg med Matrix. Besøk nettstedet https://matrix.org for å få mer informasjon."; - -// members list Screen - -// accounts list Screen - -// image size selection - -// invitation members list Screen - -// room creation dialog Screen - -// room info dialog Screen - -// room details dialog screen -"room_details_title" = "Romdetaljer"; -"login_error_must_start_http" = "URL må starte med http[s]://"; - -// Login Screen -"login_error_already_logged_in" = "Allerede logget inn"; -"message_unsaved_changes" = "Endringer er ikke lagret. Hvis du avslutter, forkastes de."; -"unban" = "Omgjør utestenging"; -"ban" = "Utesteng"; -"notification_settings_receive_a_call" = "Varsle meg når jeg mottar et anrop"; -"notification_settings_people_join_leave_rooms" = "Varsle meg når folk blir med eller forlater rom"; -"notification_settings_invite_to_a_new_room" = "Varsle meg når jeg blir invitert til et nytt rom"; -"notification_settings_just_sent_to_me" = "Varsle meg med lyd om meldinger sendt bare til meg"; -"notification_settings_contain_my_display_name" = "Varsle meg med lyd om meldinger som inneholder visningsnavnet mitt"; -"notification_settings_contain_my_user_name" = "Varsle meg med lyd om meldinger som inneholder brukernavnet mitt"; -"notification_settings_other_alerts" = "Andre varsler"; -"notification_settings_select_room" = "Velg et rom"; -"notification_settings_sender_hint" = "@bruker:domene.com"; -"notification_settings_per_sender_notifications" = "Varsler per avsender"; -"notification_settings_per_room_notifications" = "Varsler per rom"; -"notification_settings_custom_sound" = "Egendefinert lyd"; -"notification_settings_highlight" = "Fremhev"; -"notification_settings_word_to_match" = "ord som skal samsvare"; -"notification_settings_never_notify" = "Aldri varsle"; -"notification_settings_always_notify" = "Alltid varsle"; -"notification_settings_per_word_info" = "Ord samsvarer uten å ta hensyn til store eller små bokstaver, og kan inneholde et * jokertegn. Så:\nfoo samsvarer med strengen foo omgitt av ordavgrensere (f.eks. tegnsetting og mellomrom eller start/slutt på linjen).\nfoo* samsvarer med et slikt ord som begynner foo.\n*foo* samsvarer med et hvilket som helst ord som inkluderer de tre bokstavene foo."; -"notification_settings_per_word_notifications" = "Varsler per ord"; -"notification_settings_suppress_from_bots" = "Blokker meldinger fra roboter"; -"notification_settings_notify_all_other" = "Varsle for alle andre meldinger/rom"; -"notification_settings_by_default" = "Som standard ..."; -"incoming_video_call" = "Innkommende videoanrop"; -"call_ended" = "Samtale avsluttet"; -"call_ringing" = "Ringer…"; - -// Settings keys - -// call string -"call_connecting" = "Kobler til…"; -"settings_config_user_id" = "Bruker-ID: %@"; -"settings_config_identity_server" = "Identitetsserver: %@"; - -// gcm section -"settings_config_home_server" = "Hjemmeserver: %@"; -"incoming_voice_call" = "Innkommende taleanrop"; -"call_invite_expired" = "Anropsinvitasjon utløpt"; - -// unrecognized SSL certificate -"ssl_trust" = "Tillit"; -"call_transfer_to_user" = "Overfør til %@"; -"call_consulting_with_user" = "Rådfører seg med %@"; -"call_video_with_user" = "Videosamtale med %@"; -"call_voice_with_user" = "Taleanrop med %@"; -"call_more_actions_dialpad" = "Tastaturet"; -"call_more_actions_transfer" = "Overfør"; -"call_more_actions_audio_use_device" = "Bruk enhetslyd"; -"call_more_actions_audio_use_headset" = "Bruk hodetelefonlyd"; -"call_more_actions_change_audio_device" = "Bytt lydenhet"; -"call_more_actions_unhold" = "Gjenoppta"; -"call_more_actions_hold" = "Hold"; -"call_holded" = "Du holdt samtalen"; -"call_remote_holded" = "%@ satte samtalen på vent"; -"ssl_unexpected_existing_expl" = "Sertifikatet har endret seg fra et som telefonen din klarerte. Dette er VELDIG UVANLIG. Det anbefales derfor at du IKKE godtar dette nye sertifikatet."; -"ssl_cert_new_account_expl" = "Hvis serveradministratoren har sagt at dette forventes, må du forsikre deg om at fingeravtrykket nedenfor samsvarer med fingeravtrykket du har fått."; -"ssl_could_not_verify" = "Kunne ikke bekrefte identiteten til den eksterne serveren."; -"ssl_fingerprint_hash" = "Fingeravtrykk (%@):"; -"ssl_remain_offline" = "Ignorer"; -"ssl_logout_account" = "Logg ut"; -"ssl_expected_existing_expl" = "Sertifikatet er endret fra et tidligere klarert til et som ikke er klarert. Serveren kan ha fornyet sertifikatet. Kontakt serveradministratoren for forventet fingeravtrykk."; -"ssl_only_accept" = "Godta KUN sertifikatet hvis serveradministratoren har publisert et fingeravtrykk som samsvarer med det over."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/nl.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/nl.lproj/MatrixKit.strings deleted file mode 100644 index da52635ac..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/nl.lproj/MatrixKit.strings +++ /dev/null @@ -1,543 +0,0 @@ -/* - Copyright 2017 Vector Creations Ltd - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Account aanmaken:"; -"login_server_url_placeholder" = "URL (bv. https://matrix.org)"; -"login_home_server_title" = "Thuisserver-URL:"; -"login_home_server_info" = "Uw thuisserver slaat al uw gespreks- en accountgegevens op"; -"login_identity_server_title" = "Identiteitsserver-URL:"; -"login_identity_server_info" = "Matrix verstrekt identiteitsservers om te achterhalen welke e-mailadressen enz. bij welke Matrix-ID’s horen. Tot nu toe bestaat alleen https://matrix.org."; -"login_user_id_placeholder" = "Matrix-ID (bv. @jan:matrix.org of jan)"; -"login_password_placeholder" = "Wachtwoord"; -"login_optional_field" = "optioneel"; -"login_display_name_placeholder" = "Weergavenaam (bv. Jan Janssens)"; -"login_email_info" = "Door een e-mailadres in te voeren kunnen andere gebruikers u eenvoudiger op Matrix vinden, verder geeft het u een manier om uw wachtwoord in de toekomst te wijzigen."; -"login_email_placeholder" = "E-mailadres"; -"login_prompt_email_token" = "Voer uw e-mailadres-validatiebewijs in:"; -"login_error_title" = "Aanmelden Mislukt"; -"login_error_no_login_flow" = "Ophalen van authenticatie-informatie van deze thuisserver is mislukt"; -"login_error_do_not_support_login_flows" = "Momenteel bieden we geen ondersteuning voor sommige of alle aanmeldingsmethoden van deze thuisserver"; -"login_error_registration_is_not_supported" = "Registratie wordt momenteel niet ondersteund"; -"login_error_forbidden" = "Ongeldige gebruikersnaam/wachtwoord"; -"login_error_unknown_token" = "Het gespecificeerde toegangsbewijs is niet herkend"; -"login_error_bad_json" = "Ongeldige JSON"; -"login_error_not_json" = "Bevat geen geldige JSON"; -"login_error_limit_exceeded" = "Er zijn te veel verzoeken verzonden"; -"login_error_user_in_use" = "Deze gebruikersnaam is al in gebruik"; -"login_error_login_email_not_yet" = "De koppeling in de e-mail is nog niet geopend"; -"login_use_fallback" = "Terugvalpagina gebruiken"; -"login_leave_fallback" = "Annuleren"; -"login_invalid_param" = "Ongeldige parameter"; -"register_error_title" = "Registratie Mislukt"; -"login_error_forgot_password_is_not_supported" = "Wachtwoord vergeten wordt momenteel nog niet ondersteund"; -// Action -"no" = "Nee"; -"yes" = "Ja"; -"abort" = "Afbreken"; -"back" = "Terug"; -"close" = "Sluiten"; -"continue" = "Verdergaan"; -"discard" = "Verwerpen"; -"dismiss" = "Sluiten"; -"retry" = "Opnieuw proberen"; -"sign_up" = "Aanmelden"; -"submit" = "Versturen"; -"submit_code" = "Code versturen"; -"set_power_level" = "Machtsniveau instellen"; -"set_default_power_level" = "Machtsniveau opnieuw instellen"; -"set_moderator" = "Tot moderator benoemen"; -"set_admin" = "Tot beheerder benoemen"; -"start_chat" = "Gesprek beginnen"; -"start_voice_call" = "Spraakoproep beginnen"; -"start_video_call" = "Video-oproep beginnen"; -"mention" = "Vermelden"; -"select_account" = "Selecteer een account"; -"attach_media" = "Media van de bibliotheek bijvoegen"; -"capture_media" = "Foto/video maken"; -"invite_user" = "Matrix-gebruiker uitnodigen"; -"reset_to_default" = "Standaardwaarden herstellen"; -"resend_message" = "Bericht opnieuw versturen"; -"select_all" = "Alles selecteren"; -"cancel_upload" = "Upload annuleren"; -"cancel_download" = "Download annuleren"; -"show_details" = "Details weergeven"; -"answer_call" = "Oproep beantwoorden"; -"reject_call" = "Oproep afwijzen"; -"end_call" = "Ophangen"; -"ignore" = "Negeren"; -"unignore" = "Stoppen met negeren"; -// Events formatter -"notice_avatar_changed_too" = "(avatar is ook veranderd)"; -"notice_room_name_removed" = "%@ heeft de gespreksnaam verwijderd"; -"notice_room_topic_removed" = "%@ heeft het onderwerp verwijderd"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " door %@"; -"notice_event_redacted_reason" = " [reden: %@]"; -"notice_profile_change_redacted" = "%@ heeft zijn/haar profiel bijgewerkt %@"; -"notice_room_created" = "%@ heeft de kamer aangemaakt en ingesteld."; -"notice_room_join_rule" = "De toetredingsregel is: %@"; -"notice_room_power_level_intro" = "De machtsniveaus van de gespreksleden zijn:"; -"notice_room_power_level_acting_requirement" = "De minimale machtsniveaus waarover een gebruiker moet beschikken vooraleer deze kan handelen zijn:"; -"notice_room_power_level_event_requirement" = "De minimale machtsniveaus gerelateerd aan gebeurtenissen zijn:"; -"notice_room_aliases" = "De gespreksbijnamen zijn: %@"; -"notice_encrypted_message" = "Versleuteld bericht"; -"notice_encryption_enabled" = "%@ heeft eind-tot-eind-versleuteling aangezet (%@-algoritme)"; -"notice_image_attachment" = "afbeeldingsbijlage"; -"notice_audio_attachment" = "audiobijlage"; -"notice_video_attachment" = "videobijlage"; -"notice_location_attachment" = "locatiebijlage"; -"notice_file_attachment" = "bestandsbijlage"; -"notice_invalid_attachment" = "ongeldige bijlage"; -"notice_unsupported_attachment" = "Niet-ondersteunde bijlage: %@"; -"notice_feedback" = "Feedbackgebeurtenis (id: %@): %@"; -"notice_redaction" = "%@ een gebeurtenis verwijderd (id: %@)"; -"notice_error_unsupported_event" = "Niet-ondersteunde gebeurtenis"; -"notice_error_unexpected_event" = "Onverwachte gebeurtenis"; -"notice_error_unknown_event_type" = "Onbekend gebeurtenistype"; -"notice_room_history_visible_to_anyone" = "%@ heeft de toekomstige gespreksgeschiedenis voor iedereen zichtbaar gemaakt."; -"notice_room_history_visible_to_members" = "%@ heeft de toekomstige gespreksgeschiedenis voor alle gespreksleden zichtbaar gemaakt."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ heeft de toekomstige gespreksgeschiedenis zichtbaar gemaakt voor alle gespreksleden, vanaf het moment dat ze uitgenodigd zijn."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ heeft de toekomstige gespreksgeschiedenis zichtbaar gemaakt voor alle gespreksleden, vanaf het moment dat ze toetreden."; -"notice_crypto_unable_to_decrypt" = "** Kan niet ontsleutelen: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "De sessie van de afzender heeft ons geen sleutels voor dit bericht gestuurd."; -// room display name -"room_displayname_empty_room" = "Leeg gesprek"; -"room_displayname_two_members" = "%@ en %@"; -"room_displayname_more_than_two_members" = "%@ en %@ anderen"; -// Settings -"settings" = "Instellingen"; -"settings_enable_inapp_notifications" = "In-app-meldingen inschakelen"; -"settings_enable_push_notifications" = "Pushmeldingen inschakelen"; -"settings_enter_validation_token_for" = "Voer validatiebewijs voor %@ in:"; -"notification_settings_room_rule_title" = "Gesprek: ‘%@’"; -// Devices -"device_details_title" = "Sessie-informatie\n"; -"device_details_name" = "Publieke naam\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Laatst gezien\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "De publieke naam van een sessie is zichtbaar voor de personen waarmee u communiceert"; -"device_details_delete_prompt_title" = "Authenticatie"; -"device_details_delete_prompt_message" = "Deze handeling vereist bijkomende authenticatie.\nVoer uw wachtwoord in om verder te gaan."; -// Encryption information -"room_event_encryption_info_title" = "Informatie over eind-tot-eind-versleuteling\n\n"; -"room_event_encryption_info_event" = "Gebeurtenisinformatie\n"; -"room_event_encryption_info_event_user_id" = "Gebruikers-ID\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519-identiteitssleutel\n"; -"room_event_encryption_info_event_fingerprint_key" = "Geclaimde Ed25519-vingerafdrukssleutel\n"; -"room_event_encryption_info_event_algorithm" = "Algoritme\n"; -"room_event_encryption_info_event_session_id" = "Sessie-ID\n"; -"room_event_encryption_info_event_decryption_error" = "Ontsleutelingsfout\n"; -"room_event_encryption_info_event_unencrypted" = "onversleuteld"; -"room_event_encryption_info_event_none" = "geen"; -"room_event_encryption_info_device" = "\nInformatie over sessie van afzender\n"; -"room_event_encryption_info_device_unknown" = "onbekende sessie\n"; -"room_event_encryption_info_device_name" = "Publieke naam\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "Verificatie\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519-vingerafdruk\n"; -"room_event_encryption_info_device_verified" = "Geverifieerd"; -"room_event_encryption_info_device_not_verified" = "NIET geverifieerd"; -"room_event_encryption_info_device_blocked" = "Geblokkeerd"; -"room_event_encryption_info_verify" = "Verifiëren…"; -"room_event_encryption_info_unverify" = "Ontverifiëren"; -"room_event_encryption_info_block" = "Blokkeren"; -"room_event_encryption_info_unblock" = "Deblokkeren"; -"room_event_encryption_verify_title" = "Sessie verifiëren\n\n"; -"room_event_encryption_verify_message" = "Om te verifiëren dat deze sessie vertrouwd kan worden, neemt u contact op met de eigenaar van de sessie op een andere manier (bv. persoonlijk of door te bellen) en vraagt u hem/haar of de sleutel die hij/zij in de gebruikersinstellingen ziet overeenkomt met de onderstaande sleutel:\n\n\tSessienaam: %@\n\tSessie-ID: %@\n\tSessiesleutel: %@\n\nAls het overeenkomt, klikt u hieronder op de knop ‘Verifiëren’. Als het niet overeenkomt, onderschept iemand anders deze sessie en drukt u in plaats daarvan op de knop ‘Blokkeren’.\n\nIn de toekomst zal dit verificatieproces verbeterd worden."; -"room_event_encryption_verify_ok" = "Verifiëren"; -// Account -"account_save_changes" = "Wijzigingen opslaan"; -"account_link_email" = "E-mailadres koppelen"; -"account_linked_emails" = "Gekoppelde e-mailadressen"; -"account_email_validation_title" = "Verificatie in afwachting"; -"account_email_validation_message" = "Bekijk uw e-mail en open de koppeling erin. Wanneer dit gedaan is, tikt u op verder gaan."; -"account_email_validation_error" = "Kan het e-mailadres niet verifiëren. Bekijk uw e-mail en open de koppeling erin. Wanneer dit gedaan is, tikt u op verder gaan"; -"account_msisdn_validation_title" = "Verificatie in afwachting"; -"account_msisdn_validation_message" = "We hebben een sms met een activatiecode verstuurd. Voer deze code hieronder in."; -"account_msisdn_validation_error" = "Kan het telefoonnummer niet verifiëren."; -"account_error_display_name_change_failed" = "Wijzigen van weergavenaam is mislukt"; -"account_error_picture_change_failed" = "Wijzigen van afbeelding is mislukt"; -"account_error_matrix_session_is_not_opened" = "Matrix-sessie is niet geopend"; -"account_error_email_wrong_title" = "Ongeldig e-mailadres"; -"account_error_email_wrong_description" = "Het ziet er niet naar uit dat dit een geldig e-mailadres is"; -"account_error_msisdn_wrong_title" = "Ongeldig telefoonnummer"; -"account_error_msisdn_wrong_description" = "Het ziet er niet naar uit dat dit een geldig telefoonnummer is"; -// Room creation -"room_creation_name_title" = "Gespreksnaam:"; -"room_creation_name_placeholder" = "(bv. lunchGroep)"; -"room_creation_alias_title" = "Gespreksbijnaam:"; -"room_creation_alias_placeholder" = "(bv. #foo:voorbeeld.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(bv. #foo%@)"; -"room_creation_participants_title" = "Deelnemers:"; -"room_creation_participants_placeholder" = "(bv. @jan:thuisserver1; @joep:thuisserver2…)"; -// Room -"room_please_select" = "Selecteer een gesprek"; -"room_error_join_failed_title" = "Toetreden tot het gesprek is mislukt"; -"room_error_join_failed_empty_room" = "Het is momenteel niet mogelijk om tot een leeg gesprek toe te treden."; -"room_error_name_edition_not_authorized" = "U bent niet bevoegd om de naam van dit gesprek te wijzigen"; -"room_error_topic_edition_not_authorized" = "U bent niet bevoegd om het onderwerp van dit gesprek te wijzigen"; -"room_error_cannot_load_timeline" = "Laden van tijdslijn is mislukt"; -"room_error_timeline_event_not_found_title" = "Laden van tijdslijnpositie is mislukt"; -"room_error_timeline_event_not_found" = "De app heeft geprobeerd een specifiek punt in de tijdslijn van dit gesprek te laden, maar kon het niet vinden"; -"room_left" = "U heeft het gesprek verlaten"; -"room_no_power_to_create_conference_call" = "U heeft toestemming nodig om een vergadering in dit groepsgesprek te starten"; -"room_no_conference_call_in_encrypted_rooms" = "Vergadergesprekken worden niet ondersteund in versleutelde gesprekken"; -// Room members -"room_member_ignore_prompt" = "Weet u zeker dat u alle berichten van deze gebruiker wilt verbergen?"; -"room_member_power_level_prompt" = "U kunt deze veranderingen niet ongedaan maken aangezien u de gebruiker tot hetzelfde niveau als uzelf promoveert.\nWeet u het zeker?"; -// Attachment -"attachment_size_prompt" = "Wilt u het versturen als:"; -"attachment_original" = "Werkelijke grootte (%@)"; -"attachment_small" = "Klein (~%@)"; -"attachment_medium" = "Middel (~%@)"; -"attachment_large" = "Groot (~%@)"; -"attachment_cancel_download" = "Download annuleren?"; -"attachment_cancel_upload" = "Upload annuleren?"; -"attachment_multiselection_size_prompt" = "Wilt u afbeeldingen versturen als:"; -"attachment_multiselection_original" = "Werkelijke grootte"; -"attachment_e2e_keys_file_prompt" = "Dit bestand bevat versleutelingssleutels die uit een Matrix-client geëxporteerd zijn.\nWilt u de bestandsinhoud bekijken of de sleutels die het bevat importeren?"; -"attachment_e2e_keys_import" = "Bezig met importeren…"; -// Contacts -"contact_mx_users" = "Matrix-gebruikers"; -"contact_local_contacts" = "Lokale contacten"; -// Search -"search_no_results" = "Geen resultaten"; -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "u"; -"format_time_d" = "d"; -// E2E import -"e2e_import_room_keys" = "Gesprekssleutels importeren"; -"e2e_import_prompt" = "Dit proces maakt het mogelijk om versleutelingssleutels die u eerder had geëxporteerd vanaf een andere Matrix-cliënt te importeren. Daarna kunt u alle berichten ontsleutelen die de andere cliënt ook kon ontsleutelen.\nHet exporteerbestand is beschermd met een wachtwoord. Voer hier het wachtwoord in om het bestand te ontsleutelen."; -"e2e_import" = "Importeren"; -"e2e_passphrase_enter" = "Voer wachtwoord in"; -// E2E export -"e2e_export_room_keys" = "Gesprekssleutels exporteren"; -"e2e_export_prompt" = "Dit proces maakt het mogelijk om de sleutels voor berichten die u heeft ontvangen in versleutelde gesprekken te exporteren naar een lokaal bestand. Daarna kunt u het bestand in de toekomst in een andere Matrix-cliënt importeren, zodat die cliënt ook deze berichten zal kunnen ontsleutelen.\nHet geëxporteerde bestand zal iedereen die het kan lezen de mogelijkheid bieden om de versleutelde berichten die u kunt zien te ontsleutelen, dus wees voorzichtig en bewaar het op een veilige plaats."; -"e2e_export" = "Exporteren"; -"e2e_passphrase_confirm" = "Bevestig wachtwoord"; -"e2e_passphrase_empty" = "Wachtwoord mag niet leeg zijn"; -"e2e_passphrase_not_match" = "Wachtwoorden moeten overeenkomen"; -// Others -"user_id_title" = "Gebruikers-ID:"; -"offline" = "offline"; -"unsent" = "Niet verstuurd"; -"error" = "Fout"; -"not_supported_yet" = "Nog niet ondersteund"; -"default" = "standaard"; -"private" = "Privé"; -"public" = "Publiek"; -"power_level" = "Machtsniveau"; -"network_error_not_reachable" = "Controleer uw netwerkverbinding"; -"user_id_placeholder" = "bv: @jan:thuisserver"; -"ssl_homeserver_url" = "Thuisserver-URL: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Video-oproepen vereisen toegang tot de camera, maar %@ heeft hier geen toestemming voor"; -"microphone_access_not_granted_for_call" = "Oproepen vereisen toegang tot de camera, maar %@ heeft hier geen toestemming voor"; -"local_contacts_access_not_granted" = "Gebruikers zoeken op basis van uw lokale contacten vereist toegang tot die contacten, maar %@ heeft hier geen toestemming voor"; -"local_contacts_access_discovery_warning_title" = "Gebruikers zoeken"; -"local_contacts_access_discovery_warning" = "Om contacten te vinden die Matrix al gebruiken, kan %@ de e-mailadressen en telefoonnummers in uw adresboek naar uw gekozen Matrix-identiteitsserver sturen. Waar ondersteund worden de persoonlijke gegevens gehasht vóór het versturen - bekijk het privacybeleid van uw identiteitsserver voor meer informatie."; -// Country picker -"country_picker_title" = "Kies een land"; -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /matrix-sdk/src/main/res/values/strings.xml. -*/ - -"notice_room_invite" = "%@ heeft %@ uitgenodigd"; -"notice_room_third_party_invite" = "%@ heeft een uitnodiging gestuurd naar %@ om tot het gesprek toe te treden"; -"notice_room_third_party_registered_invite" = "%@ heeft de uitnodiging voor %@ aanvaard"; -"notice_room_join" = "%@ is tot de kamer toegetreden"; -"notice_room_leave" = "%@ heeft de kamer verlaten"; -"notice_room_reject" = "%@ heeft de uitnodiging geweigerd"; -"notice_room_kick" = "%@ heeft %@ uit de kamer gezet"; -"notice_room_unban" = "%@ heeft %@ ontbannen"; -"notice_room_ban" = "%@ heeft %@ verbannen"; -"notice_room_withdraw" = "%@ heeft de uitnodiging van %@ ingetrokken"; -"notice_room_reason" = ". Reden: %@"; -"notice_avatar_url_changed" = "%@ heeft zijn/haar avatar veranderd"; -"notice_display_name_set" = "%@ heeft zijn/haar weergavenaam veranderd naar %@"; -"notice_display_name_changed_from" = "%@ heeft zijn/haar weergavenaam veranderd van %@ naar %@"; -"notice_display_name_removed" = "%@ heeft zijn/haar weergavenaam verwijderd"; -"notice_topic_changed" = "%@ heeft het onderwerp veranderd naar \"%@\"."; -"notice_room_name_changed" = "%@ heeft de gespreksnaam veranderd naar %@."; -"notice_placed_voice_call" = "%@ heeft een spraakoproep gestart"; -"notice_placed_video_call" = "%@ heeft een video-oproep gestart"; -"notice_answered_video_call" = "%@ heeft de oproep beantwoord"; -"notice_ended_video_call" = "%@ heeft opgehangen"; -"notice_conference_call_request" = "%@ heeft een VoIP-vergadering aangevraagd"; -"notice_conference_call_started" = "VoIP-vergadering gestart"; -"notice_conference_call_finished" = "VoIP-vergadering beëindigd"; -// Room Screen - -// general errors - -// Home Screen - -// Last seen time - -// call events - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /console/src/main/res/values/strings.xml. -*/ - -// titles - -// button names -"ok" = "OK"; -"cancel" = "Annuleren"; -"save" = "Opslaan"; -"leave" = "Verlaten"; -"send" = "Versturen"; -"copy_button_name" = "Kopiëren"; -"resend" = "Opnieuw versturen"; -"redact" = "Verwijderen"; -"share" = "Delen"; -"delete" = "Verwijderen"; -"view" = "Bekijken"; -// actions -"action_logout" = "Afmelden"; -"create_room" = "Gesprek aanmaken"; -"login" = "Aanmelden"; -"create_account" = "Account aanmaken"; -"membership_invite" = "Uitgenodigd"; -"membership_leave" = "Verlaten"; -"membership_ban" = "Verbannen"; -"num_members_one" = "%@ gebruiker"; -"num_members_other" = "%@ gebruikers"; -"invite" = "Uitnodigen"; -"kick" = "Er uit zetten"; -"ban" = "Verbannen"; -"unban" = "Ontbannen"; -"message_unsaved_changes" = "Er zijn onopgeslagen wijzigingen. Verlaten zal ze verwijderen."; -// Login Screen -"login_error_already_logged_in" = "Reeds aangemeld"; -"login_error_must_start_http" = "URL moet beginnen met http[s]://"; -// members list Screen - -// accounts list Screen - -// image size selection - -// invitation members list Screen - -// room creation dialog Screen - -// room info dialog Screen - -// room details dialog screen -"room_details_title" = "Kamerdetails"; -// contacts list screen -"invitation_message" = "Ik wil graag praten via Matrix. Bezoek de website https://matrix.org voor meer informatie."; -// Settings screen -"settings_title_config" = "Configuratie"; -"settings_title_notifications" = "Meldingen"; -// Notification settings screen -"notification_settings_disable_all" = "Alle meldingen uitschakelen"; -"notification_settings_enable_notifications" = "Meldingen inschakelen"; -"notification_settings_enable_notifications_warning" = "Alle meldingen zijn momenteel voor alle apparaten uitgeschakeld."; -"notification_settings_global_info" = "Meldingsinstellingen worden op uw account opgeslagen en gedeeld met alle cliënten die dat ondersteunen (inclusief bureaubladmeldingen).\n\nRegels worden in volgorde toegepast; de eerste regel die overeenkomt bepaalt de uitkomst van een bericht.\nDus: per-woord-meldingen zijn belangrijker dan per-gespreks-meldingen, die op hun beurt weer belangrijker zijn dan per-afzender-meldingen.\nVoor meerdere regels van hetzelfde type geldt dat de eerste in de lijst die overeenkomt de prioriteit heeft."; -"notification_settings_per_word_notifications" = "Per-woord-meldingen"; -"notification_settings_per_word_info" = "Woorden komen niet hoofdlettergevoelig met elkaar overeen en kunnen een *-wildcard bevatten. Dus:\nfoo komt overeen met de tekenreeks ‘foo’, die omgeven wordt door woordscheidingstekens (zoals punctuatie en spaties, of het begin of einde van een regel).\nfoo* komt overeen met elk woord dat met ‘foo’ begint.\n*foo* komt overeen met elk woord dat de drie letters ‘foo’ bevat."; -"notification_settings_always_notify" = "Altijd melden"; -"notification_settings_never_notify" = "Nooit melden"; -"notification_settings_word_to_match" = "woord om mee overeen te komen"; -"notification_settings_highlight" = "Markeren"; -"notification_settings_custom_sound" = "Aangepast geluid"; -"notification_settings_per_room_notifications" = "Per-gespreks-meldingen"; -"notification_settings_per_sender_notifications" = "Per-afzender-meldingen"; -"notification_settings_sender_hint" = "@gebruiker:domein.com"; -"notification_settings_select_room" = "Selecteer een gesprek"; -"notification_settings_other_alerts" = "Andere meldingen"; -"notification_settings_contain_my_user_name" = "Meld mij met geluid over berichten die mijn gebruikersnaam bevatten"; -"notification_settings_contain_my_display_name" = "Meld mij met geluid over berichten die mijn weergavenaam bevatten"; -"notification_settings_just_sent_to_me" = "Meld mij met geluid over berichten die alleen naar mij gestuurd zijn"; -"notification_settings_invite_to_a_new_room" = "Meld mij wanneer ik in een nieuw gesprek uitgenodigd word"; -"notification_settings_people_join_leave_rooms" = "Meld mij wanneer mensen het gesprek verlaten of betreden"; -"notification_settings_receive_a_call" = "Meld mij wanneer ik een oproep ontvang"; -"notification_settings_suppress_from_bots" = "Meldingen van robots onderdrukken"; -"notification_settings_by_default" = "Standaard…"; -"notification_settings_notify_all_other" = "Melden voor alle andere berichten/gesprekken"; -// gcm section -"settings_config_home_server" = "Thuisserver: %@"; -"settings_config_identity_server" = "Identiteitsserver: %@"; -"settings_config_user_id" = "Gebruikers-ID: %@"; -// Settings keys - -// call string -"call_waiting" = "In afwachting…"; -"call_connecting" = "Verbinden…"; -"call_ended" = "Oproep beëindigd"; -"call_ring" = "Bellen…"; -"incoming_video_call" = "Inkomende video-oproep"; -"incoming_voice_call" = "Inkomende spraakoproep"; -"call_invite_expired" = "Oproepuitnodiging verlopen"; -// unrecognized SSL certificate -"ssl_trust" = "Vertrouwen"; -"ssl_logout_account" = "Afmelden"; -"ssl_remain_offline" = "Negeren"; -"ssl_fingerprint_hash" = "Vingerafdruk (%@):"; -"ssl_could_not_verify" = "Kan de identiteit van de externe server niet bepalen."; -"ssl_cert_not_trust" = "Dit kan betekenen dat iemand kwaadwillig uw verkeer onderschept, of dat uw telefoon het certificaat dat door de externe server wordt geleverd niet vertrouwt."; -"ssl_cert_new_account_expl" = "Als de serverbeheerder heeft gezegd dat dit de bedoeling is, wees er dan zeker van dat de vingerafdruk hieronder overeenkomt met de vingerafdruk die door hen wordt geleverd."; -"ssl_unexpected_existing_expl" = "Het certificaat is veranderd van één dat door uw telefoon werd vertrouwd naar een ander. Dit is HEEL ONGEBRUIKELIJK. Het wordt aangeraden om dit nieuwe certificaat NIET TE AANVAARDEN."; -"ssl_expected_existing_expl" = "Het certificaat is veranderd van een vertrouwd naar een onvertrouwd certificaat. De server heeft misschien zijn certificaat vernieuwd. Contacteer de serverbeheerder voor de verwachte vingerafdruk."; -"ssl_only_accept" = "Aanvaard het certificaat alleen als de serverbeheerder een vingerafdruk heeft gepubliceerd die overeenkomt met degene hierboven."; -"search_searching" = "Bezig met zoeken…"; -// Language picker -"language_picker_title" = "Kies een taal"; -"language_picker_default_language" = "Standaard (%@)"; -"login_mobile_device" = "Mobiel"; -"login_tablet_device" = "Tablet"; -"login_desktop_device" = "Desktop"; -"notice_room_related_groups" = "De groepen die geassocieerd zijn met dit gesprek zijn: %@"; -// Groups -"group_invite_section" = "Uitnodigingen"; -"group_section" = "Groepen"; -"notice_sticker" = "sticker"; -"notice_in_reply_to" = "In antwoord op"; -"error_common_message" = "Er is een fout opgetreden. Probeer het later opnieuw."; -"login_error_resource_limit_exceeded_title" = "Bronlimiet Overschreden"; -"login_error_resource_limit_exceeded_message_default" = "Deze thuisserver heeft één of meerdere van zijn bronlimieten overschreden."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Deze thuisserver heeft zijn limiet voor maandelijks actieve gebruikers bereikt."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nGelieve contact op te nemen met uw dienstbeheerder om deze dienst te blijven gebruiken."; -"login_error_resource_limit_exceeded_contact_button" = "Beheerder contacteren"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "heeft een afbeelding gestuurd."; -"message_reply_to_sender_sent_a_video" = "heeft een video gestuurd."; -"message_reply_to_sender_sent_an_audio_file" = "heeft een audiobestand gestuurd."; -"message_reply_to_sender_sent_a_file" = "heeft een bestand gestuurd."; -"message_reply_to_message_to_reply_to_prefix" = "In antwoord op"; -"e2e_passphrase_create" = "Wachtwoord aanmaken"; -"account_error_push_not_allowed" = "Meldingen niet toegestaan"; -"notice_room_third_party_revoked_invite" = "%@ heeft de uitnodiging voor %@ om tot het gesprek toe te treden ingetrokken"; -"device_details_rename_prompt_title" = "Sessienaam"; -"notice_encryption_enabled_ok" = "%@ heeft eind-tot-eind-versleuteling ingeschakeld."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ heeft eind-tot-eind-versleuteling ingeschakeld (onbekend algoritme %2$@)."; -"notice_room_name_removed_for_dm" = "%@ heeft de naam verwijderd"; -"notice_room_ban_by_you" = "U heeft %@ verbannen"; -"notice_room_unban_by_you" = "U heeft %@ ontbannen"; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "U heeft toekomstige berichten voor iedereen zichtbaar gemaakt vanaf het moment dat zij deelnemen aan het gesprek."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "U heeft de toekomstige gespreksgeschiedenis zichtbaar gemaakt voor alle gespreksleden, vanaf het moment dat ze toegetreden zijn."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "U heeft toekomstige berichten voor iedereen zichtbaar gemaakt vanaf het moment dat zij zijn uitgenodigd."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "U heeft de toekomstige gespreksgeschiedenis zichtbaar gemaakt voor alle gespreksleden, vanaf het moment dat ze uitgenodigd zijn."; -"notice_room_history_visible_to_members_by_you_for_dm" = "U heeft toekomstige berichten voor alle gespreksleden zichtbaar gemaakt."; -"notice_room_history_visible_to_members_by_you" = "U heeft de toekomstige gespreksgeschiedenis voor alle gespreksleden zichtbaar gemaakt."; -"notice_room_history_visible_to_anyone_by_you" = "U heeft de toekomstige gespreksgeschiedenis voor iedereen zichtbaar gemaakt."; -"notice_redaction_by_you" = "U heeft een gebeurtenis bewerkt (ID: %@)"; -"notice_encryption_enabled_unknown_algorithm_by_you" = "U heeft eind-tot-eind-versleuteling ingeschakeld (onbekend algoritme %@)."; -"notice_encryption_enabled_ok_by_you" = "U heeft eind-tot-eind-versleuteling ingeschakeld."; -"notice_room_created_by_you_for_dm" = "U bent toegetreden."; -"notice_room_created_by_you" = "U heeft de kamer aangemaakt en ingesteld."; -"notice_profile_change_redacted_by_you" = "U heeft uw profiel %@ bijgewerkt"; -"notice_event_redacted_by_you" = " door u"; -"notice_room_topic_removed_by_you" = "U heeft het onderwerp verwijderd"; -"notice_room_name_removed_by_you_for_dm" = "U heeft de naam verwijderd"; -"notice_room_name_removed_by_you" = "U heeft de gespreksnaam verwijderd"; -"notice_conference_call_request_by_you" = "U heeft een VoIP-vergadering aangevraagd"; -"notice_ended_video_call_by_you" = "U heeft opgehangen"; -"notice_answered_video_call_by_you" = "U heeft de oproep beantwoord"; -"notice_placed_video_call_by_you" = "U heeft een spraakoproep gestart"; -"notice_placed_voice_call_by_you" = "U heeft een spraakoproep gestart"; -"notice_room_name_changed_by_you_for_dm" = "U heeft de gespreksnaam veranderd naar %@."; -"notice_room_name_changed_by_you" = "U heeft de gespreksnaam veranderd naar %@."; -"notice_topic_changed_by_you" = "U heeft het onderwerp veranderd naar \"%@\"."; -"notice_display_name_removed_by_you" = "U heeft uw weergavenaam verwijderd"; -"notice_display_name_changed_from_by_you" = "U heeft uw weergavenaam veranderd van %@ naar %@"; -"notice_display_name_set_by_you" = "U heeft uw weergavenaam veranderd naar %@"; -"notice_avatar_url_changed_by_you" = "U heeft uw profielfoto veranderd"; -"notice_room_withdraw_by_you" = "U heeft %@'s uitnodiging teruggetrokken"; -"notice_room_kick_by_you" = "U heeft %@ verwijderd uit het gesprek"; -"notice_room_reject_by_you" = "U heeft de uitnodiging geweigerd"; -"notice_room_leave_by_you" = "U heeft het gesprek verlaten"; -"notice_room_join_by_you" = "U bent toegetreden"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "U heeft %@'s uitnodiging ingetrokken"; -"notice_room_third_party_revoked_invite_by_you" = "U heeft de uitnodiging aan %@ om aan het gesprek deel te nemen ingetrokken"; -"notice_room_third_party_registered_invite_by_you" = "U heeft de uitnodiging van %@ aanvaard"; -"notice_room_third_party_invite_by_you_for_dm" = "U heeft %@ uitgenodigd"; -"notice_room_third_party_invite_by_you" = "U heeft %@ uitgenodigd om aan het gesprek deel te nemen"; -"notice_room_invite_you" = "%@ heeft u uitgenodigd"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "U heeft %@ uitgenodigd"; -"notice_room_name_changed_for_dm" = "%@ heeft de gespreksnaam veranderd naar %@."; -"notice_room_third_party_revoked_invite_for_dm" = "%@ heeft %@'s uitnodiging ingetrokken"; -"notice_room_third_party_invite_for_dm" = "%@ heeft %@ uitgenodigd"; -"room_left_for_dm" = "U heeft het gesprek verlaten"; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ heeft toekomstige berichten voor iedereen zichtbaar gemaakt vanaf het moment dat zij deelnemen aan het gesprek."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ heeft toekomstige berichten voor iedereen zichtbaar gemaakt vanaf het moment dat zij zijn uitgenodigd."; -"notice_room_history_visible_to_members_for_dm" = "%@ heeft toekomstige berichten voor alle gespreksleden zichtbaar gemaakt."; -"notice_room_aliases_for_dm" = "De bijnamen zijn: %@"; -"notice_room_join_rule_public_by_you_for_dm" = "U maakte dit publiekelijk."; -"notice_room_join_rule_public_by_you" = "U heeft de kamer publiekelijk gemaakt."; -"notice_room_join_rule_public_for_dm" = "%@ maakte dit publiekelijk."; -"notice_room_join_rule_public" = "%@ heeft de kamer publiekelijk gemaakt."; -"notice_room_created_for_dm" = "%@ is toegetreden."; -"notice_room_power_level_intro_for_dm" = "Het machtsniveau van de gespreksleden is:"; -"notice_room_join_rule_invite_by_you_for_dm" = "U maakte dit gesprek alleen op uitnodiging."; -"notice_room_join_rule_invite_by_you" = "U heeft het toegangsbeleid gewijzigd naar alleen genodigden."; -// New -"notice_room_join_rule_invite" = "%@ heeft het toegangsbeleid gewijzigd naar alleen genodigden."; -"notice_room_join_rule_invite_for_dm" = "%@ heeft dit gesprek alleen op uitnodiging gemaakt."; -"call_more_actions_dialpad" = "Kiestoetsen"; -"call_more_actions_transfer" = "Doorschakelen"; -"call_more_actions_audio_use_device" = "Ingebouwde Luidspreker"; -"call_more_actions_audio_use_headset" = "Audio-koptelefoon gebruiken"; -"call_more_actions_change_audio_device" = "Audio-apparaat wisselen"; -"call_more_actions_unhold" = "Hervatten"; -"call_more_actions_hold" = "Vasthouden"; -"call_holded" = "U heeft de oproep in de wacht"; -"call_remote_holded" = "%@ heeft de oproep in de wacht"; -"notice_declined_video_call_by_you" = "U heeft de oproep afgewezen"; -"notice_declined_video_call" = "%@ heeft de oproep afgewezen"; -"resume_call" = "Hervatten"; -"call_consulting_with_user" = "In de wacht bij %@"; -"call_transfer_to_user" = "Doorverbinden met %@"; -"call_video_with_user" = "Video-oproep met %@"; -"call_voice_with_user" = "Spraakoproep met %@"; -"call_ringing" = "Bellen…"; -"e2e_passphrase_too_short" = "Wachtwoord is te kort (hij moet minimaal %d tekens lang zijn)"; -"microphone_access_not_granted_for_voice_message" = "Spraakberichten vereisen toegang tot de Microfoon maar %@ heeft geen toestemming om het te gebruiken"; -"message_reply_to_sender_sent_a_voice_message" = "heeft een spraakbericht gestuurd."; -"attachment_large_with_resolution" = "Groot %@ (~%@)"; -"attachment_medium_with_resolution" = "Middel %@ (~%@)"; -"attachment_small_with_resolution" = "Klein %@ (~%@)"; -"attachment_size_prompt_message" = "U kunt dit uitzetten in uw instellingen."; -"attachment_size_prompt_title" = "Bevestig de afmeting om te versturen"; -"room_displayname_all_other_participants_left" = "%@ (vertrok)"; -"auth_reset_password_error_not_found" = "Niet gevonden"; -"auth_reset_password_error_unauthorized" = "Niet toegestaan"; -"auth_invalid_user_name" = "Ongeldige inlognaam"; -"attachment_unsupported_preview_message" = "Dit bestandstype wordt niet ondersteund."; -"attachment_unsupported_preview_title" = "Kan geen voorbeeld geven"; -"room_displayname_all_other_members_left" = "%@ (Vertrok)"; -"auth_username_in_use" = "Inlognaam al in gebruik"; -"rename" = "Hernoemen"; -"message_reply_to_sender_sent_their_location" = "deelde hun locatie."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/pl.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/pl.lproj/MatrixKit.strings deleted file mode 100644 index 1f9c919dd..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/pl.lproj/MatrixKit.strings +++ /dev/null @@ -1,507 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Stwórz konto:"; -"login_server_url_placeholder" = "URL (np. https://matrix.org)"; -"login_identity_server_title" = "URL serwera tożsamości:"; -"login_password_placeholder" = "Hasło"; -"login_optional_field" = "opcjonalne"; -"login_email_placeholder" = "Adres e-mail"; -"login_error_forbidden" = "Nieprawidłowa nazwa użytkownika/hasło"; -"login_error_unknown_token" = "Wprowadzony token dostępu nie został rozpoznany"; -"login_error_bad_json" = "Uszkodzony JSON"; -"login_error_not_json" = "Nie zawiera prawidłowego JSON"; -"login_error_limit_exceeded" = "Wysłano zbyt wiele żądań"; -"login_error_user_in_use" = "Ta nazwa użytkownika jest już używana"; -"login_error_login_email_not_yet" = "Nie kliknięto odnośnika z wiadomości e-mail"; -"login_leave_fallback" = "Anuluj"; -"login_error_resource_limit_exceeded_title" = "Przekroczono limit dostępu do zasobów"; -"login_error_resource_limit_exceeded_message_default" = "Ten serwer przekroczył jeden z limitów dostępu do zasobów."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Ten serwer osiągnął miesięczny limit aktywnych użytkowników."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nSkontaktuj się z administratorem Twojego serwera domowego, aby korzystać dalej z tej usługi."; -"login_error_resource_limit_exceeded_contact_button" = "Skontaktuj się z administratorem"; -// Action -"no" = "Nie"; -"yes" = "Tak"; -"back" = "Powrót"; -"close" = "Zamknij"; -"continue" = "Kontynuuj"; -"dismiss" = "Zamknij"; -"retry" = "Ponów"; -"submit" = "Wyślij"; -"login_home_server_title" = "URL serwera domowego:"; -"login_display_name_placeholder" = "Wyświetlana nazwa (np. Bob Obson)"; -"login_invalid_param" = "Nieprawidłowy parametr"; -"login_tablet_device" = "Tablet"; -"discard" = "Odrzuć"; -"start_chat" = "Rozpocznij rozmowę"; -"start_voice_call" = "Rozpocznij połączenie głosowe"; -"start_video_call" = "Rozpocznij połączenie wideo"; -"mention" = "Wspomnij"; -"capture_media" = "Zrób zdjęcie/film"; -"resend_message" = "Wyślij ponownie wiadomość"; -"select_all" = "Zaznacz wszystko"; -"cancel_upload" = "Anuluj wysyłanie"; -"cancel_download" = "Anuluj pobieranie"; -"ignore" = "Ignoruj"; -"unignore" = "Przestań ignorować"; -// Events formatter -"notice_avatar_changed_too" = "(awatar też został zmieniony)"; -"notice_room_name_removed" = "%@ usunął(-ęła) nazwę pokoju"; -"notice_room_topic_removed" = "%@ usunął(-ęła) temat pokoju"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " przez %@"; -"notice_event_redacted_reason" = " [powód: %@]"; -"notice_profile_change_redacted" = "%@ zaktualizował(-a) swój profil %@"; -"notice_encrypted_message" = "Wiadomość zaszyfrowana"; -"notice_encryption_enabled" = "%@ włączył(a) szyfrowanie end-to-end (algorytm %@)"; -"ssl_only_accept" = "Akceptuj certyfikat TYLKO wtedy gdy administrator opublikował odcisk palca pasujący do tego powyżej."; -"ssl_unexpected_existing_expl" = "Certyfikat zmienił stan z zaufanego na niezaufany. Jest to NIEZWYKLE RZADKIE. Zalecane jest NIE AKCEPTOWANIE nowego certyfikatu."; -"ssl_cert_not_trust" = "Może to oznaczać że ktoś zakłóca twoje połączenie, lub Twój telefon nie ufa certyfikatowi dostarczonemu przez zdalny serwer."; -"ssl_could_not_verify" = "Nie można zweryfikować tożsamości serwera."; -"ssl_fingerprint_hash" = "Fingerprint (%@):"; -"ssl_remain_offline" = "Ignoruj"; -"ssl_logout_account" = "Wyloguj"; -// unrecognized SSL certificate -"ssl_trust" = "Ufaj"; -"incoming_voice_call" = "Przychodzące połączenie głosowe"; -"incoming_video_call" = "Przychodzące połączenie wideo"; -"call_ring" = "Dzwonię…"; -"call_ended" = "Zakończono połączenie"; -"call_connecting" = "Łączenie…"; -"settings_config_user_id" = "ID użytkownika: %@"; -"settings_config_identity_server" = "Serwer tożsamości: %@"; -// gcm section -"settings_config_home_server" = "Serwer Domowy: %@"; -"notification_settings_notify_all_other" = "Powiadamiaj o wszystkich innych wiadomośsciach/pokojach"; -"notification_settings_select_room" = "Wybierz pokój"; -"notification_settings_sender_hint" = "@user:domain.com"; -"notification_settings_enable_notifications" = "Włącz powiadomienia"; -// Notification settings screen -"notification_settings_disable_all" = "Wyłącz wszystkie powiadomienia"; -"settings_title_notifications" = "Powiadomienia"; -// room details dialog screen -"room_details_title" = "Szczegóły pokoju"; -"login_error_must_start_http" = "URL musi zaczynać się od http[s]://"; -"select_account" = "Wybierz konto"; -"show_details" = "Pokaż szczegóły"; -"end_call" = "Zakończ rozmowę"; -"login_error_title" = "Logowanie nie powiodło się"; -"login_error_registration_is_not_supported" = "Rejestracja nie jest obecnie wspierana"; -"register_error_title" = "Rejestracja nie powiodła się"; -"abort" = "Przerwij"; -"sign_up" = "Zarejestruj się"; -"submit_code" = "Prześlij kod"; -"attach_media" = "Dołącz zawartość multimedialną z Biblioteki"; -"reset_to_default" = "Przywróć ustawienia domyślne"; -"notice_room_created" = "%@ stworzył(-a) i skonfigurował (-a) pokój."; -"notice_audio_attachment" = "załącznik (audio)"; -"notice_video_attachment" = "załącznik (wideo)"; -"notice_invalid_attachment" = "nieprawidłowy załącznik"; -"notice_unsupported_attachment" = "Niewspierany załącznik: %@"; -"notice_room_history_visible_to_members" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju, od momentu ich zaproszenia."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju, od momentu ich dołączenia."; -"notice_crypto_error_unknown_inbound_session_id" = "Sesja nadawcy nie wysłała kluczy do wiadomości dla bieżącej sesji."; -"notice_sticker" = "naklejka"; -"notice_in_reply_to" = "W odpowiedzi do"; -// room display name -"room_displayname_empty_room" = "Pusty pokój"; -"room_displayname_two_members" = "%@ i %@"; -"room_displayname_more_than_two_members" = "%@ i %@ innych"; -// Settings -"settings" = "Ustawienia"; -"notification_settings_room_rule_title" = "Pokój: '%@'"; -// Devices -"device_details_title" = "Informacje o sesji\n"; -"device_details_name" = "Publiczna nazwa\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Ostatnio widziany(-a)\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "Publiczna nazwa sesji jest widoczna dla osób z którymi się komunikujesz"; -"device_details_delete_prompt_title" = "Uwierzytelnienie"; -"device_details_delete_prompt_message" = "To działanie wymaga dodatkowego uwierzytelnienia.\nWprowadź hasło, aby kontynuować."; -// Encryption information -"room_event_encryption_info_title" = "Informacje o szyfrowaniu end-to-end\n\n"; -"room_event_encryption_info_event" = "Informacje o zdarzeniu\n"; -"room_event_encryption_info_event_user_id" = "ID użytkownika\n"; -"room_event_encryption_info_event_identity_key" = "Klucz tożsamości Curve25519\n"; -"room_event_encryption_info_event_algorithm" = "Algorytm\n"; -"room_event_encryption_info_event_decryption_error" = "Błąd deszyfrowania\n"; -"room_event_encryption_info_device" = "\nInformacje o sesji nadawcy\n"; -"room_event_encryption_info_device_unknown" = "nieznana sesja\n"; -"room_event_encryption_info_device_name" = "Publiczna nazwa\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"notification_settings_never_notify" = "Nigdy nie powiadamiaj"; -"notification_settings_always_notify" = "Zawsze powiadamiaj"; -// Settings screen -"settings_title_config" = "Konfiguracja"; -"ban" = "Zbanuj"; -"unban" = "Odbanuj"; -"kick" = "Wyproś"; -"invite" = "Zaproś"; -"num_members_other" = "%@ użytkowników"; -"num_members_one" = "%@ użytkownik"; -"create_account" = "Stwórz konto"; -"create_room" = "Utwórz pokój"; -// actions -"action_logout" = "Wyloguj"; -"view" = "Podgląd"; -"delete" = "Usuń"; -"set_power_level" = "Ustaw poziom uprawnień"; -"share" = "Udostępnij"; -"redact" = "Usuń"; -"resend" = "Wyślij ponownie"; -"copy_button_name" = "Kopiuj"; -"send" = "Wyślij"; -"leave" = "Opuść"; -"save" = "Zapisz"; -"cancel" = "Anuluj"; -// button names -"ok" = "OK"; -"notice_conference_call_finished" = "Zakończono konferencję VoIP"; -"notice_conference_call_started" = "Rozpoczęto konferencję VoIP"; -"notice_conference_call_request" = "%@ zaprasza do konferencji VoIP"; -"set_default_power_level" = "Resetuj poziom uprawnień"; -"notice_file_attachment" = "załącznik (plik)"; -"notice_room_history_visible_to_anyone" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla każdego."; -"notice_crypto_unable_to_decrypt" = "** Nie można odszyfrować: %@ **"; -"ssl_cert_new_account_expl" = "Jeśli administrator serwera oświadczył, że jest to oczekiwane, upewnij się, że poniższy odcisk palca odpowiada odciskowi palca dostarczonemu przez niego."; -"notification_settings_by_default" = "Domyślnie…"; -"notification_settings_suppress_from_bots" = "Ogranicz powiadomienia od botów"; -"notification_settings_custom_sound" = "Dźwięk niestandardowy"; -"login_home_server_info" = "Twój serwer domowy przechowuje wszystkie Twoje rozmowy i dane konta"; -"login_user_id_placeholder" = "Identyfikator Matrix (np. @bob:matrix.org lub bob)"; -"search_searching" = "Wyszukiwanie..."; - -// Search -"search_no_results" = "Brak wyników"; -"group_section" = "Grupy"; - -// Groups -"group_invite_section" = "Zaproszenia"; -"attachment_e2e_keys_import" = "Importuj..."; -"attachment_multiselection_original" = "Rzeczywisty rozmiar"; -"attachment_multiselection_size_prompt" = "Czy chcesz wysłać obrazy jako:"; -"attachment_cancel_upload" = "Przerwać wgrywanie?"; -"attachment_cancel_download" = "Przerwać pobieranie?"; -"membership_ban" = "Zbanowany(-a)"; -"login_desktop_device" = "Komputer"; -"login_mobile_device" = "Smartphone"; -"login_error_forgot_password_is_not_supported" = "Przywracanie hasła nie jest obecnie obsługiwane"; -"login_prompt_email_token" = "Wprowadź token weryfikacyjny wysłany na e-mail:"; -"room_event_encryption_info_event_session_id" = "ID sesji\n"; -"room_event_encryption_info_event_fingerprint_key" = "Odebrany klucz Ed25519 fingerprint\n"; -"device_details_rename_prompt_title" = "Nazwa sesji"; -"settings_enter_validation_token_for" = "Wprowadź token weryfikacyjny dla %@:"; -"settings_enable_push_notifications" = "Włącz powiadomienia push"; -"settings_enable_inapp_notifications" = "Włącz powiadomienia aplikacyjne"; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju, od momentu ich dołączenia."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju, od momentu ich zaproszenia."; -"notice_room_history_visible_to_members_for_dm" = "%@ uczynił(-a) przyszłą historię pokoju widoczną dla wszystkich uczestników pokoju."; -"notice_error_unknown_event_type" = "Nieznany typ zdarzenia"; -"notice_error_unexpected_event" = "Niespodziewane zdarzenie"; -"notice_error_unsupported_event" = "Nieobsługiwane zdarzenie"; -"notice_redaction" = "%@ zredagował(-a) zdarzenie (id: %@)"; -"notice_feedback" = "Opis zdarzenia (id: %@): %@"; -"notice_location_attachment" = "załącznik (lokalizacja)"; -"notice_image_attachment" = "załącznik (obraz)"; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ włączył(-a) szyfrowanie end-to-end (nierozpoznany algorytm %2$@)."; -"notice_encryption_enabled_ok" = "%@ włączył(-a) szyfrowanie end-to-end."; -"notice_room_related_groups" = "Społeczności powiązane z tym pokojem: %@"; -"notice_room_aliases_for_dm" = "Aliasy pokoju: %@"; -"notice_room_aliases" = "Aliasy pokoju: %@"; -"notice_room_power_level_event_requirement" = "Minimalny poziom uprawnień związany ze zdarzeniami:"; -"notice_room_power_level_acting_requirement" = "Minimalny poziom uprawnień uczestnika pokoju, aby mógł podjąć działania:"; -"notice_room_power_level_intro_for_dm" = "Poziom uprawnień uczestników pokoju:"; -"notice_room_power_level_intro" = "Poziom uprawnień uczestników pokoju:"; -"notice_room_join_rule_public_by_you_for_dm" = "Ustawiłeś(-aś) widoczność tego pokoju jako 'pokój publiczny'."; -"notice_room_join_rule_public_by_you" = "Ustawiłeś(-aś) widoczność tego pokoju jako 'pokój publiczny'."; -"notice_room_join_rule_public_for_dm" = "%@ ustawił(-a) widoczność tego pokoju jako 'pokój publiczny'."; -"notice_room_join_rule_public" = "%@ ustawił(-a) widoczność tego pokoju jako 'pokój publiczny'."; -"notice_room_join_rule_invite_by_you_for_dm" = "Ustawiłeś(-aś) dostępność tego pokoju na 'Tylko osoby, które zostały zaproszone'."; -"notice_room_join_rule_invite_by_you" = "Ustawiłeś(-aś) dostępność tego pokoju na 'Tylko osoby, które zostały zaproszone'."; -"notice_room_join_rule_invite_for_dm" = "%@ ustawił(-a) dostępność tego pokoju na 'Tylko osoby, które zostały zaproszone'."; -// New -"notice_room_join_rule_invite" = "%@ ustawił(-a) dostępność tego pokoju na 'Tylko osoby, które zostały zaproszone'."; -// Old -"notice_room_join_rule" = "Reguła dołączenia to: %@"; -"notice_room_created_for_dm" = "%@ stworzył(-a) pokój."; -"notice_room_name_removed_for_dm" = "%@ usunął(-ęła) nazwę pokoju"; -"resume_call" = "Wznów"; -"reject_call" = "Odrzuć połączenie"; -"answer_call" = "Odbierz połączenie"; -"invite_user" = "Zaproś użytkownika Matrix"; -"set_admin" = "Nadaj uprawnienia Administratora"; -"set_moderator" = "Nadaj uprawnienia Moderatora"; -"login_use_fallback" = "Użyj strony zastępczej"; -"login_error_do_not_support_login_flows" = "Obecnie nie obsługujemy żadnego lub wszystkich przepływów logowania zdefiniowanych przez ten Serwer Domowy"; -"login_error_no_login_flow" = "Nie udało się pobrać informacji uwierzytelniających z tego serwera domowego"; -"login_email_info" = "Podanie adresu e-mail pozwala innym użytkownikom na znalezienie Ciebie w sieci Matrix oraz pozwala na zresetowanie hasła."; -"login_identity_server_info" = "Matrix zapewnia serwery tożsamości do śledzenia, które e-maile itp. Należą do których identyfikatorów Matrix. Obecnie istnieje tylko https://matrix.org."; -"ssl_expected_existing_expl" = "Certyfikat zmienił się z wcześniej zaufanego na taki, który nie jest zaufany. Serwer mógł odnowić swój certyfikat. Skontaktuj się z administratorem serwera, aby uzyskać oczekiwany odcisk palca."; -"call_transfer_to_user" = "Transfer do %@"; -"call_consulting_with_user" = "Konsultacje z %@"; -"call_video_with_user" = "Połączenie wideo z %@"; -"call_voice_with_user" = "Połączenie głosowe z %@"; -"call_more_actions_dialpad" = "Klawiatura numeryczna"; -"call_more_actions_transfer" = "Transferuj"; -"call_more_actions_audio_use_device" = "Wyjście audio"; -"call_more_actions_audio_use_headset" = "Użyj zestawu głosowego"; -"call_more_actions_change_audio_device" = "Zmień urządzenie dźwiękowe"; -"call_more_actions_unhold" = "Wznów"; -"call_more_actions_hold" = "Wstrzymaj"; -"call_holded" = "Wstrzymałeś połączenie"; -"call_remote_holded" = "%@ wstrzymał(-a) połączenie"; -"call_invite_expired" = "Zaproszenie do rozmowy wygasło"; -"call_ringing" = "Dzwonię…"; -"notification_settings_receive_a_call" = "Powiadom mnie, gdy ktoś do mnie dzwoni"; -"notification_settings_people_join_leave_rooms" = "Powiadamiaj mnie, gdy ktoś dołącza do pokoju lub go opuszcza"; -"notification_settings_invite_to_a_new_room" = "Powiadamiaj mnie, gdy jestem zaproszony do nowego pokoju"; -"notification_settings_just_sent_to_me" = "Powiadamiaj mnie dźwiękiem o wiadomościach wysłanych tylko do mnie"; -"notification_settings_contain_my_display_name" = "Powiadamiaj mnie dźwiękiem o wiadomościach zawierających moją nazwę wyświetlaną"; -"notification_settings_contain_my_user_name" = "Powiadamiaj mnie dźwiękiem o wiadomościach zawierających moją nazwę użytkownika"; -"notification_settings_other_alerts" = "Inne Alarmy"; -"notification_settings_per_sender_notifications" = "Powiadomienia per-nadawca"; -"notification_settings_per_room_notifications" = "Powiadomienia per-pokój"; -"notification_settings_highlight" = "Wyróżnienie"; -"notification_settings_word_to_match" = "słowo do dopasowania"; -"notification_settings_per_word_info" = "Słowa dopasowują wielkość liter bez uwzględniania wielkości liter i mogą zawierać * symbol wieloznaczny. Więc:\nfoo dopasowuje ciąg foo otoczony ogranicznikami słów (np. interpunkcja i białe spacje lub początek / koniec linii).\nfoo* odpowiada każdemu słowu zaczynającemu się foo.\n*foo* pasuje do każdego takiego słowa, które zawiera 3 litery foo."; -"notification_settings_per_word_notifications" = "Powiadomienia według słów"; -"notification_settings_global_info" = "Ustawienia powiadomień są zapisywane na koncie użytkownika i są udostępniane wszystkim klientom, które je obsługują.\n\nReguły powiadomień są stosowane w kolejności; pierwsza pasująca reguła określa wynik wiadomości.\nTak więc: powiadomienia według słów są ważniejsze niż powiadomienia dotyczące pokoju, które są ważniejsze niż powiadomienia według nadawcy.\nW przypadku wielu reguł tego samego typu pierwszeństwo ma pierwsza na liście pasująca reguła."; -"notification_settings_enable_notifications_warning" = "Wszystkie powiadomienia są obecnie wyłączone dla wszystkich urządzeń."; - -// contacts list screen -"invitation_message" = "Chciałbym z Tobą porozmawiać za pomocą sieci Matrix. Odwiedź witrynę http://matrix.org, aby uzyskać więcej informacji."; - -// Login Screen -"login_error_already_logged_in" = "Jesteś już zalogowany(-a)"; -"message_unsaved_changes" = "Istnieją niezapisane zmiany. Opuszczenie spowoduje ich odrzucenie."; -"membership_leave" = "Odszedł(-a)"; -"membership_invite" = "Zaproszony(-a)"; -"login" = "Zaloguj się"; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne tylko dla uczestników pokoju od momentu, gdy dołączyli."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne tylko dla uczestników pokoju od momentu, gdy dołączyli."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne dla wszystkich uczestników pokoju od momentu, gdy zostali zaproszeni."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne dla wszystkich uczestników pokoju od momentu, gdy zostali zaproszeni."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne dla wszystkich uczestników pokoju."; -"notice_room_history_visible_to_members_by_you" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne dla wszystkich uczestników pokoju."; -"notice_room_history_visible_to_anyone_by_you" = "Sprawiłeś(-aś), że przyszłe wiadomości będą widoczne dla każdego."; -"notice_redaction_by_you" = "Zredagowałeś(-aś) zdarzenie (id: %@)"; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Włączyłeś(-aś) szyfrowanie end-to-end (nierozpoznany algorytm %@)."; -"notice_encryption_enabled_ok_by_you" = "Włączyłeś(-aś) szyfrowanie end-to-end."; -"notice_room_created_by_you_for_dm" = "Utworzyłeś(-aś) i skonfigurowałeś(-aś) pokój."; -"notice_room_created_by_you" = "Utworzyłeś(-aś) i skonfigurowałeś(-aś) pokój."; -"notice_profile_change_redacted_by_you" = "Zaktualizowałeś(-aś) swój profil %@"; -"notice_event_redacted_by_you" = " przez Ciebie"; -"notice_room_topic_removed_by_you" = "Usunąłeś(-aś) temat"; -"notice_room_name_removed_by_you_for_dm" = "Usunąłeś(-aś) nazwę pokoju"; -"notice_room_name_removed_by_you" = "Usunąłeś(-aś) nazwę pokoju"; -"notice_conference_call_request_by_you" = "Poprosiłeś(-aś) o konferencję VoIP"; -"notice_declined_video_call_by_you" = "Odrzuciłeś(-aś) połączenie"; -"notice_ended_video_call_by_you" = "Zakończyłeś(-aś) połączenie"; -"notice_answered_video_call_by_you" = "Odebrałeś(-aś) połączenie"; -"notice_placed_video_call_by_you" = "Nawiązałeś(-aś) rozmowę wideo"; -"notice_placed_voice_call_by_you" = "Nawiązałeś(-aś) połączenie głosowe"; -"notice_room_name_changed_by_you_for_dm" = "Zmieniłeś(-aś) nazwę na %@."; -"notice_room_name_changed_by_you" = "Zmieniłeś(-aś) nazwę pokoju na %@."; -"notice_topic_changed_by_you" = "Zmieniłeś(-aś) temat na \"%@\"."; -"notice_display_name_removed_by_you" = "Usunąłeś(-aś) swoją wyświetlaną nazwę"; -"notice_display_name_changed_from_by_you" = "Zmieniłeś(-aś) wyświetlaną nazwę z %@ na %@"; -"notice_display_name_set_by_you" = "Zmieniłeś(-aś) wyświetlaną nazwę na %@"; -"notice_avatar_url_changed_by_you" = "Zmieniłeś(-aś) swój awatar"; -"notice_room_withdraw_by_you" = "Wycofałeś(-aś) zaproszenie do pokoju dla %@"; -"notice_room_ban_by_you" = "Zbanowałeś(-aś) %@"; -"notice_room_unban_by_you" = "Odbanowałeś(-aś) %@"; -"notice_room_kick_by_you" = "Wyprosiłeś(-aś) %@"; -"notice_room_reject_by_you" = "Odrzuciłeś(-aś) zaproszenie"; -"notice_room_leave_by_you" = "Opuściłeś(-aś) pokój"; -"notice_room_join_by_you" = "Dołączyłeś(-aś) do pokoju"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Odrzuciłeś(-aś) zaproszenie %@"; -"notice_room_third_party_revoked_invite_by_you" = "Odrzuciłeś(-aś) zaproszenie do pokoju od %@"; -"notice_room_third_party_registered_invite_by_you" = "Przyjąłeś(-aś) zaproszenie od %@"; -"notice_room_third_party_invite_by_you_for_dm" = "Zaprosiłeś(-aś) %@"; -"notice_room_third_party_invite_by_you" = "Wysłałeś(-aś) zaproszenie do pokoju dla %@"; -"notice_room_invite_you" = "%@ zaprosił(-a) Ciebie"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "Zaprosiłeś(-aś) %@"; -"notice_declined_video_call" = "%@ odrzucił(-a) połączenie"; -"notice_ended_video_call" = "%@ zakończył(-a) połączenie"; -"notice_answered_video_call" = "%@ odebrał(-a) połączenie"; -"notice_placed_video_call" = "%@ nawiązał(-a) połączenie wideo"; -"notice_placed_voice_call" = "%@ nawiązał(-a) połączenie głosowe"; -"notice_room_name_changed_for_dm" = "%@ zmienił(-a) nazwę na %@."; -"notice_room_name_changed" = "%@ zmienił(-a) nazwę pokoju na %@."; -"notice_topic_changed" = "%@ zmienił(-a) temat na \"%@\"."; -"notice_display_name_removed" = "%@ usunął(-ęła) swoją wyświetlaną nazwę"; -"notice_display_name_changed_from" = "%@ zmienił(-a) swoją wyświetlaną nazwę z %@ na %@"; -"notice_display_name_set" = "%@ zmienił(-a) swoją wyświetlaną nazwę na %@"; -"notice_avatar_url_changed" = "%@ zmienił(-a) swój awatar"; -"notice_room_reason" = ". Powód: %@"; -"notice_room_withdraw" = "%@ wycofał(-a) zaproszenie %@"; -"notice_room_ban" = "%@ zbanował(-a) %@"; -"notice_room_unban" = "%@ odbanował(-a) %@"; -"notice_room_kick" = "%@ wyprosiła(-a) %@"; -"notice_room_reject" = "%@ odrzucił(-a) zaproszenie"; -"notice_room_leave" = "%@ opuścił(-a) pokój"; -"notice_room_join" = "%@ dołączył(-a)"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ odrzucił(-a) zaproszenie do pokoju od %@"; -"notice_room_third_party_registered_invite" = "%@ przyjął(-ęła) zaproszenie od %@"; -"notice_room_third_party_revoked_invite" = "%@ odrzucił(-a) zaproszenie do pokoju od %@"; -"notice_room_third_party_invite_for_dm" = "%@ zaprosił(-a) %@"; -"notice_room_third_party_invite" = "%@ wysłał(-a) zaproszenie do pokoju dla %@"; - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /matrix-sdk/src/main/res/values/strings.xml. -*/ - -"notice_room_invite" = "%@ zaprosił(-a) %@"; -"language_picker_default_language" = "Domyślny (%@)"; - -// Language picker -"language_picker_title" = "Wybierz język"; - -// Country picker -"country_picker_title" = "Wybierz kraj"; -"local_contacts_access_discovery_warning" = "Aby znaleźć kontakty, które są użytkownikami sieci Matrix, %@ może wysłać adresy e-mail i numery telefonów z Twojej książki adresowej do wybranego serwera tożsamości Matrix. Jeśli serwer na to pozwala, dane osobowe są szyfrowane przed wysłaniem - zapoznaj się z polityką prywatności Twojego serwera tożsamości, aby uzyskać więcej informacji."; -"local_contacts_access_discovery_warning_title" = "Odkrywanie użytkowników"; -"local_contacts_access_not_granted" = "Wyszukiwanie użytkowników sieci Matrix na podstawie lokalnych kontaktów wymaga dostępu do Twoich kontaktów, ale %@ nie ma uprawnień, które umożliwiłyby ich użycie"; -"microphone_access_not_granted_for_call" = "Połączenia głosowe wymagają dostępu do mikrofonu, ale %@ nie ma pozwolenia na jego używanie"; - -// Permissions -"camera_access_not_granted_for_call" = "Rozmowy wideo wymagają dostępu do kamery, ale %@ nie ma pozwolenia na jej używanie"; -"ssl_homeserver_url" = "URL Serwera Domowego: %@"; -"user_id_placeholder" = "np.: @bob:homeserver"; -"network_error_not_reachable" = "Sprawdź połączenie internetowe"; -"power_level" = "Poziom uprawnień"; -"public" = "Publiczny"; -"private" = "Prywatny"; -"default" = "domyślny"; -"not_supported_yet" = "Jeszcze nie obsługiwane"; -"error_common_message" = "Wystąpił błąd. Spróbuj ponownie później."; -"error" = "Błąd"; -"unsent" = "Niewysłane"; -"offline" = "offline"; - -// Others -"user_id_title" = "ID użytkownika:"; -"e2e_passphrase_create" = "Utwórz hasło"; -"e2e_passphrase_not_match" = "Hasła muszą się zgadzać"; -"e2e_passphrase_empty" = "Hasło nie może być puste"; -"e2e_passphrase_confirm" = "Potwierdź hasło"; -"e2e_export" = "Eksport"; -"e2e_export_prompt" = "Ten proces umożliwia wyeksportowanie do pliku lokalnego kluczy wiadomości odebranych w zaszyfrowanych pokojach. Dzięki temu będziesz mógł w przyszłości zaimportować plik do innego klienta Matrix i odszyfrować te wiadomości.\nWyeksportowany plik pozwoli każdemu, kto może go odczytać, na odszyfrowanie wszelkich zaszyfrowanych wiadomości, które widzisz, więc powinieneś zadbać o jego bezpieczeństwo."; - -// E2E export -"e2e_export_room_keys" = "Eksportuj klucze pokoju"; -"e2e_passphrase_enter" = "Wprowadź hasło"; -"e2e_import" = "Importuj"; -"e2e_import_prompt" = "Ten proces umożliwia zaimportowanie kluczy szyfrowania, które zostały wcześniej wyeksportowane z innego klienta Matrix. Będziesz mógł odszyfrować wszystkie wiadomości, które inny klient mógłby odszyfrować. \nPlik eksportu jest chroniony hasłem. Wprowadź hasło, aby odszyfrować plik."; - -// E2E import -"e2e_import_room_keys" = "Importuj klucze pokoju"; -"format_time_d" = "d"; -"format_time_h" = "h"; -"format_time_m" = "m"; - -// Time -"format_time_s" = "s"; -"contact_local_contacts" = "Lokalne Kontakty"; - -// Contacts -"contact_mx_users" = "Użytkownicy Matrix"; -"attachment_e2e_keys_file_prompt" = "Ten plik zawiera klucze szyfrowania wyeksportowane z klienta Matrix.\nChcesz przejrzeć zawartość pliku czy zaimportować zawarte w nim klucze?"; -"attachment_large" = "Duży (%@)"; -"attachment_medium" = "Średni (%@)"; -"attachment_small" = "Mały (%@)"; -"attachment_original" = "Rzeczywisty rozmiar (%@)"; - -// Attachment -"attachment_size_prompt" = "Czy chcesz wysłać jako:"; -"room_member_power_level_prompt" = "Nie będzie można cofnąć tej zmiany, ponieważ nadajesz użytkownikowi uprawnienia równoważne do Twoich. \nCzy jesteś pewny(-a)?"; - -// Room members -"room_member_ignore_prompt" = "Czy na pewno chcesz ukryć wszystkie wiadomości od tego użytkownika?"; -"message_reply_to_message_to_reply_to_prefix" = "W odpowiedzi na"; -"message_reply_to_sender_sent_a_file" = "wysłał(-a) plik."; -"message_reply_to_sender_sent_a_video" = "wysłał(-a) plik wideo."; -"message_reply_to_sender_sent_an_audio_file" = "wysłał(-a) plik audio."; - -// Reply to message -"message_reply_to_sender_sent_an_image" = "wysłał(-a) obraz."; -"room_no_conference_call_in_encrypted_rooms" = "Połączenia konferencyjne nie są obsługiwane w zaszyfrowanych pokojach"; -"room_no_power_to_create_conference_call" = "Nie masz uprawnień do rozpoczęcia konferencji w tym pokoju"; -"room_left_for_dm" = "Opuściłeś(-aś) pokój"; -"room_left" = "Opuściłeś(-aś) pokój"; -"room_error_timeline_event_not_found" = "Aplikacja próbowała załadować określony punkt na osi czasu tego pokoju, ale nie mogła go znaleźć"; -"room_error_timeline_event_not_found_title" = "Nie udało się załadować pozycji na osi czasu"; -"room_error_cannot_load_timeline" = "Nie udało się załadować osi czasu"; -"room_error_topic_edition_not_authorized" = "Nie masz uprawnień do edytowania tematu tego pokoju"; -"room_error_name_edition_not_authorized" = "Nie masz uprawnień do edytowania nazwy tego pokoju"; -"room_error_join_failed_empty_room" = "Obecnie nie jest możliwe ponowne dołączenie do pustego pokoju."; -"room_error_join_failed_title" = "Nie udało się dołączyć do pokoju"; - -// Room -"room_please_select" = "Wybierz pokój"; -"room_creation_participants_placeholder" = "(np. @bob:homeserver1; @john:homeserver2...)"; -"room_creation_participants_title" = "Uczestnicy:"; -"room_creation_alias_placeholder_with_homeserver" = "(np. #foo%@)"; -"room_creation_alias_placeholder" = "(np. #foo:example.org)"; -"room_creation_alias_title" = "Alias pokoju:"; -"room_creation_name_placeholder" = "(np. grupa obiadowa)"; - -// Room creation -"room_creation_name_title" = "Nazwa pokoju:"; -"account_error_push_not_allowed" = "Powiadomienia nie są dozwolone"; -"account_error_msisdn_wrong_description" = "To nie wygląda na prawidłowy numer telefonu"; -"account_error_msisdn_wrong_title" = "Nieprawidłowy numer telefonu"; -"account_error_email_wrong_description" = "To nie wygląda na prawidłowy adres e-mail"; -"account_error_email_wrong_title" = "Niepoprawny adres e-mail"; -"account_error_matrix_session_is_not_opened" = "Sesja Matrix nie jest otwarta"; -"account_error_picture_change_failed" = "Zmiana obrazu nie powiodła się"; -"account_error_display_name_change_failed" = "Zmiana wyświetlanej nazwy nie powiodła się"; -"account_msisdn_validation_error" = "Nie można zweryfikować numeru telefonu."; -"account_msisdn_validation_message" = "Wysłaliśmy SMS-a z kodem aktywacyjnym. Wpisz otrzymany kod poniżej."; -"account_msisdn_validation_title" = "Oczekiwanie na weryfikację"; -"account_email_validation_error" = "Nie można zweryfikować adresu e-mail. Sprawdź swoją skrzynkę e-mail i kliknij zawarte w niej łącze. Gdy to zrobisz, kliknij kontynuuj"; -"account_email_validation_message" = "Sprawdź swoją skrzynkę e-mail i kliknij zawarte w niej łącze. Gdy to zrobisz, kliknij kontynuuj."; -"account_email_validation_title" = "Oczekiwanie na weryfikację"; -"account_linked_emails" = "Połączone adresy e-mail"; -"account_link_email" = "Połącz adres e-mail"; - -// Account -"account_save_changes" = "Zapisz zmiany"; -"room_event_encryption_verify_ok" = "Zweryfikuj"; -"room_event_encryption_verify_message" = "Aby sprawdzić, czy tej sesji można zaufać, skontaktuj się z jej właścicielem w inny sposób (np. osobiście lub telefonicznie) i zapytaj, czy klucz, który widzą w swoich ustawieniach użytkownika dla tej sesji, odpowiada kluczowi poniżej:\n\nNazwa sesji: %@\nIdentyfikator sesji: %@\nKlucz sesji: %@\n\nJeżeli klucze są identyczne, naciśnij przycisk weryfikacji poniżej. Jeżeli klucze się różnią, to oznacza to, że ktoś inny mógł przechwycić tę sesję — w takim przypadku naciśnij przycisk zablokuj.\n\nW przyszłości proces weryfikacji będzie bardziej wyrafinowany."; -"room_event_encryption_verify_title" = "Zweryfikuj sesję\n\n"; -"room_event_encryption_info_unblock" = "Odblokuj"; -"room_event_encryption_info_block" = "Zablokuj"; -"room_event_encryption_info_unverify" = "Cofnij weryfikację"; -"room_event_encryption_info_verify" = "Zweryfikuj..."; -"room_event_encryption_info_device_blocked" = "Zablokowany"; -"room_event_encryption_info_device_not_verified" = "NIE zweryfikowano"; -"room_event_encryption_info_device_verified" = "Zweryfikowano"; -"room_event_encryption_info_device_fingerprint" = "Ed25519 fingerprint\n"; -"room_event_encryption_info_device_verification" = "Weryfikacja\n"; -"room_event_encryption_info_event_none" = "brak"; -"room_event_encryption_info_event_unencrypted" = "niezaszyfrowane"; -"e2e_passphrase_too_short" = "Hasło jest zbyt krótkie (Hasło musi składać się z co najmniej %d znaków)"; -"microphone_access_not_granted_for_voice_message" = "Wiadomości głosowe wymagają dostępu do mikrofonu ale %@ nie posiada uprawnień do użycia go"; -"message_reply_to_sender_sent_a_voice_message" = "wysłał(-a) wiadomość głosową."; -"attachment_large_with_resolution" = "Duży %@ (~%@)"; -"attachment_medium_with_resolution" = "Średni %@ (~%@)"; -"attachment_small_with_resolution" = "Mały %@ (~%@)"; -"attachment_size_prompt_message" = "Możesz to wyłączyć w ustawieniach."; -"attachment_size_prompt_title" = "Potwierdź rozmiar, który chcesz wysłać"; -"auth_reset_password_error_not_found" = "Nie znaleziono"; -"auth_reset_password_error_unauthorized" = "Brak autoryzacji"; -"auth_invalid_user_name" = "Niepoprawna nazwa użytkownika"; -"attachment_unsupported_preview_message" = "Ten format pliku nie jest obsługiwany."; -"attachment_unsupported_preview_title" = "Brak podglądu"; -"message_reply_to_sender_sent_their_location" = "udostępnił(-a) swoją lokację."; -"room_displayname_all_other_members_left" = "%@ (Opuścił-a)"; -"auth_username_in_use" = "Nazwa użytkownika jest już używana"; -"rename" = "Zmień nazwę"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/pt.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/pt.lproj/MatrixKit.strings deleted file mode 100644 index 8b1378917..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/pt.lproj/MatrixKit.strings +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/pt_BR.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/pt_BR.lproj/MatrixKit.strings deleted file mode 100644 index 969f59541..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/pt_BR.lproj/MatrixKit.strings +++ /dev/null @@ -1,482 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Criar conta:"; -"login_server_url_placeholder" = "URL (e.g. https://matrix.org)"; -"login_home_server_title" = "URL de Servidorcasa:"; -"login_home_server_info" = "Seu servidorcasa armazena todas as suas conversas e dados de conta"; -"login_identity_server_title" = "URL de servidor de identidade:"; -"login_identity_server_info" = "Matrix provê servidores de identidade para rastrear quais emails, etc. pertencem a quais IDs Matrix. Somente https://matrix.org existe atualmente."; -"login_user_id_placeholder" = "ID Matrix (e.g. @bob:matrix.org ou bob)"; -"login_password_placeholder" = "Senha"; -"login_optional_field" = "opcional"; -"login_display_name_placeholder" = "Nome de exibição (e.g. Bob Obson)"; -"login_email_info" = "Especificar um endereço de email permite que outras(os) usuárias(os) encontrem você mais facilmente, e vai dar a você uma forma de resettar sua senha no futuro."; -"login_email_placeholder" = "Endereço de email"; -"login_prompt_email_token" = "Por favor entre seu token de validação de email:"; -"login_error_title" = "Login Falhou"; -"login_error_no_login_flow" = "Nós falhamos para recuperar informação de autenticação deste servidorcasa"; -"view" = "Visualizar"; -"login_error_do_not_support_login_flows" = "Atualmente nós não suportamos qualquer ou todos os fluxos de login definidos por este servidorcasa"; -"back" = "Voltar"; -"continue" = "Continuar"; -"leave" = "Sair"; -"invite" = "Convidar"; -"retry" = "Retentar"; -"cancel" = "Cancelar"; -"save" = "Salvar"; -"login_error_registration_is_not_supported" = "Registro não é suportado atualmente"; -"login_error_forbidden" = "Nome de usuária(o)/senha inválidos"; -"login_error_unknown_token" = "O token de acesso especificado não foi reconhecido"; -"login_error_bad_json" = "JSON malformado"; -"login_error_not_json" = "Não continha JSON válido"; -"login_error_limit_exceeded" = "Requisições demais têm sido enviadas"; -"login_error_user_in_use" = "Este nome de usuária(o) já é usado"; -"login_desktop_device" = "Desktop"; -// Action -"no" = "Não"; -"yes" = "Sim"; -"abort" = "Abortar"; -"close" = "Fechar"; -"discard" = "Descartar"; -"dismiss" = "Dispensar"; -"sign_up" = "Fazer signup"; -"submit" = "Submeter"; -"submit_code" = "Submeter código"; -"set_default_power_level" = "Resettar Nível de Poder"; -"set_moderator" = "Definir Moderador(a)"; -"set_admin" = "Definir Admin"; -"start_chat" = "Começar Chat"; -"start_voice_call" = "Começar Chamada de Voz"; -"start_video_call" = "Começar Chamada de Vídeo"; -"mention" = "Mencionar"; -"select_account" = "Selecionar uma conta"; -"attach_media" = "Anexar Mídia desde Biblioteca"; -"capture_media" = "Tirar Foto/Vídeo"; -"invite_user" = "Convidar Usuária(o) matrix"; -"reset_to_default" = "Resettar para default"; -"resend_message" = "Reenviar a mensagem"; -"select_all" = "Selecionar Todas"; -"cancel_upload" = "Cancelar Upload"; -"cancel_download" = "Cancelar Download"; -"show_details" = "Mostrar Detalhes"; -"answer_call" = "Atender Chamada"; -"reject_call" = "Rejeitar Chamada"; -"end_call" = "Terminar Chamada"; -"ignore" = "Ignorar"; -"unignore" = "Designorar"; -"login_error_forgot_password_is_not_supported" = "Esqueceu senha não é suportada atualmente"; -"login_error_login_email_not_yet" = "O link de email que ainda não tem sido clicado"; -"login_use_fallback" = "Usar página de fallback"; -"login_leave_fallback" = "Cancelar"; -"login_invalid_param" = "Parâmetro inválido"; -"register_error_title" = "Registro Falhou"; -"login_tablet_device" = "Tablet"; -"login_error_resource_limit_exceeded_title" = "Limite de Recursos Excedido"; -"login_error_resource_limit_exceeded_message_default" = "Este servidorcasa tem excedido um de seus limites de recursos."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Este servidorcasa tem atingido seu limite de Usuárias(os) Mensalmente Ativos."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nPor favor contacte seu/sua administrador(a) de serviço para continuar usando este serviço."; -"login_error_resource_limit_exceeded_contact_button" = "Contactar Administrador(a)"; -// Events formatter -"notice_avatar_changed_too" = "(avatar foi mudado também)"; -"notice_room_name_removed" = "%@ removeu o nome da sala"; -"notice_room_topic_removed" = "%@ removeu o tópico"; -"notice_event_redacted_by" = " por %@"; -"notice_event_redacted_reason" = " [razão: %@]"; -"login_mobile_device" = "Celular"; -"notice_event_redacted" = ""; -"notice_profile_change_redacted" = "%@ atualizou perfil dela(e) %@"; -"notice_room_created" = "%@ criou e configurou a sala."; -"notice_room_join_rule" = "A regra de se juntar é: %@"; -"notice_room_power_level_intro" = "Os níveis de poder de membros da sala são:"; -"notice_room_power_level_acting_requirement" = "Os níveis de poder mínimos que um/a usuária(o) deve ter antes de agir são:"; -"notice_room_power_level_event_requirement" = "Os níveis mínimos de poder relacionados a eventos são:"; -"notice_room_aliases" = "Os aliases da sala são: %@"; -"notice_room_related_groups" = "Os grupos associados a esta sala são: %@"; -"notice_encrypted_message" = "Mensagem encriptada"; -"set_power_level" = "Definir Nível de Poder"; -"power_level" = "Nível de Poder"; -"notice_encryption_enabled" = "%@ ativou a criptografia de ponta a ponta (algorithm %@)"; -"notice_image_attachment" = "anexo de imagem"; -"notice_audio_attachment" = "anexo de áudio"; -"notice_video_attachment" = "anexo de vídeo"; -"notice_location_attachment" = "anexo de localização"; -"notice_file_attachment" = "anexo de arquivo"; -"notice_invalid_attachment" = "anexo inválido"; -"notice_unsupported_attachment" = "Anexo insuportado: %@"; -"notice_feedback" = "Evento de feedback (id: %@): %@"; -"notice_redaction" = "%@ redigiu um evento (id: %@)"; -"notice_error_unsupported_event" = "Evento insuportado"; -"notice_error_unexpected_event" = "Evento não-esperado"; -"notice_error_unknown_event_type" = "Tipo de evento desconhecido"; -"notice_room_history_visible_to_anyone" = "%@ fez histórico da sala futuro visível para qualquer pessoa."; -"notice_room_history_visible_to_members" = "%@ fez histórico da sala futuro visível para todos os membros da sala."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ fez histórico da sala futuro visível para todos os membros da sala, do ponto que foram convidados."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ fez histórico da sala futuro visível para todos os membros da sala, do ponto que se juntaram."; -"notice_crypto_unable_to_decrypt" = "** Incapaz de decriptar: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "A sessão do/da enviador(a) não nos tem enviado as chaves para esta mensagem."; -"notice_sticker" = "sticker"; -"notice_in_reply_to" = "Em resposta a"; -// room display name -"room_displayname_empty_room" = "Sala vazia"; -"room_displayname_two_members" = "%@ e %@"; -"room_displayname_more_than_two_members" = "%@ e %@ outros"; -// Settings -"settings" = "Ajustes"; -"settings_enable_inapp_notifications" = "Habilitar notificações Em-App"; -"settings_enable_push_notifications" = "Habilitar notificações push"; -"settings_enter_validation_token_for" = "Entrar token de validação para %@:"; -"notification_settings_room_rule_title" = "Sala: '%@'"; -// Devices -"device_details_title" = "Informação de sessão\n"; -"device_details_name" = "Nome Público\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Visto por último\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "O nome público de uma sessão é visível para pessoas com quem você se comunica"; -"device_details_delete_prompt_title" = "Autenticação"; -"device_details_delete_prompt_message" = "Esta operação requer autenticação adicional.\nPara continuar, por favor entre sua senha."; -// Encryption information -"room_event_encryption_info_title" = "Informação de encriptação ponta-a-ponta\n\n"; -"room_event_encryption_info_event" = "Informação de evento\n"; -"room_event_encryption_info_event_user_id" = "ID de usuária(o)\n"; -"room_event_encryption_info_event_algorithm" = "Algoritmo\n"; -"room_event_encryption_info_event_session_id" = "ID de sessão\n"; -"room_event_encryption_info_event_unencrypted" = "não-encriptado"; -"room_event_encryption_info_event_none" = "nenhuma"; -"room_event_encryption_info_device" = "\nInformação de sessão de enviador(a)\n"; -"room_event_encryption_info_device_unknown" = "sessão desconhecida\n"; -"room_event_encryption_info_device_name" = "Nome Público\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "Verificação\n"; -"room_event_encryption_info_event_decryption_error" = "Erro de decriptação\n"; -"room_event_encryption_info_device_verified" = "Verificado"; -"room_event_encryption_info_device_not_verified" = "NÃO verificado"; -"room_event_encryption_info_device_blocked" = "Na lista negra"; -"room_event_encryption_info_verify" = "Verificar..."; -"room_event_encryption_info_unverify" = "Desverificar"; -"room_event_encryption_info_block" = "Adicionar à lista negra"; -"room_event_encryption_info_unblock" = "Remover da lista negra"; -"room_event_encryption_verify_title" = "Verificar sessão\n\n"; -"room_event_encryption_verify_message" = "Para verificar que esta sessão pode ser confiada, por favor contacte a/o dona(o) dela usando alguma outro meio (e.g. em pessoa ou uma chamada de telefone) e pergunte-lhe se a chave que ela/ele vê em seus Ajustes de Usuária(o) para esta sessão corresponde com a chave abaixo:\n\n\tNome de sessão: %@\n\tID de sessão: %@\n\tChave de sessão: %@\n\nSe ela corresponde, pressione o botão verificar abaixo. Se não corresponde, então alguma outra pessoa está interceptando esa sessão e você provavelmente quer pressionar o botão adicionar à lista negra em vez disso.\n\nNo futuro este processo de verificação vai ser mais sofisticado."; -"room_event_encryption_verify_ok" = "Verificar"; -// Account -"account_save_changes" = "Salvar mudanças"; -"account_link_email" = "Linkar Email"; -"account_linked_emails" = "Emails linkados"; -"account_email_validation_title" = "Verificação Pendendo"; -"account_email_validation_message" = "Por favor cheque seu email e clique no link que ele contém. Uma vez que isto seja feito, clique em continuar."; -"account_email_validation_error" = "Incapaz de verificar endereço de email. Por favor cheque seu email e clique no link que ele contém. Uma vez que isto seja feito, clique em continuar"; -"account_msisdn_validation_title" = "Verificação Pendendo"; -"account_msisdn_validation_message" = "Nós temos enviado um SMS com um código de ativação. Por favor entre este código abaixo."; -"account_msisdn_validation_error" = "Incapaz de verificar número de telefone."; -"room_event_encryption_info_event_identity_key" = "Chave de identidade Curve25519\n"; -"room_event_encryption_info_event_fingerprint_key" = "Chave de impressão digital Ed25519 clamada\n"; -"room_event_encryption_info_device_fingerprint" = "Impressão digital Ed25519\n"; -"account_error_display_name_change_failed" = "Mudança de nome de exibição falhou"; -"account_error_picture_change_failed" = "Mudança de imagem falhou"; -"account_error_matrix_session_is_not_opened" = "Sessão Matrix não está aberta"; -"account_error_email_wrong_title" = "Endereço de Email Inválido"; -"account_error_email_wrong_description" = "Isto não parece ser um endereço de email válido"; -"account_error_msisdn_wrong_title" = "Número de Telefone Inválido"; -"account_error_msisdn_wrong_description" = "Isto não parece ser um número de telefone válido"; -// Room creation -"room_creation_name_title" = "Nome de sala:"; -"room_creation_name_placeholder" = "(e.g. grupoDeAlmoço)"; -"room_creation_alias_title" = "Alias de sala:"; -"room_creation_participants_title" = "Participantes:"; -// Room -"room_please_select" = "Por favor selecione uma sala"; -"room_error_join_failed_title" = "Falha para se juntar a sala"; -"room_error_join_failed_empty_room" = "Não é atualmente possível se juntar a uma sala vazia."; -"room_error_name_edition_not_authorized" = "Você não está autorizada(o) a editar o nome deste sala"; -"room_error_topic_edition_not_authorized" = "Você não está autorizada(o) a editar o tópico desta sala"; -"room_error_cannot_load_timeline" = "Falha para carregar timeline"; -"room_error_timeline_event_not_found_title" = "Falha para carregar posição de timeline"; -"room_error_timeline_event_not_found" = "O aplicativo estava tentando carregar um ponto específico na timeline desta sala mas foi incapaz de o encontrar"; -"room_left" = "Você saiu da sala"; -"room_no_power_to_create_conference_call" = "Você precisa de permissão para convidar para começar uma conferência nesta sala"; -"room_no_conference_call_in_encrypted_rooms" = "Chamadas de conferência não são suportadas em salas encriptadas"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "enviou uma imagem."; -"message_reply_to_sender_sent_a_video" = "enviou um vídeo."; -"room_creation_alias_placeholder" = "(e.g. #foo:exemplo.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(e.g. #foo%@)"; -"room_creation_participants_placeholder" = "(e.g. @bob:servidorcasa1; @john:servidorcasa2...)"; -"message_reply_to_sender_sent_an_audio_file" = "enviou um arquivo de áudio."; -"message_reply_to_sender_sent_a_file" = "enviou um arquivo."; -"message_reply_to_message_to_reply_to_prefix" = "Em resposta a"; -// Room members -"room_member_ignore_prompt" = "Você tem certeza que você quer esconder todas as mensagens desta(e) usuária(o)?"; -"room_member_power_level_prompt" = "Você não vai ser capaz de desfazer esta mudança como você está promovendo a/o usuária(o) para ter o mesmo nível de poder que você mesma(o).\nVocê tem certeza?"; -// Attachment -"attachment_size_prompt" = "Você quer enviar como:"; -"attachment_original" = "Tamanho de Verdade (%@)"; -"attachment_small" = "Pequeno (~%@)"; -"attachment_medium" = "Médio (~%@)"; -"attachment_large" = "Grande (~%@)"; -"attachment_cancel_download" = "Cancelar o download?"; -"attachment_cancel_upload" = "Cancelar o upload?"; -"attachment_multiselection_size_prompt" = "Você quer enviar imagens como:"; -"attachment_multiselection_original" = "Tamanho de Verdade"; -"attachment_e2e_keys_file_prompt" = "Este arquivo contém chaves de encriptação exportadas de um cliente Matrix.\nVocê quer visualizar o conteúdo do arquivo ou importar as chaves que ele contém?"; -"attachment_e2e_keys_import" = "Importar..."; -// Contacts -"contact_mx_users" = "Usuárias(os) Matrix"; -"contact_local_contacts" = "Contatos Locais"; -// Groups -"group_invite_section" = "Convites"; -"group_section" = "Grupos"; -// Search -"search_no_results" = "Nenhum Resultado"; -"search_searching" = "Pesquisa em Progresso..."; -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "h"; -"format_time_d" = "d"; -// E2E import -"e2e_import_room_keys" = "Importar chaves de sala"; -"e2e_import_prompt" = "Esse processo permite a você importar chaves de encriptação que você tinha previamente exportado de um outro cliente Matrix. Você vai então ser capaz de descriptar quaisquer mensagens que o outro cliente podia decriptar.\nO arquivo de exportação é protegido com uma frasepasse. Você deveria inserir a frasepasse aqui, para decriptar o arquivo."; -"e2e_import" = "Importar"; -"e2e_passphrase_enter" = "Entrar frasepasse"; -// E2E export -"e2e_export_room_keys" = "Exportar chaves de sala"; -"e2e_export_prompt" = "Este processo permite a você exportar as chaves para mensagens que você recebeu em salas encriptadas para um arquivo local. Você vai então ser capaz importar o arquivo para um outro cliente Matrix no futuro, para que o cliente também possa decriptar estas mensagens.\nO arquivo exportado vai permitir a qualquer pessoa que o possa ler decriptar quaisquer mensagens encriptadas que você pode ver, então você deveria ser cuidadosa(o) para mantê-lo protegido."; -"e2e_export" = "Exportar"; -"e2e_passphrase_confirm" = "Confirmar frasepasse"; -"e2e_passphrase_empty" = "Frasepasse não deve estar vazia"; -"e2e_passphrase_not_match" = "Frasepasses devem corresponder"; -"e2e_passphrase_create" = "Criar frasepasse"; -// Others -"user_id_title" = "ID de usuária(o):"; -"offline" = "offline"; -"unsent" = "Não-enviado"; -"error" = "Erro"; -"error_common_message" = "Um erro ocorreu. Por favor tente de novo mais tarde."; -"not_supported_yet" = "Não suportado ainda"; -"default" = "padrão"; -"private" = "Privado"; -"public" = "Público"; -"network_error_not_reachable" = "Por favor cheque sua conectividade de rede"; -"user_id_placeholder" = "ex: @bob:servidorcasa"; -"ssl_homeserver_url" = "URL de servidorcasa: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Chamadas de vídeo requerem acesso à Câmera mas %@ não tem permissão para usá-la"; -"microphone_access_not_granted_for_call" = "Chamadas requerem acesso ao Microfone mas %@ não tem permissão para usá-lo"; -"local_contacts_access_not_granted" = "Descoberta de usuárias(os) desde contatos locais requer acesso a seus contatos mas %@ não tem permissão para usá-los"; -"local_contacts_access_discovery_warning_title" = "Descoberta de usuárias(os)"; -"local_contacts_access_discovery_warning" = "Para descobrir contatos já usando Matrix, %@ pode enviar endereços de email e números de telefone em seu livro de endereços para seu servidor de identidade Matrix escolhido. Onde suportado, dados pessoais são hashados antes do envio - por favor cheque a política de privacidade de seu servidor de identidade para mais detalhes."; -// Country picker -"country_picker_title" = "Escolha um país"; -// Language picker -"language_picker_title" = "Escolha uma língua"; -"language_picker_default_language" = "Default (%@)"; -"notice_room_invite" = "%@ convidou %@"; -"notice_room_third_party_invite" = "%@ enviou um convite para %@ para se juntar à sala"; -"notice_room_third_party_registered_invite" = "%@ aceitou o convite para %@"; -"notice_room_join" = "%@ juntou-se"; -"notice_room_leave" = "%@ saiu"; -"notice_room_reject" = "%@ rejeitou o convite"; -"notice_room_kick" = "%@ expulsou %@"; -"notice_room_unban" = "%@ desbaniu %@"; -"notice_room_ban" = "%@ baniu %@"; -"notice_room_withdraw" = "%@ retirou o convite de %@"; -"notice_room_reason" = ". Razão: %@"; -"notice_avatar_url_changed" = "%@ mudou o avatar dela(e)"; -"notice_display_name_set" = "%@ definiu o nome de exibição dela(e) para %@"; -"notice_display_name_changed_from" = "%@ mudou o nome de exibição dela(e) de %@ para %@"; -"notice_display_name_removed" = "%@ removeu o nome de exibição dela(e)"; -"notice_topic_changed" = "%@ mudou o tópico para \"%@\"."; -"notice_room_name_changed" = "%@ mudou o nome da sala para %@."; -"notice_placed_voice_call" = "%@ começou uma chamada de voz"; -"notice_placed_video_call" = "%@ começou uma chamada de vídeo"; -"notice_answered_video_call" = "%@ atendeu a chamada"; -"notice_ended_video_call" = "%@ terminou a chamada"; -"notice_conference_call_request" = "%@ requisitou uma conferência de VoIP"; -"notice_conference_call_started" = "Conferência de VoIP começada"; -"notice_conference_call_finished" = "Conferência de VoIP terminada"; -// button names -"ok" = "OK"; -"send" = "Enviar"; -"copy_button_name" = "Copiar"; -"resend" = "Reenviar"; -"redact" = "Remover"; -"share" = "Compartilhar"; -"delete" = "Deletar"; -// actions -"action_logout" = "Fazer logout"; -"create_room" = "Criar Sala"; -"login" = "Fazer login"; -"create_account" = "Criar Conta"; -"membership_invite" = "Convidada(o)"; -"membership_leave" = "Saiu"; -"membership_ban" = "Banida(o)"; -"num_members_one" = "%@ usuária(o)"; -"num_members_other" = "%@ usuárias(os)"; -"kick" = "Expulsar"; -"ban" = "Banir"; -"unban" = "Des-banir"; -"message_unsaved_changes" = "Existem mudanças não-salvas. Sair vai descartá-las."; -// Login Screen -"login_error_already_logged_in" = "Login já feito"; -"login_error_must_start_http" = "URL deve começar com http[s]://"; -// room details dialog screen -"room_details_title" = "Detalhes de Sala"; -// contacts list screen -"invitation_message" = "Eu gostaria de conversar com você com matrix. Por favor, visite o website http://matrix.org para ter mais informação."; -// Settings screen -"settings_title_config" = "Configuração"; -"settings_title_notifications" = "Notificações"; -// Notification settings screen -"notification_settings_disable_all" = "Desabilitar todas as notificações"; -"notification_settings_enable_notifications" = "Habilitar notificações"; -"notification_settings_enable_notifications_warning" = "Todas as notificações estão atualmente desabilitadas para todos os dispositivos."; -"notification_settings_global_info" = "Ajustes de notificação são salvas em sua conta de usuária(o) e são compartilhadas entre todos os clientes que as suportam (incluindo notificações de desktop).\n\nRegras são aplicadas em ordem; a primeira regra que corresponde define o resultado da mensagem.\nEntão: Notificações per-palavra são mais importantes que notificações per-sala que são mais importantes que notificações per-enviador(a).\nPara múltiplas regras do mesmo tipo, a primeira na lista que corresponde leva prioridade."; -"notification_settings_per_word_notifications" = "Notificações per-palavra"; -"notification_settings_per_word_info" = "Palavras correspondem insensivelmente com maiúsculas e minúsculas, e podem incluir um wildcard *. Então:\nfoo corresponde com string foo rodeado por delimitadores de palavras (e.g., pontuação e whitespace ou início/fim de linha).\nfoo* corresponde com qualquer palavra que começa foo.\n*foo* corresponde com qualquer palavra que inclui as 3 letras foo."; -"notification_settings_always_notify" = "Sempre notificar"; -"notification_settings_never_notify" = "Nunca notificar"; -"notification_settings_word_to_match" = "palavra para corresponder"; -"notification_settings_highlight" = "Destacar"; -"notification_settings_custom_sound" = "Som personalizado"; -"notification_settings_per_room_notifications" = "Notificações per-sala"; -"notification_settings_per_sender_notifications" = "Notificações per-enviador(a)"; -"notification_settings_sender_hint" = "@usuarix:dominio.com"; -"notification_settings_select_room" = "Selecionar uma sala"; -"notification_settings_other_alerts" = "Outros Alertas"; -"notification_settings_contain_my_user_name" = "Notificar-me com som sobre mensagens que contêm meu nome de usuária(o)"; -"notification_settings_contain_my_display_name" = "Notificar-me com som sobre mensagens que contêm meu nome de exibição"; -"notification_settings_just_sent_to_me" = "Notificar-me com som sobre mensagens enviadas apenas para mim"; -"notification_settings_invite_to_a_new_room" = "Notificar-me quando eu sou convidada(o) para uma nova sala"; -"notification_settings_people_join_leave_rooms" = "Notificar-me quando pessoas se juntam ou saem de salas"; -"notification_settings_receive_a_call" = "Notificar-me quando eu recebo uma chamada"; -"notification_settings_suppress_from_bots" = "Suprimir notificações de bots"; -"notification_settings_by_default" = "Por default..."; -"notification_settings_notify_all_other" = "Notificar para todas as outras mensagens/salas"; -// gcm section -"settings_config_home_server" = "Servidorcasa: %@"; -"settings_config_identity_server" = "Servidor de identidade: %@"; -"settings_config_user_id" = "ID de usuária(o): %@"; -// call string -"call_waiting" = "Aguardando..."; -"call_connecting" = "Conectando…"; -"call_ended" = "Chamada terminada"; -"call_ring" = "Chamando..."; -"incoming_video_call" = "Chamada de Vídeo Entrante"; -"incoming_voice_call" = "Chamada de Voz Entrante"; -"call_invite_expired" = "Convite de Chamada Expirado"; -// unrecognized SSL certificate -"ssl_trust" = "Confiar"; -"ssl_logout_account" = "Fazer logout"; -"ssl_remain_offline" = "Ignorar"; -"ssl_fingerprint_hash" = "Impressão digital (%@):"; -"ssl_could_not_verify" = "Não foi possível verificar identidade de servidor remoto."; -"ssl_cert_not_trust" = "Isto pode significar que alguém está interceptando maliciosamente seu tráfico, ou que seu telefone não confia no certificado provido pelo servidor remoto."; -"ssl_cert_new_account_expl" = "Se o/a administrador(a) do servidor tem dito que isto é esperado, assegure-se que a impressão digital abaixo corresponde com a impressão digital provida por ele(a)."; -"ssl_unexpected_existing_expl" = "O certificado tem mudado de um que esta confiado por seu telefone. Isto é ALTAMENTE INCOMUM. É recomendado que você NÃO ACEITE este novo certificado."; -"ssl_expected_existing_expl" = "O certificado tem sido mudado de um previamente confiado para um que não é confiado. O servidor pode ter renovado o certificado dele. Contacte o/a administrador(a) do servidor a impressão digital esperada."; -"ssl_only_accept" = "SOMENTE aceite o certificado se o/a administrador(a) do servidor tem publicado uma impressão digital que corresponde com a acima."; -"notice_encryption_enabled_ok" = "%@ ativou encriptação ponta-a-ponta."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ ativou encriptação ponta-a-ponta (algoritmo não-reconhecido %2$@)."; -"device_details_rename_prompt_title" = "Nome da Sessão"; -"account_error_push_not_allowed" = "Notificações não permitidas"; -"notice_room_third_party_revoked_invite" = "%@ revogou o convite para %@ para se juntar à sala"; -// Notice Events with "You" -"notice_room_invite_by_you" = "Você convidou %@"; -"notice_room_invite_you" = "%@ convidou você"; -"notice_room_third_party_invite_by_you" = "Você enviou um convite para %@ para se juntar à sala"; -"notice_room_third_party_registered_invite_by_you" = "Você aceitou o convite para %@"; -"notice_room_third_party_revoked_invite_by_you" = "Você revogou o convite para que %@ se junte à sala"; -"notice_room_join_by_you" = "Você juntou-se"; -"notice_room_leave_by_you" = "Você saiu"; -"notice_room_reject_by_you" = "Você rejeitou o convite"; -"notice_room_kick_by_you" = "Você expulsou %@"; -"notice_room_unban_by_you" = "Você desbaniu %@"; -"notice_room_ban_by_you" = "Você baniu %@"; -"notice_room_withdraw_by_you" = "Você retirou o convite de %@"; -"notice_avatar_url_changed_by_you" = "Você mudou seu avatar"; -"notice_display_name_set_by_you" = "Você definiu seu nome de exibição para %@"; -"notice_display_name_changed_from_by_you" = "Você mudou seu nome de exibição de %@ para %@"; -"notice_display_name_removed_by_you" = "Você removeu seu nome de exibição"; -"notice_topic_changed_by_you" = "Você mudou o tópico para \"%@\"."; -"notice_room_name_changed_by_you" = "Você mudou o nome da sala para %@."; -"notice_placed_voice_call_by_you" = "Você começou uma chamada de voz"; -"notice_placed_video_call_by_you" = "Você começou uma chamada de vídeo"; -"notice_answered_video_call_by_you" = "Você atendeu a chamada"; -"notice_ended_video_call_by_you" = "Você terminou a chamada"; -"notice_conference_call_request_by_you" = "Você requisitou uma conferência de VoIP"; -"notice_room_name_removed_by_you" = "Você removeu o nome da sala"; -"notice_room_topic_removed_by_you" = "Você removeu o tópico"; -"notice_event_redacted_by_you" = " por você"; -"notice_profile_change_redacted_by_you" = "Você atualizou seu perfil %@"; -"notice_room_created_by_you" = "Você criou e configurou a sala."; -"notice_encryption_enabled_ok_by_you" = "Você ativou encriptação ponta-a-ponta."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Você ativou a encriptação ponta-a-ponta (algoritmo irreconhecido %@)."; -"notice_redaction_by_you" = "Você redigiu um evento (id: %@)"; -"notice_room_history_visible_to_anyone_by_you" = "Você fez histórico da sala futuro visível para qualquer pessoa."; -"notice_room_history_visible_to_members_by_you" = "Você fez histórico da sala futuro visível para todos os membros da sala."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Você fez histórico de sala futuro visível para todos os membros da sala, do ponto que são convidados."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Você fez histórico da sala futuro visível para todos os membros da sala, do momento que se juntaram."; -"notice_room_name_removed_for_dm" = "%@ removeu o nome"; -"notice_room_created_for_dm" = "%@ juntou-se."; -// New -"notice_room_join_rule_invite" = "%@ fez a sala somente convite."; -"notice_room_join_rule_invite_for_dm" = "%@ fez isto somente convite."; -"notice_room_join_rule_invite_by_you" = "Você fez a sala somente convite."; -"notice_room_join_rule_invite_by_you_for_dm" = "Você fez isto somente convite."; -"notice_room_join_rule_public" = "%@ fez a sala pública."; -"notice_room_join_rule_public_for_dm" = "%@ fez isto público."; -"notice_room_join_rule_public_by_you" = "Você fez a sala pública."; -"notice_room_join_rule_public_by_you_for_dm" = "Você fez isto público."; -"notice_room_power_level_intro_for_dm" = "Os níveis de poder de membros são:"; -"notice_room_aliases_for_dm" = "Os aliases são: %@"; -"notice_room_history_visible_to_members_for_dm" = "%@ fez mensagens futuras visíveis para todos os membros da sala."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ fez mensagens futuras visíveis para todas as pessoas, do ponto que são convidadas."; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ fez mensagens futuras visíveis para todas as pessoas, do ponto que se juntaram."; -"room_left_for_dm" = "Você saiu"; -"notice_room_third_party_invite_for_dm" = "%@ convidou %@"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ revogou o convite de %@"; -"notice_room_name_changed_for_dm" = "%@ mudou o nome para %@."; -"notice_room_third_party_invite_by_you_for_dm" = "Você convidou %@"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Você revogou o convite de %@"; -"notice_room_name_changed_by_you_for_dm" = "Você mudou o nome para %@."; -"notice_room_name_removed_by_you_for_dm" = "Você removeu o nome"; -"notice_room_created_by_you_for_dm" = "Você juntou-se."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Você fez mensagens futuras visíveis para todos os membros da sala."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Você fez mensagens futuras visíveis para todas as pessoas, do ponto que são convidadas."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Você fez mensagens futuras visíveis para todas as pessoas, do ponto que se juntaram."; -"call_more_actions_dialpad" = "Pad de disco"; -"call_more_actions_unhold" = "Retomar"; -"call_more_actions_hold" = "Pôr em espera"; -"call_holded" = "Você pôs a chamada em espera"; -"call_remote_holded" = "%@ pôs a chamada em espera"; -"notice_declined_video_call_by_you" = "Você declinou a chamada"; -"notice_declined_video_call" = "%@ declinou a chamada"; -"resume_call" = "Retomar"; -"call_more_actions_transfer" = "Transferir"; -"call_more_actions_audio_use_device" = "Falante de Dispositivo"; -"call_more_actions_audio_use_headset" = "Usar Áudio de Auscultador"; -"call_more_actions_change_audio_device" = "Mudar Dispositivo de Áudio"; -"call_video_with_user" = "Chamada de vídeo com %@"; -"call_voice_with_user" = "Chamada de voz com %@"; -"call_ringing" = "Tocando…"; -"call_transfer_to_user" = "Transferir para %@"; -"call_consulting_with_user" = "Consultando com %@"; -"e2e_passphrase_too_short" = "Frasepasse curta demais (Ela deve ser a um mínimo %d caracteres em comprimento)"; -"microphone_access_not_granted_for_voice_message" = "Mensagens de voz requerem acesso ao Microfone mas %@ não tem permissão para usá-lo"; -"message_reply_to_sender_sent_a_voice_message" = "enviou uma mensagem de voz."; -"attachment_large_with_resolution" = "Grande %@ (~%@)"; -"attachment_medium_with_resolution" = "Médio %@ (~%@)"; -"attachment_small_with_resolution" = "Pequeno %@ (~%@)"; -"attachment_size_prompt_message" = "Você pode desligar isto em ajustes."; -"attachment_size_prompt_title" = "Confirmar tamanho para enviar"; -"room_displayname_all_other_participants_left" = "%@ (Saiu)"; -"auth_reset_password_error_not_found" = "Não encontrado"; -"auth_reset_password_error_unauthorized" = "Não-autorizada(o)"; -"auth_username_in_use" = "Nome de usuária(o) em uso"; -"auth_invalid_user_name" = "Nome de usuária(o) inválido"; -"rename" = "Renomear"; -"room_displayname_all_other_members_left" = "%@ (Saiu)"; -"attachment_unsupported_preview_message" = "Este tipo de arquivo não é suportado."; -"attachment_unsupported_preview_title" = "Incapaz de previsualizar"; -"message_reply_to_sender_sent_their_location" = "tem compartilhado a localização dela(e)."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ru.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ru.lproj/MatrixKit.strings deleted file mode 100644 index 43914e9ca..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/ru.lproj/MatrixKit.strings +++ /dev/null @@ -1,481 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Регистрация:"; -"login_server_url_placeholder" = "URL (например https://matrix.org)"; -"login_home_server_title" = "URL домашнего сервера:"; -"login_home_server_info" = "Ваш домашний сервер хранит все ваши разговоры и данные о аккаунте"; -"login_identity_server_title" = "Cервер идентификации URL:"; -"login_identity_server_info" = "Серверы идентификации Matrix обеспечивают определение соответствия между email и Matrix ID. В настоящее время существует только https://matrix.org."; -"login_user_id_placeholder" = "Matrix ID (например, @bob:matrix.org или bob)"; -"login_password_placeholder" = "Пароль"; -"login_optional_field" = "не обязательно"; -"login_display_name_placeholder" = "Отображаемое имя (например, Иван Петров)"; -"login_email_info" = "Укажите адрес электронной почты, чтобы другие пользователи могли легко находить вас в Matrix. Кроме того, вы сможете при необходимости восстановить свой пароль."; -"login_email_placeholder" = "Адрес электронной почты"; -"login_prompt_email_token" = "Введите токен подтверждения адреса электронной почты:"; -"login_error_title" = "Не удалось войти"; -"login_error_no_login_flow" = "Не удалось получить информацию для аутентификации с этого домашнего сервера"; -"login_error_registration_is_not_supported" = "Регистрация в настоящее время не поддерживается"; -"login_error_forbidden" = "Неверное имя пользователя или пароль"; -"login_error_unknown_token" = "Указанный токен доступа не распознан"; -"login_error_bad_json" = "Поврежденный JSON"; -"login_error_not_json" = "Не содержит допустимый JSON"; -"login_error_limit_exceeded" = "Отправлено слишком много запросов"; -"login_error_user_in_use" = "Это имя пользователя уже используется"; -"login_error_login_email_not_yet" = "Вы не перешли по высланной в email ссылке"; -"login_leave_fallback" = "Отмена"; -"login_invalid_param" = "Недопустимый параметр"; -"register_error_title" = "Регистрация не удалась"; -// Action -"no" = "Нет"; -"yes" = "Да"; -"abort" = "Отменить"; -"back" = "Назад"; -"close" = "Закрыть"; -"continue" = "Продолжить"; -"discard" = "Отказаться"; -"dismiss" = "Отклонить"; -"retry" = "Попробовать снова"; -"sign_up" = "Зарегистрироваться"; -"submit" = "Отправить"; -"submit_code" = "Отправить код"; -"set_default_power_level" = "Сбросить уровень доступа"; -"set_moderator" = "Сделать модератором"; -"set_admin" = "Сделать администратором"; -"start_chat" = "Начать чат"; -"start_voice_call" = "Начать голосовой вызов"; -"start_video_call" = "Начать видеовызов"; -"mention" = "Упоминание"; -"select_account" = "Выберите аккаунт"; -"attach_media" = "Прикрепить файл из библиотеки"; -"capture_media" = "Сделать фото/видео"; -"invite_user" = "Пригласить пользователя matrix"; -"reset_to_default" = "Восстановить по умолчанию"; -"resend_message" = "Отправить сообщение снова"; -"select_all" = "Выбрать все"; -"cancel_upload" = "Отменить отправку"; -"cancel_download" = "Отменить загрузку"; -"show_details" = "Показать детали"; -"answer_call" = "Ответить на вызов"; -"reject_call" = "Отклонить вызов"; -"end_call" = "Завершить вызов"; -"ignore" = "Игнорировать"; -"unignore" = "Перестать игнорировать"; -// Events formatter -"notice_avatar_changed_too" = "(аватар также изменился)"; -"notice_room_name_removed" = "%@ удалил(а) название комнаты"; -"notice_room_topic_removed" = "%@ удалил(а) тему"; -"notice_event_redacted_reason" = " [причина: %@]"; -"notice_profile_change_redacted" = "%@ обновил(а) свой профиль %@"; -"notice_room_created" = "%@ создал(а) и настроил(а) комнату."; -"notice_room_power_level_intro" = "Уровень доступа членов комнаты:"; -"notice_room_power_level_acting_requirement" = "Минимальные уровни доступа пользователя для совершения действия:"; -"notice_room_power_level_event_requirement" = "Минимальные уровни доступа, связанные с событиями:"; -"notice_encrypted_message" = "Зашифрованное сообщение"; -"notice_encryption_enabled" = "%@ включил(а) сквозное шифрование (алгоритм %@)"; -"notice_image_attachment" = "прикрепленное изображение"; -"notice_audio_attachment" = "прикрепленное аудио"; -"notice_video_attachment" = "прикрепленное видео"; -"notice_location_attachment" = "прикрепленное местоположение"; -"notice_file_attachment" = "прикрепленный файл"; -"notice_invalid_attachment" = "недопустимое вложение"; -"notice_unsupported_attachment" = "Неподдерживаемое вложение: %@"; -"notice_redaction" = "%@ отредактировал(а) событие (id: %@)"; -"notice_error_unsupported_event" = "Неподдерживаемое событие"; -"notice_error_unexpected_event" = "Непредвиденное событие"; -"notice_error_unknown_event_type" = "Неизвестный тип события"; -"notice_room_history_visible_to_anyone" = "%@ сделал(а) будущую историю комнату видимой всем."; -"notice_room_history_visible_to_members" = "%@ сделал(а) будущую историю комнаты видимой всем членам комнаты."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ сделал(а) будущую историю комнаты видимой всем членам комнаты с момента их приглашения."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ сделал(а) будущую историю комнаты видимой всем членам комнаты с момента их входа."; -"notice_crypto_unable_to_decrypt" = "** Не удалось расшифровать: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "Сессия отправителя не отправила вам ключи для этого сообщения."; -// room display name -"room_displayname_empty_room" = "Пустая комната"; -"room_displayname_two_members" = "%@ и %@"; -"room_displayname_more_than_two_members" = "%@ и %u другие"; -// Settings -"settings" = "Настройки"; -"settings_enable_inapp_notifications" = "Включить уведомления в приложении"; -"settings_enable_push_notifications" = "Включить push-уведомления"; -"settings_enter_validation_token_for" = "Введите токен подтверждения для %@:"; -"notification_settings_room_rule_title" = "Комната: '%@'"; -// Devices -"device_details_title" = "Информация о сессии\n"; -"device_details_name" = "Публичное имя\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Последняя активность\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "Публичные имена сессий видны людям, с которыми вы общаетесь"; -"device_details_delete_prompt_title" = "Аутентификация"; -"room_event_encryption_info_event" = "Информация о событии\n"; -"room_event_encryption_info_event_user_id" = "ID пользователя\n"; -"room_event_encryption_info_event_algorithm" = "Алгоритм\n"; -"room_event_encryption_info_event_session_id" = "ID сессии\n"; -"room_event_encryption_info_event_decryption_error" = "Ошибка расшифровки\n"; -"room_event_encryption_info_event_unencrypted" = "незашифровано"; -"room_event_encryption_info_device" = "\nИнформация о сессии отправителя\n"; -"room_event_encryption_info_device_unknown" = "неизвестная сессия\n"; -"room_event_encryption_info_device_name" = "Публичное имя\n"; -"room_creation_participants_title" = "Участники:"; -// Room -"room_please_select" = "Пожалуйста, выберите комнату"; -"room_error_join_failed_title" = "Не удалось войти в комнату"; -"room_left" = "Вы покинули комнату"; -// Room members -"room_member_ignore_prompt" = "Вы уверены, что хотите скрыть все сообщения этого пользователя?"; -"room_member_power_level_prompt" = "Вы не сможете отменить это действие, поскольку пользователь получит такой же уровень доступа, как и у вас. \nВы уверены?"; -"power_level" = "Уровень доступа"; -// Country picker -"country_picker_title" = "Выберите страну"; -// Language picker -"language_picker_title" = "Выберите язык"; -"language_picker_default_language" = "По умолчанию (%@)"; -"notice_room_join" = "%@ вошел(ла)"; -"notice_room_leave" = "%@ вышел(ла)"; -"notice_room_reject" = "%@ отклонил(а) приглашение"; -"notice_room_kick" = "%@ выкинул(а) %@"; -"notice_room_unban" = "%@ разблокировал(а) %@"; -"notice_room_ban" = "%@ заблокировал(а) %@"; -"notice_room_withdraw" = "%@ отозвал(а) приглашение %@"; -"notice_room_reason" = ". Причина: %@"; -"notice_avatar_url_changed" = "%@ изменил(а) свой аватар"; -"notice_display_name_set" = "%@ сделал(а) своим отображаемым именем %@"; -"notice_display_name_changed_from" = "%@ изменил(а) свое отображаемое имя с %@ на %@"; -"notice_display_name_removed" = "%@ удалил(а) свое отображаемое имя"; -"notice_topic_changed" = "%@ изменил(а) тему на \"%@\"."; -"notice_room_name_changed" = "%@ изменил(а) название комнаты на %@."; -"notice_placed_voice_call" = "%@ совершил(а) голосовой вызов"; -"notice_placed_video_call" = "%@ совершил(а) видео вызов"; -"notice_answered_video_call" = "%@ ответил(а) на вызов"; -"notice_ended_video_call" = "%@ завершил(а) вызов"; -"notice_conference_call_request" = "%@ запросил(а) голосовую конференцию"; -"notice_conference_call_started" = "голосовая конференция началась"; -"notice_conference_call_finished" = "голосовая конференция завершилась"; -// button names -"ok" = "OK"; -"cancel" = "Отмена"; -"save" = "Сохранить"; -"leave" = "Покинуть"; -"send" = "Отправить"; -"copy_button_name" = "Скопировать"; -"resend" = "Переотправить"; -"redact" = "Удалить"; -"share" = "Поделиться"; -"set_power_level" = "Установить уровень мощности"; -"delete" = "Удалить"; -// actions -"action_logout" = "Выйти"; -"create_room" = "Создать комнату"; -"login" = "Войти"; -"create_account" = "Создать аккаунт"; -"membership_invite" = "Приглашен"; -"membership_leave" = "Покинул"; -"membership_ban" = "Заблокирован"; -"num_members_one" = "%@ пользователь"; -"num_members_other" = "%@ пользователей"; -"invite" = "Пригласить"; -"kick" = "Выкинуть"; -"ban" = "Заблокировать"; -"unban" = "Разблокировать"; -// Room creation -"room_creation_name_title" = "Название комнаты:"; -"login_use_fallback" = "Использовать резервную страницу"; -"login_error_do_not_support_login_flows" = "В настоящее время мы не поддерживаем потоки авторизации, определенных данным домашним сервером"; -"login_error_forgot_password_is_not_supported" = "\"Забытый пароль\" в настоящее время не поддерживается"; -"notice_event_redacted" = "<отредактировано%@>"; -"notice_event_redacted_by" = " от %@"; -"notice_room_join_rule" = "Правило присоединения: %@"; -"device_details_delete_prompt_message" = "Для этой операции требуется дополнительная аутентификация.\nЧтобы продолжить, введите свой пароль."; -// Encryption information -"room_event_encryption_info_title" = "Сведения о сквозном шифровании\n\n"; -"room_event_encryption_info_event_identity_key" = "Ключ идентификации Curve25519\n"; -"room_event_encryption_info_event_fingerprint_key" = "Требуемый ключ цифрового отпечатка Ed25519\n"; -"room_event_encryption_info_event_none" = "никого нет"; -"room_event_encryption_info_device_id" = "Идентификатор устройства\n"; -"room_event_encryption_info_device_verification" = "Верификация\n"; -"room_event_encryption_info_device_fingerprint" = "Отпечаток Ed25519\n"; -"room_event_encryption_info_device_verified" = "Подтверждено"; -"room_event_encryption_info_device_not_verified" = "НЕ подтверждено"; -"room_event_encryption_info_device_blocked" = "В черном списке"; -"room_event_encryption_info_verify" = "Проверка..."; -"room_event_encryption_info_unverify" = "Отменить верификацию"; -"room_event_encryption_info_block" = "Черный список"; -"room_event_encryption_info_unblock" = "Удалить из черного списка"; -"room_event_encryption_verify_title" = "Проверить сессию\n\n"; -"room_event_encryption_verify_message" = "Для верификации сессии, пожалуйста, свяжитесь с владельцем используя другие методы коммуникации (например, лично или по телефону) и попросите его подтвердить, что он видит такой же ключ как написанный ниже:\n\n\tИмя сессии: %@\n\tИдентификатор сессии: %@\n\tКлюч сессии: %@\n\nЕсли совпадают, то нажмите кнопку верификации ниже. Если нет, значит кто-то перехватил эту сессию и вы, скорее всего, захотите внести его в черный список.\n\nВ будущем процесс верификации будет усложнен."; -"room_event_encryption_verify_ok" = "Подтвердить"; -// Account -"account_save_changes" = "Сохранить изменения"; -"account_linked_emails" = "Связанные адреса электронной почты"; -"account_link_email" = "Связанный адрес электронной почты"; -"account_email_validation_title" = "Ожидание проверки"; -"account_email_validation_message" = "Проверьте свою электронную почту и нажмите на содержащуюся ссылку. После этого нажмите кнопку Продолжить."; -"account_email_validation_error" = "Не удалось проверить адрес электронной почты. Проверьте свою электронную почту и нажмите на содержащуюся ссылку. Когда это будет сделано, нажмите Продолжить"; -"account_msisdn_validation_title" = "Ожидание проверки"; -"account_msisdn_validation_message" = "Мы отправили SMS с кодом активации. Введите этот код в поле ниже."; -"account_msisdn_validation_error" = "Не удалось проверить номер телефона."; -"account_error_display_name_change_failed" = "Не удалось изменить отображаемое имя"; -"account_error_picture_change_failed" = "Не удалось изменить аватар"; -"account_error_matrix_session_is_not_opened" = "Сессия Matrix не открыта"; -"account_error_email_wrong_title" = "Неверный адрес электронной почты"; -"account_error_email_wrong_description" = "Похоже это недействительный адрес электронной почты"; -"account_error_msisdn_wrong_title" = "Некорректный номер телефона"; -"account_error_msisdn_wrong_description" = "Это недействительный номер телефона"; -"room_creation_name_placeholder" = "(напр. lunchGroup)"; -"room_creation_alias_title" = "Псевдоним комнаты:"; -"room_creation_alias_placeholder" = "(напр. #foo:primer.ru)"; -"room_creation_alias_placeholder_with_homeserver" = "(напр. #foo%@)"; -"room_creation_participants_placeholder" = "(напр. @boris:homeserver1; @ivan:homeserver2...)"; -"room_error_join_failed_empty_room" = "В настоящее время невозможно присоединиться в пустую комнату."; -"room_error_name_edition_not_authorized" = "У вас нет прав на редактирование названия этой комнаты"; -"room_error_topic_edition_not_authorized" = "У вас нет прав редактировать тему этой комнаты"; -"room_error_cannot_load_timeline" = "Не удалось загрузить хронологию"; -"room_error_timeline_event_not_found_title" = "Не удалось загрузить метку из хронологии"; -"room_error_timeline_event_not_found" = "Приложение пыталось загрузить конкретную позицию хронологии этой комнаты, но не смогло ее найти"; -"room_no_power_to_create_conference_call" = "Вы должны иметь право выдачи приглашений, чтобы начать конференцию в этой комнате"; -"room_no_conference_call_in_encrypted_rooms" = "Групповые вызовы не поддерживаются в зашифрованных комнатах"; -// Attachment -"attachment_size_prompt" = "Вы хотите отправить как:"; -"attachment_original" = "Фактический размер (%@)"; -"attachment_small" = "Маленький (%@)"; -"attachment_medium" = "Средний (%@)"; -"attachment_large" = "Большой (%@)"; -"attachment_cancel_download" = "Отменить загрузку?"; -"attachment_cancel_upload" = "Отменить отправку?"; -"attachment_multiselection_size_prompt" = "Вы хотите отправить изображения как:"; -"attachment_multiselection_original" = "Фактический размер"; -"attachment_e2e_keys_file_prompt" = "Этот файл содержит ключи шифрования, экспортированные из клиента Matrix.\nВы хотите просмотреть содержимое файла или импортировать содержащиеся в нем ключи?"; -"attachment_e2e_keys_import" = "Импорт..."; -// Contacts -"contact_mx_users" = "Пользователи Matrix"; -"contact_local_contacts" = "Локальные контакты"; -// Search -"search_no_results" = "Нет результатов"; -// Time -"format_time_s" = "с"; -"format_time_m" = "м"; -"format_time_h" = "ч"; -"format_time_d" = "д"; -// E2E import -"e2e_import_room_keys" = "Импорт ключей комнаты"; -"e2e_import_prompt" = "Этот процесс позволит вам импортировать ключи шифрования, которые вы экспортировали ранее из клиента Matrix. Это позволит вам расшифровать историю чата.\nФайл защищен парольной фразой. Введите ее для расшифровки файла."; -"e2e_import" = "Импорт"; -"e2e_passphrase_enter" = "Введите парольную фразу"; -// E2E export -"e2e_export_room_keys" = "Экспорт ключей комнаты"; -"notice_feedback" = "Обратная связь (id: %@): %@"; -"e2e_export_prompt" = "Этот процесс позволяет вам экспортировать ключи для сообщений, которые вы получили в комнатах с шифрованием, в локальный файл. Вы сможете импортировать эти ключи в другой клиент Matrix чтобы расшифровать эти сообщения.\nЭкспортированный файл позволит любому пользователю расшифровать и зашифровать сообщения, которые вы видите, поэтому вы должны быть крайне осторожны и держать файл в надежном месте."; -"e2e_export" = "Экспорт"; -"e2e_passphrase_confirm" = "Подтвердить парольную фразу"; -"e2e_passphrase_empty" = "Парольная фраза не может быть пустой"; -"e2e_passphrase_not_match" = "Парольные фразы должны совпадать"; -// Others -"user_id_title" = "Идентификатор пользователя:"; -"offline" = "не в сети"; -"unsent" = "Не отправлено"; -"error" = "Ошибка"; -"not_supported_yet" = "Пока не поддерживается"; -"default" = "по умолчанию"; -"network_error_not_reachable" = "Проверьте подключение к сети"; -"user_id_placeholder" = "напр.: @boris:homeserver"; -"ssl_homeserver_url" = "URL-адрес домашнего сервера: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Для видеозвонков требуется доступ к камере, но %@ не имеет разрешения на ее использование"; -"microphone_access_not_granted_for_call" = "Для звонков требуется доступ к микрофону, но %@ не имеет разрешения на его использование"; -"local_contacts_access_not_granted" = "Поиск пользователей из локальных контактов требует доступа к вашим контактам, но %@ не имеет разрешения на их использование"; -"local_contacts_access_discovery_warning_title" = "Обнаружение пользователей"; -"local_contacts_access_discovery_warning" = "Чтобы обнаружить контакты, уже использующие Matrix, %@ может отправлять адреса электронной почты и номера телефонов в вашей адресной книге на выбранный вами сервер идентификации Matrix. Там, где это поддерживается, личные данные перед отправкой хэшируются - пожалуйста, ознакомьтесь с политикой конфиденциальности вашего сервера идентификации для более подробной информации."; -"notice_room_invite" = "%@ пригласил(а) %@"; -"notice_room_third_party_invite" = "%@ отправил(а) приглашение для %@ войти в комнату"; -"notice_room_third_party_registered_invite" = "%@ принял(а) приглашение от %@"; -"notice_room_aliases" = "Псевдонимы комнаты: %@"; -"private" = "Приватный"; -"public" = "Публичный"; -"view" = "Просмотр"; -"message_unsaved_changes" = "Имеются несохраненные изменения. Они будут потеряны."; -// Login Screen -"login_error_already_logged_in" = "Уже вошли"; -"login_error_must_start_http" = "URL-адрес должен начинаться с http[s]://"; -// room details dialog screen -"room_details_title" = "Информация о комнате"; -// contacts list screen -"invitation_message" = "Я бы хотел поговорить с вами в Matrix. Пожалуйста, посетите веб-сайт https://matrix.org для получения дополнительной информации."; -// Settings screen -"settings_title_config" = "Конфигурация"; -"settings_title_notifications" = "Уведомления"; -// Notification settings screen -"notification_settings_disable_all" = "Отключить все уведомления"; -"notification_settings_enable_notifications" = "Включить уведомления"; -"notification_settings_enable_notifications_warning" = "Все уведомления отключены для всех устройств."; -"notification_settings_global_info" = "Настройки уведомлений сохраняются в учетной записи и распространяются на все клиенты, которые их поддерживают (включая настольный компьютер).\n\nПравила применяются по порядку; будет использовано первое подходящее.\nТаким образом: уведомления для сообщений приоритетней уведомлений для комнат, которые, в свою очередь, приоритетней уведомлений для отправителей.\nДля нескольких правил одинакового типа будет использован первый по счету."; -"notification_settings_always_notify" = "Всегда уведомлять"; -"notification_settings_never_notify" = "Никогда не уведомлять"; -"notification_settings_word_to_match" = "соответствие слов"; -"notification_settings_custom_sound" = "Пользовательский звук"; -"notification_settings_sender_hint" = "@user:domain.com"; -"notification_settings_select_room" = "Выберите комнату"; -"notification_settings_other_alerts" = "Другие предупреждения"; -"notification_settings_contain_my_user_name" = "Уведомлять звуком о сообщениях, содержащих мое имя пользователя"; -"notification_settings_contain_my_display_name" = "Уведомлять звуком о сообщениях, содержащих мое отображаемое имя"; -"notification_settings_just_sent_to_me" = "Уведомлять звуком о сообщениях, отправленных только мне"; -"notification_settings_invite_to_a_new_room" = "Уведомлять меня о приглашении в новую комнату"; -"notification_settings_people_join_leave_rooms" = "Уведомлять, когда пользователи заходят или выходят из комнат"; -"notification_settings_receive_a_call" = "Уведомлять о получении звонка"; -"notification_settings_suppress_from_bots" = "Подавлять уведомления от ботов"; -"notification_settings_by_default" = "По умолчанию..."; -"notification_settings_notify_all_other" = "Уведомлять о всех других сообщениях/комнатах"; -// gcm section -"settings_config_home_server" = "Домашний сервер: %@"; -"settings_config_identity_server" = "Сервер идентификации: %@"; -"settings_config_user_id" = "Идентификатор пользователя: %@"; -// call string -"call_waiting" = "Ожидание..."; -"call_connecting" = "Соединение…"; -"call_ended" = "Вызов завершен"; -"call_ring" = "Вызов..."; -"incoming_video_call" = "Входящий видеовызов"; -"incoming_voice_call" = "Входящий голосовой вызов"; -"call_invite_expired" = "Срок действия приглашения на звонок истек"; -// unrecognized SSL certificate -"ssl_trust" = "Доверять"; -"ssl_logout_account" = "Выход"; -"ssl_remain_offline" = "Игнорировать"; -"ssl_could_not_verify" = "Не удалось проверить подлинность удаленного сервера."; -"ssl_cert_not_trust" = "Это может означать, что кто-то злонамеренно перехватывает ваш трафик или что ваш телефон не доверяет сертификату, предоставленному удаленным сервером."; -"ssl_unexpected_existing_expl" = "Сертификат изменился у пользователя, который был доверенным для вашего устройства. Это ОЧЕНЬ НЕОБЫЧНО. Рекомендуется НЕ ПРИНИМАТЬ новый сертификат."; -"ssl_only_accept" = "Примите сертификат ТОЛЬКО в том случае, если администратор сервера опубликовал отпечаток, соответствующий приведенному выше."; -"ssl_fingerprint_hash" = "Отпечаток (%@):"; -"notification_settings_per_word_notifications" = "Уведомления по одному слову"; -"notification_settings_per_word_info" = "Слова нечувствительны к регистру и могут содержать * спецсимвол. Так:\nFoo соответствует строке foo, окруженной разделителями слов (например, пунктуацией и пробелом или началом/концом строки).\nFoo * соответствует любому такому слову, которое начинается с foo.\n* Foo * соответствует любому такому слову, которое включает в себя 3 буквы foo."; -"notification_settings_highlight" = "Подсветка"; -"notification_settings_per_room_notifications" = "Уведомления для каждой комнаты"; -"notification_settings_per_sender_notifications" = "Уведомления для отдельного собеседника"; -"ssl_cert_new_account_expl" = "Если администратор сервера сказал, что это ожидается, убедитесь, что отпечаток ниже соответствует предоставленному им отпечатку."; -"ssl_expected_existing_expl" = "Сертификат изменился с ранее доверенного на один, которому не доверяют. Возможно, сервер обновил свой сертификат. Обратитесь к администратору сервера за ожидаемым отпечатком."; -"search_searching" = "Выполняется поиск..."; -"login_mobile_device" = "Мобильное устройство"; -"login_tablet_device" = "Планшет"; -"login_desktop_device" = "Компьютер"; -"notice_room_related_groups" = "Группы, связанные с этой комнатой: %@"; -// Groups -"group_invite_section" = "Приглашения"; -"group_section" = "Группы"; -"notice_sticker" = "стикер"; -"notice_in_reply_to" = "В ответ на"; -"error_common_message" = "Произошла ошибка. Пожалуйста, повторите попытку позже."; -// Reply to message -"message_reply_to_sender_sent_an_image" = "отправил(а) изображение."; -"message_reply_to_sender_sent_a_video" = "отправил(а) видео."; -"message_reply_to_sender_sent_an_audio_file" = "отправил(а) аудиофайл."; -"message_reply_to_sender_sent_a_file" = "отправил(а) файл."; -"message_reply_to_message_to_reply_to_prefix" = "В ответ на"; -"login_error_resource_limit_exceeded_title" = "Превышен лимит ресурса"; -"login_error_resource_limit_exceeded_contact_button" = "Связаться с администратором"; -"login_error_resource_limit_exceeded_message_default" = "Этот сервер превысил один из лимитов ресурсов."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Этот сервер достиг ежемесячного лимита активных пользователей."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nПожалуйста свяжитесь с вашим администратором что бы продолжить пользоваться этим сервисом."; -"e2e_passphrase_create" = "Создать парольную фразу"; -"account_error_push_not_allowed" = "Уведомления не разрешены"; -"notice_room_third_party_revoked_invite" = "%@ отозвал приглашение для %@ на вступление в комнату"; -"device_details_rename_prompt_title" = "Имя Сессии"; -"notice_encryption_enabled_ok" = "%@ включил сквозное шифрование."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ включил сквозное шифрование (нераспознанный алгоритм %2$@)."; -// Notice Events with "You" -"notice_room_invite_by_you" = "Вы пригласили %@"; -"notice_room_invite_you" = "%@ пригласил Вас"; -"notice_room_third_party_invite_by_you" = "Вы отправили приглашение %@ вступить в комнату"; -"notice_room_third_party_registered_invite_by_you" = "Вы приняли приглашение для @%"; -"notice_room_third_party_revoked_invite_by_you" = "Вы отозвали приглашение для %@ вступить в комнату"; -"notice_room_join_by_you" = "Вы вошли"; -"notice_room_leave_by_you" = "Вы вышли"; -"notice_room_reject_by_you" = "Вы отклонили приглашение"; -"notice_room_kick_by_you" = "Вы исключили %@"; -"notice_room_unban_by_you" = "Вы разбанили %@"; -"notice_room_ban_by_you" = "Вы забанили %@"; -"notice_avatar_url_changed_by_you" = "Вы сменили свой аватар"; -"notice_display_name_set_by_you" = "Вы установили своё отображаемое имя как %@"; -"notice_display_name_changed_from_by_you" = "Вы сменили своё отображаемое имя с %@ на %@"; -"notice_display_name_removed_by_you" = "Вы удалили своё отображаемое имя"; -"notice_topic_changed_by_you" = "Вы сменили тему на \"%@\"."; -"notice_room_name_changed_by_you" = "Вы сменили имя комнаты на %@."; -"notice_room_withdraw_by_you" = "Вы отозвали приглашение %@"; -"notice_placed_voice_call_by_you" = "Вы начали звонок"; -"notice_placed_video_call_by_you" = "Вы начали видеозвонок"; -"notice_answered_video_call_by_you" = "Вы ответили на звонок"; -"notice_ended_video_call_by_you" = "Вы закончили звонок"; -"notice_conference_call_request_by_you" = "Вы запросили VoIP конференцию"; -"notice_room_name_removed_by_you" = "Вы удалили название комнаты"; -"notice_room_topic_removed_by_you" = "Вы удалили эту тему"; -"notice_event_redacted_by_you" = " вами"; -"notice_profile_change_redacted_by_you" = "Вы обновили свой профиль %@"; -"notice_room_created_by_you" = "Вы создали и настроили комнату."; -"notice_encryption_enabled_ok_by_you" = "Вы активировали сквозное шифрование."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Вы активировали сквозное шифрование (неопознанный алгоритм %@)."; -"notice_redaction_by_you" = "Вы отредактировали событие (id: %@)"; -"notice_room_history_visible_to_anyone_by_you" = "Вы сделали будущую историю комнаты видимой для всех."; -"notice_room_history_visible_to_members_by_you" = "Вы сделали будущую историю комнаты видимой для всех членов комнаты."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Вы сделали будущую историю комнаты видимой для всех членов комнаты, с того момента, как они приглашены."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Вы сделали будущую историю комнаты видимой для всех членов комнаты, с того момента, как они присоединились."; -// New -"notice_room_join_rule_invite" = "%@ сделал(а) комнату доступной только по приглашению."; -"notice_room_join_rule_invite_by_you" = "Вы сделали комнату только по приглашению."; -"notice_room_join_rule_public" = "%@ сделал(а) комнату публичной."; -"notice_room_join_rule_public_by_you" = "Вы сделали комнату публичной."; -"notice_room_name_removed_for_dm" = "%@ удалил(а) название"; -"notice_room_created_for_dm" = "%@ вошёл(ла)."; -"notice_room_join_rule_invite_for_dm" = "%@ сделал(а) доступ только по приглашению."; -"notice_room_join_rule_invite_by_you_for_dm" = "Вы сделали доступ только по приглашению."; -"notice_room_join_rule_public_for_dm" = "%@ сделал(а) комнату публичной."; -"notice_room_join_rule_public_by_you_for_dm" = "Вы сделали комнату публичной."; -"notice_room_power_level_intro_for_dm" = "Уровень доступа членов комнаты:"; -"notice_room_aliases_for_dm" = "Псевдонимы: %@"; -"notice_room_history_visible_to_members_for_dm" = "%@ сделал(а) будущую историю сообщений видимой всем членам комнаты."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ сделал(а) будущие сообщения видимыми для всех с момента их приглашения."; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ сделал(а) будущие сообщения видимыми для всех с момента их присоединения."; -"room_left_for_dm" = "Вы вышли"; -"notice_room_third_party_invite_for_dm" = "%@ пригласил(а) %@"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ отозвал(а) приглашение %@"; -"notice_room_name_changed_for_dm" = "%@ изменил(а) название на %@."; -"notice_room_third_party_invite_by_you_for_dm" = "Вы пригласили %@"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Вы отозвали приглашение %@"; -"notice_room_name_changed_by_you_for_dm" = "Вы сменили название на %@."; -"notice_room_name_removed_by_you_for_dm" = "Вы удалили название"; -"notice_room_created_by_you_for_dm" = "Вы вошли."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Вы сделали будущие сообщения видимыми для всех участников комнаты."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Вы сделали будущие сообщения видимыми для всех с момента их приглашения."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Вы сделали будущие сообщения видимыми для всех с момента их присоединения."; -"call_more_actions_dialpad" = "Панель набора номера"; -"call_more_actions_transfer" = "Перевод"; -"call_more_actions_audio_use_device" = "Динамик устройства"; -"call_more_actions_audio_use_headset" = "Использовать звук гарнитуры"; -"call_more_actions_change_audio_device" = "Сменить аудиоустройство"; -"call_more_actions_unhold" = "Возобновить"; -"call_more_actions_hold" = "Удерживать"; -"call_holded" = "Вы поставили вызов на удержание"; -"call_remote_holded" = "%@ поставил(а) вызов на удержание"; -"notice_declined_video_call_by_you" = "Вы отменили вызов"; -"notice_declined_video_call" = "%@ отменил(а) этот вызов"; -"resume_call" = "Возобновить"; -"call_transfer_to_user" = "Передача с %@"; -"call_consulting_with_user" = "Консультация с %@"; -"call_video_with_user" = "Видеовызов с %@"; -"call_voice_with_user" = "Голосовой вызов с %@"; -"call_ringing" = "Звонок…"; -"microphone_access_not_granted_for_voice_message" = "Голосовые сообщения требуют доступа к микрофону, но у %@ нет разрешения на его использование"; -"e2e_passphrase_too_short" = "Слишком короткая парольная фраза (Длина парольной фразы должна быть не менее %d символов)"; -"message_reply_to_sender_sent_a_voice_message" = "отправил(а) голосовое сообщение."; -"attachment_large_with_resolution" = "Большой %@ (~%@)"; -"attachment_medium_with_resolution" = "Средний %@ (~%@)"; -"attachment_small_with_resolution" = "Маленький %@ (~%@)"; -"attachment_size_prompt_message" = "Это можно отключить в настройках."; -"attachment_size_prompt_title" = "Подтвердите размер для отправки"; -"auth_reset_password_error_not_found" = "Не найдено"; -"auth_reset_password_error_unauthorized" = "Неавторизованный"; -"auth_invalid_user_name" = "Недопустимое имя пользователя"; -"auth_username_in_use" = "Имя пользователя занято"; -"rename" = "Переименовать"; -"room_displayname_all_other_members_left" = "%@ (Вышел)"; -"attachment_unsupported_preview_message" = "Этот тип файла не поддерживается."; -"attachment_unsupported_preview_title" = "Не удалось показать предварительный просмотр"; -"message_reply_to_sender_sent_their_location" = "поделились своим местоположением."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/si.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/si.lproj/MatrixKit.strings deleted file mode 100644 index 5efc3e3d5..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/si.lproj/MatrixKit.strings +++ /dev/null @@ -1,25 +0,0 @@ - - -"invite" = "ආරාධනා"; -"settings_title_notifications" = "දැනුම්දීම්"; -"notification_settings_sender_hint" = "@පරිශීලක:වසම.ලංකා"; -"login_password_placeholder" = "මුරපදය"; -"login_leave_fallback" = "අවලංගු කරන්න"; -"login_email_placeholder" = "වි-තැපැල් ලිපිනය"; -"login_identity_server_title" = "අනන්‍යතා සේවාදායකයේ ඒ.ස.නි.:"; -"login_home_server_info" = "ඔබගේ මූලික සේවාදායකය ඔබගේ සියලු සංවාද සහ ගිණුමේ දත්ත ගබඩා කරයි"; -"login_home_server_title" = "මූලික සේවාදායකයේ ඒ.ස.නි.:"; -"login_server_url_placeholder" = "ඒ.ස.නි.(URL) (උදා. https://matrix.org)"; - -// Login Screen -"login_create_account" = "ගිණුම සාදන්න:"; -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "මැට්‍රික්ස්"; -"save" = "සුරකින්න"; -"cancel" = "අවලංගු කරන්න"; -"leave" = "හැරයන්න"; -"continue" = "ඉදිරියට"; -"back" = "ආපසු"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/sk.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/sk.lproj/MatrixKit.strings deleted file mode 100644 index 0d7cc424a..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/sk.lproj/MatrixKit.strings +++ /dev/null @@ -1,557 +0,0 @@ - - -"login_error_login_email_not_yet" = "Zatiaľ ste neklikli na odkaz zaslaný emailom"; -"login_error_user_in_use" = "Toto používateľské meno sa už používa"; -"login_error_limit_exceeded" = "Bol prekročený maximálny počet požiadaviek"; -"room_left_for_dm" = "Odišli ste"; - -// Room creation -"room_creation_name_title" = "Názov miestnosti:"; -"account_msisdn_validation_title" = "Čaká sa na overenie"; -"account_email_validation_title" = "Čaká sa na overenie"; - -// Account -"account_save_changes" = "Uložiť zmeny"; -"room_event_encryption_verify_title" = "Overiť reláciu\n\n"; -"room_event_encryption_info_device_not_verified" = "Neoverené"; -"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_unknown" = "neznáma relácia\n"; -"room_event_encryption_info_event_decryption_error" = "Chyba dešifrovania\n"; -"room_event_encryption_info_event_session_id" = "ID relácie\n"; -"room_event_encryption_info_event_user_id" = "ID používateľa:\n"; -"room_event_encryption_info_event" = "Informácie o udalosti\n"; -"device_details_rename_prompt_title" = "Názov relácie"; -"device_details_last_seen" = "Naposledy videné\n"; -"device_details_name" = "Verejný názov\n"; - -// Devices -"device_details_title" = "Informácie o relácii\n"; -"room_displayname_all_other_members_left" = "%@ (Odišiel)"; - -// room display name -"room_displayname_empty_room" = "Prázdna miestnosť"; -"notice_invalid_attachment" = "neplatná príloha"; -"notice_file_attachment" = "súborová attachment"; -"notice_video_attachment" = "video príloha"; -"notice_audio_attachment" = "zvuková príloha"; -"notice_image_attachment" = "obrázková príloha"; -"notice_encrypted_message" = "Šifrovaná správa"; -"notice_room_created_for_dm" = "%@ sa pripojil/a."; -"end_call" = "Ukončiť hovor"; -"reject_call" = "Odmietnuť hovor"; -"show_details" = "Zobraziť podrobnosti"; -"cancel_download" = "Zrušiť sťahovanie"; -"cancel_upload" = "Zrušiť nahrávanie"; -"select_all" = "Vybrať všetko"; -"start_chat" = "Začať konverzáciu"; -"sign_up" = "Zaregistrovať sa"; -"login_error_resource_limit_exceeded_contact_button" = "Kontaktovať správcu"; -"register_error_title" = "Registrácia zlyhala"; -"login_invalid_param" = "Neplatný parameter"; -"login_error_bad_json" = "Chybné údaje vo formáte JSON"; -"login_error_forbidden" = "Neplatné používateľské meno/heslo"; - -// Room Screen - -// general errors - -// Home Screen - -// Last seen time - -// call events - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /console/src/main/res/values/strings.xml. -*/ - - -// titles - -// button names -"ok" = "OK"; -"login_error_title" = "Prihlásenie zlyhalo"; -"login_prompt_email_token" = "Zadajte svoj e-mailový overovací token:"; -"login_email_info" = "Zadanie e-mailovej adresy umožní ostatným používateľom ľahšie vás nájsť v službe Matrix a umožní vám v budúcnosti obnoviť heslo."; -"login_display_name_placeholder" = "Zobrazované meno (napr. Fero Novák)"; -"login_user_id_placeholder" = "Matrix ID (napr. @fero:matrix.org alebo fero)"; -"login_identity_server_info" = "Matrix poskytuje servery totožnosti na sledovanie, ktoré e-maily atď. patria k jednotlivým Matrix ID. V súčasnosti existuje iba stránka https://matrix.org."; -"login_home_server_info" = "Váš domovský server ukladá všetky vaše konverzácie a údaje o účte"; -"ssl_fingerprint_hash" = "Odtlačok (%s):"; -"call_more_actions_dialpad" = "Číselník"; -"call_ended" = "Hovor ukončený"; - -// gcm section -"settings_config_home_server" = "Domovský server: %@"; -"notification_settings_custom_sound" = "Vlastný zvuk"; -"notification_settings_always_notify" = "Vždy oznamovať"; -"notification_settings_never_notify" = "Nikdy neoznamovať"; - -// members list Screen - -// accounts list Screen - -// image size selection - -// invitation members list Screen - -// room creation dialog Screen - -// room info dialog Screen - -// room details dialog screen -"room_details_title" = "Podrobnosti o miestnosti"; -"num_members_other" = "%@ používatelia"; -"num_members_one" = "%@ používateľ"; -"create_account" = "Vytvoriť účet"; -"create_room" = "Vytvoriť miestnosť"; -"notice_room_leave_by_you" = "Odišli ste"; -"notice_room_join_by_you" = "Vstúpili ste"; -"notice_room_leave" = "%@ odišiel/a"; -"notice_room_join" = "%@ sa pripojil/a"; -"language_picker_default_language" = "Predvolené (%@)"; -"user_id_placeholder" = "napr.: @fero:domovskyserver"; -"power_level" = "Úroveň právomoci"; - -// Others -"user_id_title" = "ID používateľa:"; -"e2e_passphrase_create" = "Vytvoriť prístupovú frázu"; -"e2e_passphrase_confirm" = "Potvrďte prístupovú frázu"; -"e2e_passphrase_enter" = "Zadajte prístupovú frázu"; - -// Search -"search_no_results" = "Žiadne výsledky"; -"contact_local_contacts" = "Lokálne kontakty"; - -// Contacts -"contact_mx_users" = "Používatelia Matrix"; -"attachment_multiselection_original" = "Aktuálna veľkosť"; -"login_optional_field" = "voliteľné"; -"ssl_remain_offline" = "Ignorovať"; -"ssl_logout_account" = "Odhlásiť sa"; -"call_ringing" = "Vyzváňanie…"; - -// Settings keys - -// call string -"call_connecting" = "Pripájanie…"; -"notification_settings_sender_hint" = "@pouzivatel:domena.sk"; - -// Settings screen -"settings_title_config" = "Nastavenie"; -"unban" = "Zrušiť zákaz"; -"ban" = "Zakázať"; -"kick" = "Vylúčiť"; -"invite" = "Pozvať"; -"membership_ban" = "Vylúčený"; -"membership_invite" = "Pozvaní"; -"login" = "Prihlásiť sa"; - -// actions -"action_logout" = "Odhlásiť sa"; -"rename" = "Premenovať"; -"view" = "Zobraziť"; -"delete" = "Vymazať"; -"share" = "Zdieľať"; -"redact" = "Odstrániť"; -"resend" = "Odoslať znovu"; -"copy_button_name" = "Kopírovať"; -"send" = "Odoslať"; -"leave" = "Opustiť"; -"save" = "Uložiť"; -"cancel" = "Zrušiť"; -"private" = "Súkromné"; -"public" = "Verejné"; -"default" = "predvolené"; -"error" = "Chyba"; -"unsent" = "Neodoslané"; -"offline" = "nedostupný"; -"e2e_export" = "Exportovať"; -"e2e_import" = "Importovať"; -"format_time_d" = "d"; -"format_time_h" = "h"; -"format_time_m" = "m"; - -// Time -"format_time_s" = "s"; -"group_section" = "Skupiny"; - -// Groups -"group_invite_section" = "Pozvánky"; -"attachment_e2e_keys_import" = "Importovať..."; -"room_creation_participants_title" = "Účastníci:"; -"room_event_encryption_verify_ok" = "Overiť"; -"room_event_encryption_info_unverify" = "Zrušiť overenie"; -"room_event_encryption_info_verify" = "Overiť..."; -"room_event_encryption_info_device_blocked" = "Na čiernej listine"; -"room_event_encryption_info_device_verified" = "Overené"; -"room_event_encryption_info_device_verification" = "Overenie\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_event_none" = "žiadne"; -"room_event_encryption_info_event_unencrypted" = "nezašifrované"; -"room_event_encryption_info_event_algorithm" = "Algoritmus\n"; -"device_details_delete_prompt_title" = "Overenie"; -"device_details_identifier" = "ID\n"; - -// Settings -"settings" = "Nastavenia"; -"notice_sticker" = "nálepka"; -"unignore" = "Prestať ignorovať"; -"ignore" = "Ignorovať"; -"mention" = "Zmieniť sa"; -"submit" = "Odoslať"; -"retry" = "Skúsiť znovu"; -"continue" = "Pokračovať"; -"close" = "Zavrieť"; -"back" = "Späť"; -"abort" = "Prerušiť"; -"yes" = "Áno"; - -// Action -"no" = "Nie"; -"login_desktop_device" = "Desktop"; -"login_tablet_device" = "Tablet"; -"login_mobile_device" = "Mobil"; -"login_leave_fallback" = "Zrušiť"; -"login_home_server_title" = "URL domovského servera:"; -"login_email_placeholder" = "Emailová adresa"; -"login_password_placeholder" = "Heslo"; -"login_identity_server_title" = "URL adresa servera totožností:"; -"login_server_url_placeholder" = "URL (napr. https://matrix.org)"; - -// Login Screen -"login_create_account" = "Vytvoriť účet:"; -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "Matrix"; -"notification_settings_select_room" = "Vybrať miestnosť"; -"notification_settings_enable_notifications_warning" = "Všetky oznámenia sú v súčasnosti vypnuté pre všetky zariadenia."; -"notification_settings_enable_notifications" = "Povoliť oznámenia"; - -// Notification settings screen -"notification_settings_disable_all" = "Zakázať všetky oznámenia"; -"settings_title_notifications" = "Oznámenia"; -"notification_settings_room_rule_title" = "Miestnosť: '%@'"; -"auth_username_in_use" = "Používateľské meno sa už používa"; -"login_error_must_start_http" = "URL adresa musí začínať http[s]://"; -"auth_reset_password_error_not_found" = "Nenájdené"; -"notice_unsupported_attachment" = "Nepodporovaná príloha: %@"; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ zapol end-to-end šifrovanie (nerozpoznaný algoritmus %2$@)."; -"notice_encryption_enabled_ok" = "%@ zapol end-to-end šifrovanie."; -"notice_room_related_groups" = "Skupiny pridružené k tejto miestnosti sú: %@"; -"notice_room_aliases_for_dm" = "Aliasy sú: %@"; -"notice_room_aliases" = "Aliasy miestnosti sú: %@"; -"notice_room_power_level_acting_requirement" = "Minimálne úrovne oprávnenia, ktoré musí mať používateľ pred konaním, sú:"; -"notice_room_power_level_intro" = "Úrovne oprávnenia členov miestnosti sú:"; -"notice_room_power_level_intro_for_dm" = "Úrovne oprávnenia členov sú:"; -"notice_room_join_rule_public_by_you_for_dm" = "Zverejnili ste ju."; -"notice_room_join_rule_public_by_you" = "Túto miestnosť ste zverejnili."; -"notification_settings_global_info" = "Nastavenia oznámení sa ukladajú do vášho používateľského účtu a sú zdieľané medzi všetkými klientmi, ktorí ich podporujú (vrátane oznámení na ploche).\n\nPravidlá sa uplatňujú v poradí; prvé pravidlo, ktoré sa zhoduje, určuje výsledok správy.\nTakže: Oznámenia o správe sú dôležitejšie ako oznámenia na miestnosť, ktoré sú dôležitejšie ako oznámenia na odosielateľa.\nPri viacerých pravidlách rovnakého druhu má prednosť to, ktoré sa zhoduje ako prvé v zozname."; - -// contacts list screen -"invitation_message" = "Rád by som sa s vami porozprával pomocou Matrixu. Viac informácií nájdete na webovej stránke http://matrix.org."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Zviditeľnili ste budúcu históriu miestnosti pre všetkých členov miestnosti, od okamihu ich vstupu."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Zviditeľnili ste budúce správy pre všetkých, od okamihu pozvania."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Zviditeľnili ste budúcu históriu miestnosti pre všetkých členov miestnosti, od okamihu pozvania."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Zviditeľnili ste budúce správy pre všetkých členov miestnosti."; -"notice_room_history_visible_to_members_by_you" = "Zviditeľnili ste budúcu históriu miestnosti pre všetkých jej členov."; -"notice_room_history_visible_to_anyone_by_you" = "Sprístupnili ste budúcu históriu miestnosti každému."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Zapli ste end-to-end šifrovanie (nerozpoznaný algoritmus %@)."; -"notice_encryption_enabled_ok_by_you" = "Zapli ste end-to-end šifrovanie."; -"notice_room_created_by_you_for_dm" = "Vstúpili ste."; -"notice_room_created_by_you" = "Vytvorili ste a nastavili ste miestnosť."; -"notice_profile_change_redacted_by_you" = "Aktualizovali ste svoj profil %@"; -"notice_room_topic_removed_by_you" = "Odstránili ste tému"; -"notice_room_name_removed_by_you_for_dm" = "Odstránili ste názov"; -"notice_room_name_removed_by_you" = "Odstránili ste názov miestnosti"; -"notice_conference_call_request_by_you" = "Požiadali ste o VoIP konferenciu"; -"notice_declined_video_call_by_you" = "Odmietli ste hovor"; -"notice_ended_video_call_by_you" = "Ukončili ste hovor"; -"notice_room_name_changed_by_you_for_dm" = "Zmenili ste svoje meno na %@."; -"notice_room_name_changed_by_you" = "Zmenili ste názov miestnosti na %@."; -"notice_topic_changed_by_you" = "Zmenili ste tému na \"%@\"."; -"notice_display_name_removed_by_you" = "Odstránili ste svoje zobrazované meno"; -"notice_display_name_changed_from_by_you" = "Zmenili ste si zobrazované meno z %@ na %@"; -"notice_display_name_set_by_you" = "Nastavili ste si zobrazované meno na %@"; -"notice_avatar_url_changed_by_you" = "Zmenili ste si obrázok v profile"; -"notice_room_withdraw_by_you" = "Odvolali ste pozvánku pre %@"; -"notice_room_ban_by_you" = "Zakázali ste používateľa %@"; -"notice_room_unban_by_you" = "Zrušili ste zákaz pre %@"; -"notice_room_kick_by_you" = "Vylúčili ste používateľa %@"; -"notice_room_reject_by_you" = "Odmietli ste pozvanie"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Odvolali ste pozvánku pre %@"; -"notice_room_third_party_revoked_invite_by_you" = "Odvolali ste pozvánku pre %@ do miestnosti"; -"notice_room_third_party_registered_invite_by_you" = "Prijali ste pozvanie do %@"; -"notice_room_third_party_invite_by_you_for_dm" = "Pozvali ste používateľa %@"; -"notice_room_third_party_invite_by_you" = "Odoslali ste pozvánku používateľovi %@ do miestnosti"; -"notice_room_invite_you" = "%@ vás pozval"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "Pozvali ste %@"; -"notice_conference_call_finished" = "Skončila sa VoIP konferencia"; -"notice_conference_call_started" = "Začala sa VoIP konferencia"; -"notice_conference_call_request" = "%@ požiadal/a o VoIP konferenciu"; -"notice_declined_video_call" = "%@ odmietol hovor"; -"notice_ended_video_call" = "%s ukončil/a hovor"; -"notice_room_name_changed_for_dm" = "%@ zmenil/a svoje meno na %@."; -"notice_room_name_changed" = "%@ zmenil názov miestnosti na %@."; -"notice_topic_changed" = "%@ zmenil tému na \"%@\"."; -"notice_display_name_removed" = "%@ odstránil svoje zobrazované meno"; -"notice_display_name_changed_from" = "%@ zmenil/a svoje zobrazované meno z %@ na %@"; -"notice_display_name_set" = "%@ nastavil/a svoje zobrazované meno na %@"; -"notice_avatar_url_changed" = "%@ zmenil/a svoj obrázok"; -"notice_room_reason" = ". Dôvod: %@"; -"notice_room_withdraw" = "%@ odvolal pozvanie od %@"; -"notice_room_ban" = "%@ zakázal používateľa %@"; -"notice_room_unban" = "%@ zrušil zákaz pre %@"; -"notice_room_reject" = "%@ odmietol pozvanie"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ odvolal pozvánku pre %@"; -"notice_room_third_party_revoked_invite" = "%@ odvolal pozvánku pre %@, aby sa pripojil k miestnosti"; -"notice_room_third_party_registered_invite" = "%@ prijal pozvanie do %@"; -"notice_room_third_party_invite_for_dm" = "%@ pozval %@"; -"notice_room_third_party_invite" = "%@ poslal pozvánku %@ do miestnosti"; - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /matrix-sdk/src/main/res/values/strings.xml. -*/ - -"notice_room_invite" = "%@ pozval %@"; - -// Language picker -"language_picker_title" = "Vyberte jazyk"; - -// Country picker -"country_picker_title" = "Vyberte krajnu"; -"microphone_access_not_granted_for_voice_message" = "Hlasové správy vyžadujú prístup k mikrofónu, ale %@ nemá povolenie na jeho používanie"; -"local_contacts_access_discovery_warning" = "Ak chcete vyhľadať kontakty, ktoré už používajú Matrix, %@ môže odoslať e-mailové adresy a telefónne čísla z vášho adresára na zvolený server identity Matrix. Ak je to podporované, osobné údaje sa pred odoslaním zahašujú - ďalšie podrobnosti nájdete v zásadách ochrany osobných údajov vášho servera totožností."; -"local_contacts_access_discovery_warning_title" = "Vyhľadávanie používateľov"; -"local_contacts_access_not_granted" = "Zisťovanie používateľov z lokálnych kontaktov vyžaduje prístup k vašim kontaktom, ale %@ nemá oprávnenie na ich používanie"; -"microphone_access_not_granted_for_call" = "Hovory vyžadujú prístup k mikrofónu, ale %@ nemá povolenie na jeho používanie"; - -// Permissions -"camera_access_not_granted_for_call" = "Videohovory vyžadujú prístup ku kamere, ale %@ nemá povolenie na jej používanie"; -"ssl_homeserver_url" = "URL adresa domovského servera: %@"; -"network_error_not_reachable" = "Skontrolujte prosím pripojenie k sieti"; -"not_supported_yet" = "Zatiaľ nie je podporované"; -"error_common_message" = "Vyskytla sa chyba. Skúste to prosím neskôr."; -"e2e_passphrase_not_match" = "Prístupové frázy sa musia zhodovať"; -"e2e_passphrase_empty" = "Prístupová fráza nesmie byť prázdna"; -"e2e_passphrase_too_short" = "Príliš krátka prístupová fráza (Musí mať minimálne %d znakov)"; -"e2e_export_prompt" = "Tento proces umožňuje exportovať kľúče od správ, ktoré ste prijali v zašifrovaných miestnostiach, do lokálneho súboru. Tento súbor potom budete môcť v budúcnosti importovať do iného klienta Matrix, takže tento klient bude môcť tieto správy tiež dešifrovať.\nExportovaný súbor umožní komukoľvek, kto si ho môže prečítať, dešifrovať všetky zašifrované správy, ktoré vidíte, preto by ste mali dbať na jeho bezpečnosť."; - -// E2E export -"e2e_export_room_keys" = "Exportovať kľúče miestností"; -"e2e_import_prompt" = "Tento proces umožňuje importovať šifrovacie kľúče, ktoré ste predtým exportovali z iného klienta Matrix. Potom budete môcť dešifrovať všetky správy, ktoré mohol dešifrovať iný klient.\nExportovaný súbor je chránený prístupovou frázou. Tu by ste mali zadať prístupovú frázu, aby ste súbor dešifrovali."; - -// E2E import -"e2e_import_room_keys" = "Importovať kľúče miestností"; -"search_searching" = "Prebieha vyhľadávanie..."; -"attachment_unsupported_preview_message" = "Tento typ súboru nie je podporovaný."; -"attachment_unsupported_preview_title" = "Nie je možné zobraziť náhľad"; -"attachment_e2e_keys_file_prompt" = "Tento súbor obsahuje šifrovacie kľúče exportované z klienta Matrix.\nChcete zobraziť obsah súboru alebo importovať kľúče, ktoré obsahuje?"; -"attachment_multiselection_size_prompt" = "Chcete odoslať obrázok ako:"; -"attachment_cancel_upload" = "Zrušiť nahrávanie?"; -"attachment_cancel_download" = "Zrušiť sťahovanie?"; -"attachment_large_with_resolution" = "Veľká %@ (~%@)"; -"attachment_medium_with_resolution" = "Stredná %@ (~%@)"; -"attachment_small_with_resolution" = "Malá %@ (~%@)"; -"attachment_large" = "Veľká (~%@)"; -"attachment_original" = "Skutočná veľkosť (%@)"; -"attachment_size_prompt_message" = "Túto funkciu môžete kedykoľvek vypnúť v nastaveniach."; - -// Attachment -"attachment_size_prompt" = "Chcete odoslať ako:"; -"room_member_power_level_prompt" = "Túto zmenu nebudete môcť vrátiť späť, pretože tomuto používateľovi udeľujete rovnakú úroveň moci, akú máte vy.\nSte si istí?"; - -// Room members -"room_member_ignore_prompt" = "Ste si istí, že chcete skryť všetky správy od tohto používateľa?"; -"message_reply_to_sender_sent_a_file" = "poslal súbor."; -"message_reply_to_sender_sent_a_voice_message" = "poslal/a zvukovú správu."; -"message_reply_to_sender_sent_an_audio_file" = "poslal/a zvukový súbor."; -"message_reply_to_sender_sent_a_video" = "poslal video."; - -// Reply to message -"message_reply_to_sender_sent_an_image" = "poslal obrázok."; -"room_left" = "Opustili ste miestnosť"; -"room_error_timeline_event_not_found" = "Aplikácia sa pokúšala načítať konkrétny bod na časovej osi tejto miestnosti, ale nedokázala ho nájsť"; -"room_error_timeline_event_not_found_title" = "Nepodarilo sa načítať pozíciu na časovej osi"; -"room_error_cannot_load_timeline" = "Nepodarilo sa načítať časovú os"; -"room_error_topic_edition_not_authorized" = "Nie ste oprávnený upraviť tému tejto miestnosti"; -"room_error_name_edition_not_authorized" = "Nemáte oprávnenie upraviť názov tejto miestnosti"; -"room_error_join_failed_empty_room" = "V súčasnosti nie je možné znovu vstúpiť do prázdnej miestnosti."; -"room_error_join_failed_title" = "Nepodarilo sa vstúpiť do miestnosti"; - -// Room -"room_please_select" = "Prosím, vyberte si miestnosť"; -"room_creation_participants_placeholder" = "(napr. @fero:domovskyserver1; @jano:domovskyserver2...)"; -"room_creation_alias_placeholder_with_homeserver" = "(napr. #foo%@)"; -"room_creation_alias_placeholder" = "(napr. #foo:napriklad.sk)"; -"room_creation_alias_title" = "Alias miestnosti:"; -"account_error_push_not_allowed" = "Oznámenia nie sú povolené"; -"account_error_msisdn_wrong_description" = "Zdá sa, že toto nie je platné telefónne číslo"; -"account_error_msisdn_wrong_title" = "Neplatné telefónne číslo"; -"account_error_email_wrong_description" = "Toto nevyzerá ako platná e-mailová adresa"; -"account_error_email_wrong_title" = "Neplatná e-mailová adresa"; -"account_error_matrix_session_is_not_opened" = "Relácia Matrix nie je otvorená"; -"account_error_picture_change_failed" = "Zmena obrázka sa nepodarila"; -"account_error_display_name_change_failed" = "Zmena zobrazovaného mena sa nepodarila"; -"account_msisdn_validation_error" = "Nie je možné overiť telefónne číslo."; -"account_msisdn_validation_message" = "Odoslali sme SMS s aktivačným kódom. Zadajte prosím tento kód nižšie."; -"account_email_validation_error" = "Nie je možné overiť e-mailovú adresu. Skontrolujte svoj e-mail a kliknite na odkaz, ktorý obsahuje. Po vykonaní tohto kroku kliknite na tlačidlo Pokračovať"; -"account_email_validation_message" = "Prosím, skontrolujte svoj e-mail a kliknite na odkaz, ktorý obsahuje. Po dokončení tohto kroku kliknite na tlačidlo Pokračovať."; -"room_event_encryption_verify_message" = "Ak chcete overiť, či je táto relácia dôveryhodná, kontaktujte jej vlastníka iným spôsobom (napr. osobne alebo telefonicky) a opýtajte sa ho, či kľúč, ktorý vidí v nastaveniach používateľa pre túto reláciu, sa zhoduje s nižšie uvedeným kľúčom:\n\n\tNázov relácie: %@\n\tID relácie: %@\n\tKľúč relácie: %@\n\nAk sa zhoduje, stlačte tlačidlo overiť nižšie. Ak nie, potom túto reláciu zachytáva niekto iný a pravdepodobne budete chcieť namiesto toho stlačiť tlačidlo čiernej listiny.\n\nV budúcnosti bude tento proces overovania sofistikovanejší."; -"room_event_encryption_info_block" = "Pridať na čiernu listinu"; -"room_event_encryption_info_unblock" = "Odstrániť z čiernej listiny"; -"room_event_encryption_info_device" = "\nInformácie o relácii odosielateľa\n"; -"room_event_encryption_info_event_identity_key" = "Identifikačný kľúč Curve25519\n"; - -// Encryption information -"room_event_encryption_info_title" = "Informácie o end-to-end šifrovaní\n\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"settings_enable_push_notifications" = "Zapnúť push oznámenia"; -"settings_enable_inapp_notifications" = "Zapnúť oznámenia v aplikácii"; -"room_displayname_more_than_two_members" = "%@ a %@ ďalší"; -"room_displayname_two_members" = "%@ a %@"; -"notice_crypto_error_unknown_inbound_session_id" = "Relácia odosielateľa nám neposlala kľúče pre túto správu."; -"notice_crypto_unable_to_decrypt" = "** Nepodarilo sa dešifrovať: %@ **"; -"notice_room_history_visible_to_members_from_invited_point" = "%@ zviditeľnil/a budúcu históriu miestnosti pre všetkých jej členov od okamihu, keď sú pozvaní."; -"notice_room_history_visible_to_members_for_dm" = "%@ zmenil/a nastavenie, aby budúce správy boli viditeľné pre všetkých členov miestnosti."; -"notice_room_history_visible_to_members" = "%@ zviditeľnil/a budúcu históriu miestnosti pre všetkých členov miestnosti."; -"notice_room_history_visible_to_anyone" = "%@ zviditeľnil/a budúcu históriu miestnosti pre každého."; -"notification_settings_by_default" = "Predvolene..."; -"notification_settings_other_alerts" = "Iné upozornenia"; -"room_creation_name_placeholder" = "(napr. pracovnaSkupina)"; -"message_reply_to_message_to_reply_to_prefix" = "V odpovedi na"; -"notice_in_reply_to" = "V odpovedi na"; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ zviditeľnil budúce správy pre všetkých, od okamihu pripojenia."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ zviditeľnil budúcu históriu miestnosti pre všetkých členov miestnosti, od okamihu ich vstupu."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ zviditeľnil budúce správy pre všetkých, od okamihu pozvania."; -"notice_error_unknown_event_type" = "Neznámy typ udalosti"; -"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" = "%@ zverejnil/a túto miestnosť."; -"notice_room_join_rule_invite_by_you_for_dm" = "Ste ju nastavili len na pozvanie."; -"notice_room_join_rule_invite_for_dm" = "%@ ju nastavil/a len na pozvanie."; -"notice_event_redacted" = ""; -"capture_media" = "Spraviť fotografiu/video"; -"auth_reset_password_error_unauthorized" = "Neoprávnené"; -"auth_invalid_user_name" = "Neplatné používateľské meno"; -"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_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 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_could_not_verify" = "Nepodarilo sa overiť identitu vzdialeného servera."; - -// unrecognized SSL certificate -"ssl_trust" = "Dôverovať"; -"call_video_with_user" = "Videohovor s %@"; -"call_voice_with_user" = "Hlasový hovor s %@"; -"call_more_actions_change_audio_device" = "Zmeniť zvukové zariadenie"; -"call_more_actions_hold" = "Podržať"; -"call_holded" = "Podržali ste hovor"; -"call_remote_holded" = "%@ podržal hovor"; -"incoming_voice_call" = "Prichádzajúci hlasový hovor"; -"incoming_video_call" = "Prichádzajúci videohovor"; -"settings_config_user_id" = "ID používateľa: %@"; -"settings_config_identity_server" = "Server totožností: %@"; -"notification_settings_suppress_from_bots" = "Stlmiť oznámenia od botov"; -"notification_settings_receive_a_call" = "Upozorniť ma, keď mi niekto zavolá"; -"notification_settings_people_join_leave_rooms" = "Upozorniť ma, keď sa ľudia pridajú alebo opustia miestnosti"; -"notification_settings_invite_to_a_new_room" = "Upozorniť ma, keď budem pozvaný do novej miestnosti"; -"notification_settings_just_sent_to_me" = "Upozorniť ma zvukom na správy odoslané len mne"; -"notification_settings_contain_my_display_name" = "Upozorniť ma zvukom na správy, ktoré obsahujú moje zobrazované meno"; -"notification_settings_contain_my_user_name" = "Upozorniť ma zvukom na správy, ktoré obsahujú moje používateľské meno"; -"notification_settings_highlight" = "Zvýrazniť"; - -// Login Screen -"login_error_already_logged_in" = "Už ste prihlásení"; -"message_unsaved_changes" = "Máte neuložené zmeny. Opustením sa zrušia."; -"membership_leave" = "Odišiel"; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Zviditeľnili ste budúce správy pre všetkých, od okamihu pripojenia."; -"notice_room_kick" = "%@ vylúčil %@"; -"attachment_medium" = "Stredná (~%@)"; -"attachment_small" = "Malá (~%@)"; -"room_no_conference_call_in_encrypted_rooms" = "Konferenčné hovory nie sú podporované v šifrovaných miestnostiach"; -"room_no_power_to_create_conference_call" = "Aby ste mohli začať konferenciu, musíte mať právo pozývať používateľov do miestnosti"; -"device_details_delete_prompt_message" = "Táto operácia si vyžaduje dodatočné overenie.\nAk chcete pokračovať, zadajte svoje heslo."; -"device_details_rename_prompt_message" = "Verejný názov relácie je viditeľný pre ľudí, s ktorými komunikujete"; -"settings_enter_validation_token_for" = "Zadajte overovací token pre %@:"; -"notice_error_unexpected_event" = "Neočakávaná udalosť"; -"notice_error_unsupported_event" = "Nepodporovaná udalosť"; -"notice_room_join_rule_invite_by_you" = "Nastavili ste miestnosť len pre pozvaných."; -// New -"notice_room_join_rule_invite" = "%@ nastavil/a miestnosť len na pozvanie."; -// Old -"notice_room_join_rule" = "Pravidlo pripojenia je: %@"; -"notice_room_created" = "%@ vytvoril a nastavil miestnosť."; -"notice_profile_change_redacted" = "%@ aktualizoval svoj profil %@"; -"notice_event_redacted_reason" = " [dôvod: %@]"; -"notice_event_redacted_by" = " používateľom %@"; -"notice_room_topic_removed" = "%@ odstránil tému"; -"notice_room_name_removed_for_dm" = "%@ odstránil názov"; -"notice_room_name_removed" = "%@ odstránil/a názov miestnosti"; - -// Events formatter -"notice_avatar_changed_too" = "(obrázok bol tiež zmenený)"; -"resend_message" = "Znovu odoslať správu"; -"reset_to_default" = "Obnoviť na predvolené"; -"invite_user" = "Pozvať používateľa matrix"; -"attach_media" = "Pripojiť médium z knižnice"; -"select_account" = "Vyberte účet"; -"start_video_call" = "Spustiť videohovor"; -"start_voice_call" = "Spustiť hlasový hovor"; -"set_admin" = "Nastaviť správcu"; -"set_moderator" = "Nastaviť moderátora"; -"set_default_power_level" = "Vynulovať úroveň oprávnenia"; -"set_power_level" = "Nastaviť úroveň oprávnenia"; -"submit_code" = "Odoslať kód"; -"dismiss" = "Odmietnuť"; -"discard" = "Zahodiť"; -"login_error_resource_limit_exceeded_message_contact" = "\n\nAk chcete pokračovať v používaní tejto služby, obráťte sa na správcu služby."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Tento domovský server dosiahol svoj mesačný limit aktívnych používateľov."; -"login_error_resource_limit_exceeded_message_default" = "Tento domovský server prekročil jeden z limitov zdroja."; -"login_error_resource_limit_exceeded_title" = "Prekročený limit zdrojov"; -"login_error_forgot_password_is_not_supported" = "Zabudnuté heslo nie je v súčasnosti podporované"; -"login_error_not_json" = "Neobsahoval platný JSON"; -"login_error_unknown_token" = "Zadaný prístupový token nebol rozpoznaný"; -"login_error_registration_is_not_supported" = "Registrácia nie je v súčasnosti podporovaná"; -"login_error_do_not_support_login_flows" = "V súčasnosti nepodporujeme žiadny alebo všetky prihlasovacie toky definované týmto domovským serverom"; -"login_error_no_login_flow" = "Nepodarilo sa nám získať autentifikačné informácie z tohto domovského servera"; -"call_more_actions_audio_use_device" = "Reproduktor zariadenia"; -"call_more_actions_unhold" = "Pokračovať"; -"call_invite_expired" = "Platnosť pozvánky na hovor vypršala"; -"notification_settings_per_word_info" = "Slová sa porovnávajú bez ohľadu na veľkosť písmen a môžu obsahovať zástupný znak *. Takže:\nfoo zodpovedá reťazcu foo ohraničenému oddeľovačmi slov (napr. interpunkčnými znamienkami a medzerami alebo začiatkom/koncom riadku).\nfoo* zodpovedá každému takému slovu, ktoré začína foo.\n*foo* zodpovedá každému takému slovu, ktoré obsahuje 3 písmená foo."; -"notice_redaction_by_you" = "Upravili ste udalosť (id: %@)"; -"notice_answered_video_call_by_you" = "Prijali ste hovor"; -"notice_placed_video_call_by_you" = "Uskutočnili ste videohovor"; -"notice_placed_voice_call_by_you" = "Uskutočnili ste hlasový hovor"; -"notice_answered_video_call" = "%@ prijal hovor"; -"notice_placed_video_call" = "%@ uskutočnil videohovor"; -"notice_placed_voice_call" = "%@ uskutočnil hlasový hovor"; -"attachment_size_prompt_title" = "Potvrdiť veľkosť na odoslanie"; -"notice_redaction" = "%@ upravil udalosť (id: %@)"; -"notice_feedback" = "Udalosť spätnej väzby (id: %@): %@"; -"resume_call" = "Pokračovať"; -"answer_call" = "Prijať hovor"; -"message_reply_to_sender_sent_their_location" = "zdieľal/a svoju polohu."; -"account_link_email" = "Prepojený email"; -"account_linked_emails" = "Prepojené e-maily"; -"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"; -"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"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/sq.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/sq.lproj/MatrixKit.strings deleted file mode 100644 index 4e7256707..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/sq.lproj/MatrixKit.strings +++ /dev/null @@ -1,481 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Krijo llogari:"; -"login_server_url_placeholder" = "URL (p.sh. https://matrix.org)"; -"login_home_server_title" = "URL Shërbyesi Home:"; -"login_identity_server_title" = "URL Shërbyesi Identitetesh:"; -"login_password_placeholder" = "Fjalëkalim"; -"login_optional_field" = "opsionale"; -"login_email_placeholder" = "Adresë email"; -"login_prompt_email_token" = "Ju lutemi, jepni token-in tuaj të vleftësimit të email-it:"; -"login_error_title" = "Dështoi Hyrja"; -"login_error_registration_is_not_supported" = "Hëpërhë regjistrimet nuk mbulohen"; -"login_error_forbidden" = "Emër përdoruesi/fjalëkalim i pavlefshëm"; -"login_error_unknown_token" = "Token-i i hyrjeve i dhënë nuk u njoh"; -"login_error_bad_json" = "JSON e keqformuar"; -"login_error_not_json" = "S’përmbante JSON të vlefshëm"; -"login_error_user_in_use" = "Ky emër përdoruesi është i përdorur tashmë"; -"login_use_fallback" = "Përdor faqe fallback"; -"login_leave_fallback" = "Anuloje"; -"login_invalid_param" = "Parametër i pavlefshëm"; -"register_error_title" = "Regjistrimi Dështoi"; -"login_error_forgot_password_is_not_supported" = "Harrimi i fjalëkalimeve hëpërhë s’mbulohet"; -"login_mobile_device" = "Celular"; -"login_tablet_device" = "Tablet"; -"login_desktop_device" = "Desktop"; -// Action -"no" = "Jo"; -"yes" = "Po"; -"abort" = "Ndërprite"; -"back" = "Mbrapsht"; -"close" = "Mbylle"; -"continue" = "Vazhdo"; -"discard" = "Hidhe Tej"; -"dismiss" = "Mos e merr parasysh"; -"retry" = "Riprovo"; -"sign_up" = "Regjistrohuni"; -"submit" = "Parashtroje"; -"set_default_power_level" = "Rikthe Shkallët e Pushtetit Te Parazgjedhja"; -"set_moderator" = "Caktojeni Moderator"; -"set_admin" = "Caktojeni Përgjegjës"; -"start_chat" = "Filloni Fjalosje"; -"start_voice_call" = "Nis Thirrje Audio"; -"start_video_call" = "Nis Thirrje Video"; -"mention" = "Përmendje"; -"select_account" = "Përzgjidhni një llogari"; -"attach_media" = "Bashkëngjitni media nga Mediateka"; -"capture_media" = "Bëni Foto/Video"; -"invite_user" = "Ftoni Përdorues matrix"; -"reset_to_default" = "Riktheje te parazgjedhjet"; -"resend_message" = "Ridërgoje mesazhin"; -"select_all" = "Përzgjidhe Krejt"; -"cancel_upload" = "Anuloje Ngarkimin"; -"cancel_download" = "Anuloje Shkarkimin"; -"show_details" = "Shfaq Hollësi"; -"answer_call" = "Përgjigjuni Thirrjes"; -"reject_call" = "Hidhe poshtë Thirrjen"; -"end_call" = "Përfundoje Thirrjen"; -"ignore" = "Shpërfille"; -"unignore" = "Hiqja shpërfilljen"; -// Events formatter -"notice_avatar_changed_too" = "(u ndryshua edhe avatari)"; -"notice_room_name_removed" = "%@ hoqi emrin e dhomës"; -"notice_room_topic_removed" = "%@ hoqi temën"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " nga %@"; -"notice_event_redacted_reason" = " [arsye: %@]"; -"notice_profile_change_redacted" = "%@ përditësoi profilin e vet %@"; -"notice_room_created" = "%@ krijoi dhe formësoi dhomën."; -"notice_room_join_rule" = "Rregulli për pjesëmarrje është: %@"; -"notice_room_power_level_intro" = "Shkallët e pushtetit të anëtarëve të dhomës janë:"; -"notice_room_aliases" = "Aliaset e dhomës janë: %@"; -"notice_room_related_groups" = "Grupet përshoqëruar kësaj dhome janë: %@"; -"notice_encrypted_message" = "Mesazhi i fshehtëzuar"; -"notice_encryption_enabled" = "%@ aktivizoi fshehtëzimin skaj-më-skaj (algoritëm %@)"; -"notice_image_attachment" = "bashkëngjitje figurash"; -"notice_audio_attachment" = "bashkëngjitje audio"; -"notice_video_attachment" = "bashkëngjitje videosh"; -"notice_file_attachment" = "bashkëngjitje kartelash"; -"notice_invalid_attachment" = "bashkëngjitje e pavlefshme"; -"notice_unsupported_attachment" = "Bashkëngjitje e pambuluar: %@"; -"notice_error_unsupported_event" = "Akt i pambuluar"; -"notice_error_unexpected_event" = "Akt i papritur"; -"notice_error_unknown_event_type" = "Lloj i panjohur akti"; -"notice_crypto_unable_to_decrypt" = "** S’arrihet të shfshehtëzohet: %@ **"; -// room display name -"room_displayname_empty_room" = "Dhomë e zbrazët"; -"room_displayname_more_than_two_members" = "%@ dhe %@ të tjerë"; -// Settings -"settings" = "Rregullime"; -"settings_enable_inapp_notifications" = "Aktivizoni njoftime Aplikacioni"; -"settings_enable_push_notifications" = "Aktivizoni njoftime push"; -"settings_enter_validation_token_for" = "Jepni token vleftësimi për %@:"; -"notification_settings_room_rule_title" = "Dhomë: '%@'"; -// Devices -"device_details_title" = "Të dhëna sesioni\n"; -"device_details_name" = "Emër Publik\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Parë së fundi më\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "Emri publik i një sesioni është i dukshëm për persona me të cilët komunikoni"; -"device_details_delete_prompt_title" = "Mirëfilltësim"; -// Encryption information -"room_event_encryption_info_title" = "Të dhëna fshehtëzimi skaj-më-skaj\n\n"; -"room_event_encryption_info_event" = "Të dhëna akti\n"; -"room_event_encryption_info_event_user_id" = "ID Përdoruesi\n"; -"room_event_encryption_info_event_identity_key" = "Kyç identiteti Curve25519\n"; -"room_event_encryption_info_event_algorithm" = "Algoritëm\n"; -"room_event_encryption_info_event_session_id" = "ID sesioni\n"; -"room_event_encryption_info_event_decryption_error" = "Gabim shfshehtëzimi\n"; -"room_event_encryption_info_event_unencrypted" = "të pafshehtëzuara"; -"room_event_encryption_info_event_none" = "asnjë"; -"room_event_encryption_info_device" = "\nTë dhëna sesioni dërguesi\n"; -"room_event_encryption_info_device_unknown" = "sesion i panjohur\n"; -"room_event_encryption_info_device_name" = "Emër Publik\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "Verifikim\n"; -"room_event_encryption_info_device_fingerprint" = "Shenja gishtash Ed25519\n"; -"room_event_encryption_info_device_verified" = "E verifikuar"; -"room_event_encryption_info_device_not_verified" = "JO e verifikuar"; -"room_event_encryption_info_device_blocked" = "Në Listë të Zezë"; -"room_event_encryption_info_verify" = "Verifikoni…"; -"room_event_encryption_info_block" = "Listë e zezë"; -"room_event_encryption_verify_title" = "Verifiko sesionin\n\n"; -"room_event_encryption_verify_ok" = "Verifikoje"; -// Account -"account_save_changes" = "Ruaji ndryshimet"; -"account_link_email" = "Lidhni Email"; -"account_linked_emails" = "Email-e të lidhur"; -"account_email_validation_title" = "Verifikim Në Pritje të Miratimit"; -"account_msisdn_validation_title" = "Verifikim Në Pritje të Miratimit"; -"account_msisdn_validation_error" = "S’arrihet të verifikohet numër telefoni."; -"account_error_display_name_change_failed" = "Ndryshimi i emrit të shfaqjes dështoi"; -"account_error_picture_change_failed" = "Ndryshimi i fotos dështoi"; -"account_error_matrix_session_is_not_opened" = "Sesioni Matrix s’është hapur"; -"account_error_email_wrong_title" = "Adresë Email e Pavlefshme"; -"account_error_email_wrong_description" = "Kjo s’duket se është adresë email e vlefshme"; -"account_error_msisdn_wrong_title" = "Numër Telefoni i Pavlefshëm"; -"account_error_msisdn_wrong_description" = "Ky s’duket të jetë numër telefoni i vlefshëm"; -// Room creation -"room_creation_name_title" = "Emër dhome:"; -"room_creation_name_placeholder" = "(p.sh., Grupiiçajit)"; -"room_creation_alias_title" = "Alias dhome:"; -"room_creation_alias_placeholder" = "(p.sh. #kot:shembull.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(p.sh. #kot%@)"; -"room_creation_participants_title" = "Pjesëmarrës:"; -// Room -"room_please_select" = "Ju lutemi, përzgjidhni një dhomë"; -"room_error_join_failed_title" = "S’u arrit të hyhej në dhomë"; -"room_error_name_edition_not_authorized" = "S’jeni i autorizuar të përpunoni emrin e kësaj dhome"; -"room_error_topic_edition_not_authorized" = "S’jeni i autorizuar ta përpunoni temën e kësaj dhome"; -"room_error_cannot_load_timeline" = "S’u arrit të ngarkohej rrjedha kohore"; -"room_error_timeline_event_not_found_title" = "S’u arrit të ngarkohej pozicion rrjedhe kohore"; -"room_left" = "Dolët prej dhomës"; -// Attachment -"attachment_size_prompt" = "Doni të dërgohet si:"; -"attachment_original" = "Madhësi Faktike (%@)"; -"attachment_small" = "E vogël (~ %@)"; -"attachment_medium" = "Mesatare (~%@)"; -"attachment_large" = "E madhe (~ %@)"; -"attachment_cancel_download" = "Të anulohet shkarkimi?"; -"attachment_cancel_upload" = "Të anulohet ngarkimin?"; -"attachment_multiselection_size_prompt" = "Doni të dërgoni figura si:"; -"attachment_multiselection_original" = "Madhësi Faktike"; -"attachment_e2e_keys_import" = "Importoni…"; -// Contacts -"contact_mx_users" = "Përdorues të Matrix-it"; -"contact_local_contacts" = "Kontakte Vendore"; -// Groups -"group_invite_section" = "Ftesa"; -"group_section" = "Grupe"; -// Search -"search_no_results" = "S’ka Përfundime"; -"search_searching" = "Kërkim në ecuri e sipër…"; -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "h"; -"format_time_d" = "d"; -// E2E import -"e2e_import_room_keys" = "Importo kyçe dhome"; -"e2e_import" = "Importo"; -"e2e_passphrase_enter" = "Jepni frazëkalimin"; -// E2E export -"e2e_export_room_keys" = "Eksporto kyçe dhome"; -"e2e_export" = "Eksporto"; -"e2e_passphrase_confirm" = "Ripohoni frazëkalimin"; -"e2e_passphrase_empty" = "Frazëkalimi s’duhet të jetë i zbrazët"; -"e2e_passphrase_not_match" = "Frazëkalimet duhet të përputhen"; -// Others -"user_id_title" = "ID Përdoruesi:"; -"offline" = "jo në linjë"; -"error" = "Gabim"; -"not_supported_yet" = "S’mbulohen ende"; -"default" = "parazgjedhje"; -"private" = "Private"; -"public" = "Publike"; -"power_level" = "Shkallë Pushteti"; -"user_id_placeholder" = "p.sh.: @beni:homeserver"; -"ssl_homeserver_url" = "URL Shërbyesi Home: %@"; -"local_contacts_access_discovery_warning_title" = "Zbulim përdoruesish"; -// Country picker -"country_picker_title" = "Zgjidhni një vend"; -// Language picker -"language_picker_title" = "Zgjidhni gjuhë"; -"language_picker_default_language" = "Parazgjedhje (%@)"; -"notice_room_invite" = "%@ ftoi %@"; -"notice_room_third_party_invite" = "%@ dërgoi një ftesë për %@ që të vijë te dhoma"; -"notice_room_third_party_registered_invite" = "%@ e pranoi ftesën për %@"; -"notice_room_join" = "%@ u bë pjesë"; -"notice_room_leave" = "%@ doli"; -"notice_room_reject" = "%@ hodhi tej ftesën"; -"notice_room_kick" = "%@ përzuri %@"; -"notice_room_ban" = "%@ dëboi %@"; -"notice_room_withdraw" = "%@ e tërhoqi ftesën për %@"; -"notice_room_reason" = ". Arsye: %@"; -"notice_avatar_url_changed" = "%@ ndryshoi avatarin e vet"; -"notice_display_name_set" = "%@ caktoi emrin e vet të ekranit si %@"; -"notice_display_name_changed_from" = "%@ ndryshoi emrin e vet të ekranit nga %@ në %@"; -"notice_display_name_removed" = "%@ hoqi emrin e vet të ekranit"; -"notice_topic_changed" = "%@ ndryshoi temën në \"%@\"."; -"notice_room_name_changed" = "%@ ndryshoi emrin e dhomës në %@."; -"notice_placed_voice_call" = "%@ bëri një thirrje zanore"; -"notice_placed_video_call" = "%@ bëri një thirrje video"; -"notice_answered_video_call" = "%@ iu përgjigj thirrjes"; -"notice_ended_video_call" = "%@ e përfundoi thirrjen"; -"notice_conference_call_request" = "%@ kërkoi një konferencë VoIP"; -"notice_conference_call_started" = "Konferenca VoIP filloi"; -"notice_conference_call_finished" = "Konferenca VoIP përfundoi"; -// button names -"ok" = "OK"; -"cancel" = "Anuloje"; -"save" = "Ruaje"; -"leave" = "Dilni"; -"send" = "Dërgoje"; -"copy_button_name" = "Kopjoje"; -"resend" = "Ridërgoje"; -"set_power_level" = "Caktoni Shkallë Pushteti"; -"delete" = "Fshije"; -"view" = "Shiheni"; -// actions -"action_logout" = "Dalje"; -"create_room" = "Krijo Dhomë"; -"login" = "Hyrje"; -"create_account" = "Krijo Llogari"; -"membership_invite" = "I ftuar"; -"membership_leave" = "I ikur"; -"membership_ban" = "I dëbuar"; -"num_members_one" = "%@ përdorues"; -"num_members_other" = "%@ përdorues"; -"invite" = "Ftoje"; -"kick" = "Përzëre"; -"ban" = "Dëboje"; -"unban" = "Hiqja dëbimin"; -"message_unsaved_changes" = "Ka ndryshime të paruajtura. Ikja do të shkaktojë hedhjen tej të tyre."; -// Login Screen -"login_error_already_logged_in" = "Tashmë i futur"; -"login_error_must_start_http" = "URL-ja duhet të fillojë me http[s]://"; -// room details dialog screen -"room_details_title" = "Hollësi Dhome"; -// Settings screen -"settings_title_config" = "Formësim"; -"settings_title_notifications" = "Njoftime"; -// Notification settings screen -"notification_settings_disable_all" = "Çaktivizoji krejt njoftimet"; -"notification_settings_enable_notifications" = "Aktivizo njoftimet"; -"notification_settings_enable_notifications_warning" = "Krejt njoftimet hëpërhë janë çaktivizuar për krejt pajisjet."; -"notification_settings_always_notify" = "Njoftomë përherë"; -"notification_settings_never_notify" = "Mos njofto kurrë"; -"notification_settings_word_to_match" = "fjalë për përputhje"; -"notification_settings_highlight" = "Theksoje"; -"notification_settings_custom_sound" = "Tingull vetjak"; -"notification_settings_sender_hint" = "@përdorues:përkatësi.com"; -"notification_settings_select_room" = "Përzgjidhni një dhomë"; -"notification_settings_other_alerts" = "Sinjalizime të Tjera"; -"notification_settings_contain_my_user_name" = "Njoftomë me tingull mbi mesazhe që përmbajnë emrin tim"; -"notification_settings_contain_my_display_name" = "Njoftomë me tingull mbi mesazhe që përmbajnë emrin tim të shfaqjes"; -"notification_settings_just_sent_to_me" = "Njoftomë me tingull mbi mesazhe dërguar vetëm për mua"; -"notification_settings_suppress_from_bots" = "Ndaloji njoftimet nga robotë"; -"notification_settings_by_default" = "Si parazgjedhje…"; -"notification_settings_notify_all_other" = "Njoftim për krejt mesazhet/dhomat e tjera"; -// gcm section -"settings_config_home_server" = "Shërbyes home: %@"; -"settings_config_identity_server" = "Shërbyes identitetesh: %@"; -"settings_config_user_id" = "ID Përdoruesi: %@"; -// call string -"call_waiting" = "Po pritet…"; -"call_ended" = "Thirrja përfundoi"; -"call_ring" = "Po thirret…"; -"incoming_video_call" = "Thirrje Video Ardhëse"; -"incoming_voice_call" = "Thirrje Audio Ardhëse"; -"call_invite_expired" = "Ftesa Për Thirrje Skadoi"; -// unrecognized SSL certificate -"ssl_trust" = "Besoje"; -"ssl_logout_account" = "Dalje"; -"ssl_remain_offline" = "Shpërfille"; -"ssl_fingerprint_hash" = "Shenja Gishtash (%@):"; -"ssl_could_not_verify" = "S’u verifikua dot identiteti i shërbyesit të largët."; -"submit_code" = "Parashtroni kod"; -"notice_location_attachment" = "bashkëngjitje vendndodhjeje"; -"notice_redaction" = "%@ përpunoi një veprimtari (id: %@)"; -"notice_sticker" = "ngjitës"; -"unsent" = "Të padërguar"; -"network_error_not_reachable" = "Ju lutemi, kontrolloni aftësinë e lidhjes në rrjetin tuaj"; -"share" = "Ndajeni me të tjerët"; -"login_home_server_info" = "Shërbyesi juaj home depoziton krejt të dhënat e bisedave dhe llogarive tuaja"; -"login_identity_server_info" = "Matrix ofron shërbyes identiteti për të ndjekur se cilat email-e, etj, u përkasin ID-ve Matrix IDs. Hëpërhë ekziston vetëm https://matrix.org."; -"login_user_id_placeholder" = "ID Matrix (p.sh. @poku:matrix.org ose poku)"; -"login_display_name_placeholder" = "Emër në ekran (p.sh. Mane Trimi)"; -"login_email_info" = "Përcaktimi i një adrese email i lejon përdoruesit e tjerë t’ju gjejnë më lehtë në Matrix, dhe do t’ju japë një rrugë për ricaktimin e fjalëkalimit tuaj në të ardhmen."; -"login_error_no_login_flow" = "Dështuam në marrje të dhënash mirëfilltësimi nga ky Shërbyes Home"; -"login_error_do_not_support_login_flows" = "Hëpërhë nuk mbulojmë ndonjë ose krejt rrjedhat e hyrjeve të përkufizuara nga ky Shërbyes Home"; -"login_error_limit_exceeded" = "Janë dërguar shumë kërkesa"; -"login_error_login_email_not_yet" = "Lidhja email që s’është klikuar ende"; -"notice_room_power_level_acting_requirement" = "Shkallët minimum të pushtetit që duhet të ketë një përdorues përpara se të veprojë, janë:"; -"notice_room_power_level_event_requirement" = "Shkallët minimum të pushtetit që lidhen me aktet janë:"; -"notice_room_history_visible_to_anyone" = "%@ e bëri historikun e ardhshëm të dhomës të dukshëm për këdo."; -"notice_room_history_visible_to_members" = "%@ e bëri historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ e bëri historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës, prej çastit kur janë ftuar."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ e bëri historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës, prej çastit kur morën pjesë."; -"notice_crypto_error_unknown_inbound_session_id" = "Sesioni i dërguesit nuk na ka dërguar kyçet për këtë mesazh."; -"notice_in_reply_to" = "Në përgjigje të"; -"device_details_delete_prompt_message" = "Ky veprim lyp mirëfilltësim shtesë.\nQë të vazhdohet, ju lutemi, jepni fjalëkalimin tuaj."; -"room_event_encryption_info_unverify" = "Hiqi verifikimin"; -"room_event_encryption_info_unblock" = "Hiqe nga listë e zezë"; -"room_event_encryption_verify_message" = "Që të verifikohet se ky sesion mund të besohet, ju lutemi, lidhuni me të zotin e tij duke përdorur ndonjë rrugë tjetër (p.sh., personalisht apo përmes një thirrjeje telefonike) dhe kërkojini nëse kyçi që sheh te Rregullimet e veta të Përdoruesit për këtë sesion përputhet me kyçin më poshtë:\n\n\tEmër sesioni: %@\n\tID sesioni: %@\n\tKyç sesioni: %@\n\nNëse përputhet, shtypni më poshtë butonin e verifikimit. Nëse jo, atëherë dikush tjetër është duke përgjuar këtë pajisje dhe do të donit më mirë të shtypnit butonin e kalimit në listë të zezë.\n\nNë të ardhmen ky proces verifikimi do të jetë më i sofistikuar."; -"account_email_validation_message" = "Ju lutemi, kontrolloni email-in tuaj dhe klikoni mbi lidhjen që përmban. Pasi të jetë bërë kjo, klikoni që të vazhdohet."; -"account_email_validation_error" = "S’arrihet të verifikohet adresë email. Ju lutemi, kontrolloni email-in tuaj dhe klikoni mbi lidhjen që përmban. Pasi të jetë bërë kjo, klikoni që të vazhdohet"; -"account_msisdn_validation_message" = "Kemi dërguar një SMS me një kod aktivizimi. Ju lutemi, jepeni këtë kod më poshtë."; -"room_creation_participants_placeholder" = "(p.sh. @mane:homeserver1; @taku:homeserver2...)"; -"room_error_join_failed_empty_room" = "Hëpërhë s’është e mundur të hyhet në një dhomë të zbrazët."; -"room_error_timeline_event_not_found" = "Aplikacioni u rrek të ngarkonte një pikë të dhënë prej rrjedhës kohore në këtë dhomë, por s’qe në gjendje ta gjente"; -"room_no_power_to_create_conference_call" = "Ju duhen leje për ftesa, që të nisni një konferencë në këtë dhomë"; -"room_no_conference_call_in_encrypted_rooms" = "Thirrjet konferencë nuk mbulohen në dhoma të fshehtëzuara"; -// Room members -"room_member_ignore_prompt" = "Doni të fshihen krejt mesazhet nga ky përdorues?"; -"room_member_power_level_prompt" = "S’do të jeni në gjendje ta zhbëni këtë ndryshim, ngaqë po e promovoni përdoruesin të ketë të njëjtën shkallë pushteti si ju vetë.\nJeni i sigurt?"; -"attachment_e2e_keys_file_prompt" = "Kjo kartelë përmban kyçe fshehtëzimi të eksportur nga një klient Matrix.\nDoni të shihni lëndën e kartelës apo të importoni kyçet që ajo përmban?"; -"e2e_import_prompt" = "Ky proces ju lejon të importoni kyçe fshehtëzimi që keni eksportuar më parë nga një tjetër klient Matrix. Mandej do të jeni në gjendje të shfshehtëzoni çfarëdo mesazhesh që mund të shfshehtëzojë ai klient tjetër.\nKartela e eksportit është e mbrojtur me një frazëkalim. Që të shfshehtëzoni kartelën, duhet ta jepni frazëkalimin këtu."; -"e2e_export_prompt" = "Ky proces ju lejon të eksportoni te një kartelë vendore kyçet për mesazhe që keni marrë në dhoma të fshehtëzuara. Mandej do të jeni në gjendje ta importoni kartelën te një tjetër klient Matrix në të ardhmen, që kështu ai klient të jetë në gjendje t’i fshehtëzojë këto mesazhe.\nKartela e eksportuar do t’i lejojë, cilitdo që mund ta lexojë, të shfshehtëzojë çfarëdo mesazhesh të fshehtëzuar që mund të shihni ju, ndaj duhet të bëni kujdes ta mbani të parrezikuar."; -"error_common_message" = "Ndodhi një gabim. Ju lutemi, riprovoni më vonë."; -// Permissions -"camera_access_not_granted_for_call" = "Thirrjet video lypin përdorim të Kamerës, por %@ s’ka leje për ta përdorur"; -"microphone_access_not_granted_for_call" = "Thirrjet lypin përdorim të Mikrofonit, por %@ s’ka leje ta përdorë atë"; -"local_contacts_access_not_granted" = "Zbulimi i përdoruesve nga kontaktet vendore lyp hyrje te kontaktet tuaja, por %@ s’ka leje t’i përdorë ato"; -"local_contacts_access_discovery_warning" = "Që të mund të zbulojë kontakte që përdorin tashmë Matrix-in, %@ mund të dërgojë adresa email dhe numra telefonash nga libri juaj i adresave te shërbyesi juaj i zgjedhur i identiteteve Matrix. Kur kjo mbulohet, të dhënat personale fshehtëzohen, përpara dërgimit - për më tepër hollësi, ju lutemi kontrolloni rregulla privatësie të shërbyesit tuaj të identiteteve."; -"notice_room_unban" = "%@ i hoqi dëbimin %@"; -"redact" = "Hiqe"; -// contacts list screen -"invitation_message" = "Do të doja të bisedoja me ju me Matrix. Për të pasur më tepër itë dhëna, ju lutem, vizitoni sajtin http://matrix.org."; -"notification_settings_global_info" = "Rregullimet mbi njoftimet ruhen te llogaria juaj e përdoruesit dhe ndahen me krejt klientët që i mbulojnë ato (përfshi njoftimet në desktop).\n\nRregullat zbatohen sipas një radhe; rregulli i parë që ka përputhje përcakton lëndën për mesazhin.\nKështu: njoftimet sipas fjalësh janë më të rëndësishme se njoftimet sipas dhomash të cilat janë më të rëndësishme se njoftimet sipas dërguesish.\nFor multiple rules of the same kind, the first one in the list that matches takes priority."; -"notification_settings_per_word_notifications" = "Njoftime sipas fjale"; -"notification_settings_per_word_info" = "Për fjalët përputhjet gjenden pa marrë parasysh shkrimin me të madhe apo të vogël, dhe mund të përfshijnë një shenjë të gjithëpushtetshme *. Kështu:\nkot përputhet me vargun kot të rrethuar nga përkufizues fjalësh (p.sh. shenja pikësimi apo hapësira, ose fillim/fund rreshti).\nkot* përputhet me çfarëdo fjale që fillon me kot.\n*kot* përputhet me çfarëdo fjale që përfshin 3 shkronjat kot."; -"notification_settings_per_room_notifications" = "Njoftime sipas dhome"; -"notification_settings_per_sender_notifications" = "Njoftime sipas dërguesi"; -"notification_settings_invite_to_a_new_room" = "Njoftomë kur ftohem në një dhomë të re"; -"notification_settings_people_join_leave_rooms" = "Njoftomë kur vijnë ose ikin persona nga dhoma"; -"notification_settings_receive_a_call" = "Njoftomë kur marr një thirrje"; -"call_connecting" = "Po lidhet…"; -"ssl_cert_not_trust" = "Kjo mund të ishte shenjë se dikush po përgjon me dashakeqësi trafikun tuaj, ose se telefoni juaj nuk i beson dëshmisë së furnizuar nga shërbyesi i largët."; -"ssl_cert_new_account_expl" = "Nëse përgjegjësi i shërbyesit ka thënë se kjo është e pritshme, sigurohuni që shenjat e gishtave më poshtë përputhen me shenjat e gishtave të furnizuara prej tyre."; -"ssl_unexpected_existing_expl" = "Dëshmia ka ndryshuar nga ajo që qe besuar nga telefoni juaj. Kjo është SHUMË E PAZAKONTË. Këshillohet që TË MOS E PRANONI këtë dëshmi të re."; -"ssl_expected_existing_expl" = "Dëshmia ka ndryshuar nga një e besueshme dikur në një që nuk besohet. Shërbyesi mund të ketë rinovuar dëshminë e tij. Lidhuni me përgjegjësin e shërbyesit për shenjat e pritshme të gishtave."; -"ssl_only_accept" = "Pranojeni dëshminë VETËM nëse përgjegjësi i shërbyesit ka publikuar shenja gishtash që përputhen me ato më sipër."; -"login_error_resource_limit_exceeded_title" = "U tejkalua Kufi Burimesh"; -"login_error_resource_limit_exceeded_message_default" = "Ky shërbyes home ka tejkaluar një nga kufijtë mbi burimet."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Ky shërbyes home ka tejkaluar kufirin Përdorues Aktivë Mujorë."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nJu lutemi, që të vazhdoni të përdorni këtë shërbim, lidhuni me përgjegjësin e shërbimit tuaj."; -"login_error_resource_limit_exceeded_contact_button" = "Lidhuni Me Përgjegjësin"; -"room_displayname_two_members" = "%@ dhe %@"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "dërgoi një figurë."; -"message_reply_to_sender_sent_a_video" = "dërgoi një video."; -"message_reply_to_sender_sent_an_audio_file" = "dërgoi një kartelë audio."; -"message_reply_to_sender_sent_a_file" = "dërgoi një kartelë."; -"message_reply_to_message_to_reply_to_prefix" = "Në përgjigje të"; -"e2e_passphrase_create" = "Krijoni frazëkalim"; -"room_event_encryption_info_event_fingerprint_key" = "U pretendua për kyç Ed25519 shenjash gishtash\n"; -"notice_feedback" = "Akt dhënieje përshtypjesh (id: %@): %@"; -"account_error_push_not_allowed" = "Nuk lejohen njoftime"; -"notice_room_third_party_revoked_invite" = "%@ shfuqizoi ftesën për pjesëmarrje në dhomë për %@"; -"device_details_rename_prompt_title" = "Emër Sesioni"; -"notice_encryption_enabled_ok" = "%@ aktivizoi fshehtëzimin skaj-më-skaj."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ aktivizoi fshehtëzimin skaj-më-skaj (algoritëm që s’është njohur %2$@)."; -// Notice Events with "You" -"notice_room_invite_by_you" = "Ftuat %@"; -"notice_room_invite_you" = "Ju ftoi %@"; -"notice_room_third_party_invite_by_you" = "I dërguat %@ një ftesë të marrë pjesë te dhoma"; -"notice_room_third_party_registered_invite_by_you" = "Pranuat ftesën nga %@"; -"notice_room_third_party_revoked_invite_by_you" = "Shfuqizuat ftesën për ardhje në dhomë për %@"; -"notice_room_join_by_you" = "Erdhët"; -"notice_room_leave_by_you" = "Ikët"; -"notice_room_reject_by_you" = "Hodhët poshtë ftesën"; -"notice_room_kick_by_you" = "Përzutë %@"; -"notice_room_unban_by_you" = "Hoqët dëbimin për %@"; -"notice_room_ban_by_you" = "Dëbuat %@"; -"notice_room_withdraw_by_you" = "Tërhoqët mbrapsht ftesën për %@"; -"notice_avatar_url_changed_by_you" = "Ndryshuat avatarin tuaj"; -"notice_display_name_set_by_you" = "Caktuat si emrin tuaj në ekran %@"; -"notice_display_name_changed_from_by_you" = "Ndryshuat emrin tuaj në ekran nga %@ në %@"; -"notice_display_name_removed_by_you" = "Hoqët emrin tuaj në ekran"; -"notice_topic_changed_by_you" = "E ndryshuat temën në \"%@\"."; -"notice_room_name_changed_by_you" = "E ndryshuat emrin e dhomës në \"%@\"."; -"notice_placed_voice_call_by_you" = "Bëtë një thirrje zanore"; -"notice_placed_video_call_by_you" = "Bëtë një thirrje video"; -"notice_answered_video_call_by_you" = "Iu përgjigjët thirrjes"; -"notice_ended_video_call_by_you" = "E përfunduat thirrjen"; -"notice_conference_call_request_by_you" = "Kërkuat një konferencë VoIP"; -"notice_room_name_removed_by_you" = "Hoqët emrin e dhomës"; -"notice_room_topic_removed_by_you" = "Hoqët temën"; -"notice_event_redacted_by_you" = " nga ju"; -"notice_profile_change_redacted_by_you" = "Përditësuat profilin tuaj %@"; -"notice_room_created_by_you" = "Krijuat dhe formësuat dhomën."; -"notice_encryption_enabled_ok_by_you" = "Aktivizuat fshehtëzimin skaj-më-skaj."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Aktivizuat fshehtëzim skaj-më-skaj (algoritëm %@ i papranuar)."; -"notice_redaction_by_you" = "Redaktuat një akt (id: %@)"; -"notice_room_history_visible_to_anyone_by_you" = "E bëtë historikun e ardhshëm të dhomës të dukshëm për këdo."; -"notice_room_history_visible_to_members_by_you" = "E bëtë historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "E bëtë historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës, nga çasti që janë ftuar."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "E bëtë historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës, që nga çasti që bëhen pjesë e dhomës."; -// New -"notice_room_join_rule_invite" = "%@ e bëri dhomën vetëm me ftesa."; -"notice_room_join_rule_invite_by_you" = "E bëtë dhomën vetëm me ftesa."; -"notice_room_join_rule_public" = "%@ e bëri dhomën publike."; -"notice_room_join_rule_public_by_you" = "E bëtë dhomën publike."; -"notice_room_name_removed_for_dm" = "%@ hoqi emrin"; -"notice_room_created_for_dm" = "%@ hyri."; -"notice_room_join_rule_invite_for_dm" = "%@ e bëri këtë “vetëm me ftesa”."; -"notice_room_join_rule_invite_by_you_for_dm" = "E bëtë këtë “vetëm me ftesa”."; -"notice_room_join_rule_public_for_dm" = "%@ e bëri këtë publike."; -"notice_room_join_rule_public_by_you_for_dm" = "E bëtë këtë publike."; -"notice_room_power_level_intro_for_dm" = "Shkallë pushteti që kanë anëtarët:"; -"notice_room_aliases_for_dm" = "Aliaset janë: %@"; -"notice_room_history_visible_to_members_for_dm" = "%@ i bëri mesazhet e ardhshëm të dukshëm për krejt anëtarët e dhomës."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ i bëri mesazhet e ardhshëm të dukshëm për këdo, që nga çasti që ftohen."; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ i bëri mesazhet e ardhshëm të dukshëm për këdo, që nga çasti bëhen pjesë e bisedës."; -"room_left_for_dm" = "Dolët"; -"notice_room_third_party_invite_for_dm" = "%@ ftoi %@"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ shfuqizoi ftesën për %@"; -"notice_room_name_changed_for_dm" = "%@ ndryshoi emrin në %@."; -"notice_room_third_party_invite_by_you_for_dm" = "Ftuat %@"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Shfuqizuar ftesën për %@"; -"notice_room_name_changed_by_you_for_dm" = "Ndryshuat emrin në %@."; -"notice_room_name_removed_by_you_for_dm" = "Hoqët emrin"; -"notice_room_created_by_you_for_dm" = "Hytë."; -"notice_room_history_visible_to_members_by_you_for_dm" = "I bëtë mesazhet e ardhshëm të dukshëm për krejt anëtarët e dhomës."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "I bëtë mesazhet e ardhshëm të dukshëm për këdo, nga çasti që ftohen."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "I bëtë mesazhet e ardhshëm të dukshëm për këdo, nga çasti që hyjnë në bisedë."; -"resume_call" = "Rimerre"; -"call_holded" = "E mbajtët pezull thirrjen"; -"notice_declined_video_call" = "%@ e hodhi poshtë thirrjen"; -"notice_declined_video_call_by_you" = "E hodhët poshtë thirrjen"; -"call_remote_holded" = "%@ e mbajti pezull thirrjen"; -"call_more_actions_hold" = "Mbaje pezull"; -"call_more_actions_unhold" = "Rimerre"; -"call_more_actions_change_audio_device" = "Ndryshoni Pajisje Audio"; -"call_more_actions_audio_use_headset" = "Përdorni Kufje dhe Mikrofon"; -"call_more_actions_audio_use_device" = "Altoparlant Pajisjeje"; -"call_more_actions_transfer" = "Shpërngule"; -"call_more_actions_dialpad" = "Tastierë numerike"; -"call_transfer_to_user" = "Shpërngulje te %@"; -"call_consulting_with_user" = "Konsultim me %@"; -"call_video_with_user" = "Thirrje me video me %@"; -"call_voice_with_user" = "Thirrje me zë me %@"; -"call_ringing" = "Po i bihet ziles…"; -"e2e_passphrase_too_short" = "Frazëkalim shumë i shkurtër (Duhet të jetë e pakta %d shenja i gjatë)"; -"microphone_access_not_granted_for_voice_message" = "Mesazhet zanorë lypin përdorim të Mikrofonit, por %@ s’ka leje përdorimi të tij"; -"message_reply_to_sender_sent_a_voice_message" = "dërgoi një mesazh zanor."; -"attachment_large_with_resolution" = "E madhe %@ (~%@)"; -"attachment_medium_with_resolution" = "Mesatare %@ (~%@)"; -"attachment_small_with_resolution" = "E vogël %@ (~%@)"; -"attachment_size_prompt_message" = "Këtë mund ta çaktivizoni te rregullimet."; -"attachment_size_prompt_title" = "Ripohoni madhësi për dërgim"; -"auth_reset_password_error_not_found" = "S’u gjet"; -"auth_reset_password_error_unauthorized" = "I paautorizuar"; -"auth_username_in_use" = "Emër përdoruesi i përdorur"; -"auth_invalid_user_name" = "Emër i pavlefshëm përdoruesi"; -"rename" = "Riemërtojeni"; -"attachment_unsupported_preview_message" = "Ky lloj kartele nuk mbulohet."; -"attachment_unsupported_preview_title" = "S’arrihet të bëhet paraparje"; -"room_displayname_all_other_members_left" = "%@ (Iku)"; -"message_reply_to_sender_sent_their_location" = "ka dhënë vendndodhjen e vet."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/sv.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/sv.lproj/MatrixKit.strings deleted file mode 100644 index 79192a6e2..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/sv.lproj/MatrixKit.strings +++ /dev/null @@ -1,481 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Skapa konto:"; -"login_server_url_placeholder" = "URL (t.ex. https://matrix.org)"; -"login_home_server_title" = "Hemserver-URL:"; -"login_home_server_info" = "Din hemserver lagrar alla dina konversationer och din kontodata"; -"login_identity_server_title" = "Identitetsserver-URL:"; -"login_identity_server_info" = "Matrix tillhandahåller identitetsservrar för att spåra vilka e-postadresser o.s.v. som tillhör vilka Matrix-ID:n. Endast https://matrix.org finns för närvarande."; -"login_user_id_placeholder" = "Matrix-ID (t.ex. @bob:matrix.org eller bob)"; -"login_password_placeholder" = "Lösenord"; -"login_optional_field" = "valfritt"; -"login_display_name_placeholder" = "Visningsnamn (t.ex. Sven Svensson)"; -"login_email_info" = "Genom att ange en e-postadress kan andra användare hitta dig på Matrix lättare, och det ger dig ett sätt att återställa ditt lösenord i framtiden."; -"login_email_placeholder" = "E-postadress"; -"login_prompt_email_token" = "Ange din e-postvalideringstoken:"; -"login_error_title" = "Inloggning misslyckades"; -"login_error_no_login_flow" = "Vi misslyckades att hämta autentiseringsinformation från den här hemservern"; -"login_error_do_not_support_login_flows" = "För närvarande stöder vi inte några eller alla inloggningsflöden som har definierats av den här hemservern"; -"login_error_registration_is_not_supported" = "Registrering stöds inte för närvarande"; -"login_error_forbidden" = "Ogiltigt användarnamn eller lösenord"; -"login_error_unknown_token" = "Den åtkomsttoken som specificerades kändes inte igen"; -"login_error_bad_json" = "Felformaterad JSON"; -"login_error_not_json" = "Innehöll inte giltig JSON"; -"login_error_limit_exceeded" = "För många förfrågningar har skickats"; -"login_error_user_in_use" = "Det här användarnamnet har redan använts"; -"login_error_login_email_not_yet" = "E-postlänken har inte klickats än"; -"login_use_fallback" = "Använd reservsida"; -"login_leave_fallback" = "Avbryt"; -"login_invalid_param" = "Ogiltig parameter"; -"register_error_title" = "Registrering misslyckades"; -"login_error_forgot_password_is_not_supported" = "Lösenordsåterställning stöds ännu inte"; -"login_mobile_device" = "Mobil"; -"login_tablet_device" = "Surfplatta"; -"login_desktop_device" = "Skrivbord"; -"login_error_resource_limit_exceeded_title" = "Resursgräns överskriden"; -"login_error_resource_limit_exceeded_message_default" = "Hemservern har överskridit en av sina resursgränser."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Den här hemservern har nått sin gräns för aktiva användare per månad."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nVänligen kontakta din tjänstadministratör för att fortsätta använda den här tjänsten."; -"login_error_resource_limit_exceeded_contact_button" = "Kontakta administratör"; -// Action -"no" = "Nej"; -"yes" = "Ja"; -"abort" = "Avbryt"; -"back" = "Tillbaka"; -"close" = "Stäng"; -"continue" = "Fortsätt"; -"discard" = "Släng"; -"dismiss" = "Avvisa"; -"retry" = "Försök igen"; -"sign_up" = "Bli medlem"; -"submit" = "Skicka"; -"submit_code" = "Skicka kod"; -"set_power_level" = "Sätt behörighetsnivå"; -"set_default_power_level" = "Återställ behörighetsnivå"; -"set_moderator" = "Sätt till moderator"; -"set_admin" = "Sätt till administratör"; -"start_chat" = "Starta chatt"; -"start_voice_call" = "Starta röstsamtal"; -"start_video_call" = "Starta videosamtal"; -"mention" = "Nämn"; -"select_account" = "Välj ett konto"; -"attach_media" = "Bifoga media från biblioteket"; -"capture_media" = "Ta bild/video"; -"invite_user" = "Bjud in Matrixanvändare"; -"reset_to_default" = "Återställ till standard"; -"resend_message" = "Skicka meddelandet igen"; -"select_all" = "Välj allt"; -"cancel_upload" = "Avbryt uppladdning"; -"cancel_download" = "Avbryt nedladdning"; -"show_details" = "Visa detaljer"; -"answer_call" = "Svara på samtal"; -"reject_call" = "Avvisa samtal"; -"end_call" = "Avsluta samtal"; -"ignore" = "Ignorera"; -"unignore" = "Avignorera"; -// Events formatter -"notice_avatar_changed_too" = "(avataren byttes också)"; -"notice_room_name_removed" = "%@ tog bort rumsnamnet"; -"notice_room_topic_removed" = "%@ tog bort ämnet"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " av %@"; -"notice_event_redacted_reason" = " [anledning: %@]"; -"notice_profile_change_redacted" = "%@ uppdaterade sin profil %@"; -"notice_room_created" = "%@ skapade och konfigurerade rummet."; -"notice_room_join_rule" = "Regeln för att gå med är: %@"; -"notice_room_power_level_intro" = "Behörighetsnivå för rumsmedlemmar är:"; -"notice_room_power_level_acting_requirement" = "Den minimala behörighetsnivån en användare behöver har innan den kan göra något är:"; -"notice_room_power_level_event_requirement" = "Den minimala behörighetsnivån relaterad till händelser är:"; -"notice_room_aliases" = "Rumsaliasen är: %@"; -"notice_room_related_groups" = "Grupperna associerade med det här rummet är: %@"; -"notice_encrypted_message" = "Krypterat meddelande"; -"notice_encryption_enabled_ok" = "%@ aktiverade totalsträckskryptering."; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ aktiverade totalsträckskryptering (okänd algoritm %2$@)."; -"notice_image_attachment" = "bildbilaga"; -"notice_audio_attachment" = "ljudbilaga"; -"notice_video_attachment" = "videobilaga"; -"notice_location_attachment" = "positionsbilaga"; -"notice_file_attachment" = "filbilaga"; -"notice_invalid_attachment" = "ogiltig bilaga"; -"notice_unsupported_attachment" = "Ostödd bilaga: %@"; -"notice_feedback" = "Återkopplingshändelse (id: %@): %@"; -"notice_redaction" = "%@ dolde en händelse (id: %@)"; -"notice_error_unsupported_event" = "Ostödd händelse"; -"notice_error_unexpected_event" = "Oväntad händelse"; -"notice_error_unknown_event_type" = "Okänd händelsetyp"; -"notice_room_history_visible_to_anyone" = "%@ gjorde framtida rumshistorik synlig för alla."; -"notice_room_history_visible_to_members" = "%@ gjorde framtida rumshistorik synlig för alla rumsmedlemmar."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ gjorde framtida rumshistorik synlig för alla rumsmedlemmar från när de bjöds in."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ gjorde framtida rumshistorik synlig för alla rumsmedlemmar från när de gick med."; -"notice_crypto_unable_to_decrypt" = "** Kunde inte avkryptera: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "Avsändarens session har inte gett oss nycklarna för det här meddelandet."; -"notice_sticker" = "dekal"; -"notice_in_reply_to" = "Svar på"; -// room display name -"room_displayname_empty_room" = "Tomt rum"; -"room_displayname_two_members" = "%@ och %@"; -"room_displayname_more_than_two_members" = "%@ och %@ till"; -// Settings -"settings" = "Inställningar"; -"settings_enable_inapp_notifications" = "Aktivera aviseringar i appen"; -"settings_enable_push_notifications" = "Aktivera pushnotiser"; -"settings_enter_validation_token_for" = "Ange valideringstoken för &@:"; -"notification_settings_room_rule_title" = "Rum: '%@'"; -// Devices -"device_details_title" = "Sessionsinformation\n"; -"device_details_name" = "Offentligt namn\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "Senast sedd\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_title" = "Sessionsnamn"; -"device_details_rename_prompt_message" = "En sessions offentliga namn är synligt för personer du kommunicerar med"; -"device_details_delete_prompt_title" = "Autentisering"; -"device_details_delete_prompt_message" = "Den här handlingen kräver ytterligare autentisering.\nFör att fortsätta, vänligen ange ditt lösenord."; -// Encryption information -"room_event_encryption_info_title" = "Totalsträckskrypteringsinformation\n\n"; -"room_event_encryption_info_event" = "Händelseinformation\n"; -"room_event_encryption_info_event_user_id" = "Användar-ID\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519-identitetsnyckel\n"; -"room_event_encryption_info_event_fingerprint_key" = "Hävdad Ed25519-fingeravtrycksnyckel\n"; -"room_event_encryption_info_event_algorithm" = "Algoritm\n"; -"room_event_encryption_info_event_session_id" = "Sessions-ID\n"; -"room_event_encryption_info_event_decryption_error" = "Avkrypteringsfel\n"; -"room_event_encryption_info_event_unencrypted" = "okrypterad"; -"room_event_encryption_info_event_none" = "ingen"; -"room_event_encryption_info_device" = "\nAvsändarens sessionsinformation\n"; -"room_event_encryption_info_device_unknown" = "Okänd session\n"; -"room_event_encryption_info_device_name" = "Offentligt namn\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "Verifiering\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519-fingeravtryck\n"; -"room_event_encryption_info_device_verified" = "Verifierad"; -"room_event_encryption_info_device_not_verified" = "INTE verifierad"; -"room_event_encryption_info_device_blocked" = "Svartlistad"; -"room_event_encryption_info_verify" = "Verifiera…"; -"room_event_encryption_info_unverify" = "Avverifiera"; -"room_event_encryption_info_block" = "Svartlista"; -"room_event_encryption_info_unblock" = "Avsvartlista"; -"room_event_encryption_verify_title" = "Verifiera session\n\n"; -"room_event_encryption_verify_message" = "För att verifiera att denna session går att lita på, vänligen kontakta ägaren på annat sätt (t.ex. personligen eller med ett telefonsamtal) och fråga dem om nyckeln de ser i sina användarinställningar för den här sessionen matchar nyckeln nedan:\n\n\tSessionsnamn: %@\n\tSessions-ID: %@\n\tSessionsnyckel: %@\n\nOm de matchar, tryck på verifieringsknappen nedan. Om de inte gör det så betyder det att någon annan snappar upp denna session och du vill antagligen trycka på svartlistknappen istället.\n\nI framtiden kommer denna verifieringsprocess att bli mer sofistikerad."; -"room_event_encryption_verify_ok" = "Verifiera"; -// Account -"account_save_changes" = "Spara ändringar"; -"account_link_email" = "Länka e-post"; -"account_linked_emails" = "Länkade e-postadresser"; -"account_email_validation_title" = "Avvaktar verifiering"; -"account_email_validation_message" = "Vänligen kolla din e-post och klicka på länken den innehåller. När detta är klart, klicka fortsätt."; -"account_email_validation_error" = "Kunde inte verifiera e-postadressen. Kontrollera din e-post och klicka på länken den innehåller. När detta är klart, klicka på fortsätt"; -"account_msisdn_validation_title" = "Avvaktar verifiering"; -"account_msisdn_validation_message" = "Vi har skickat ett SMS med en aktiveringskod. Ange den koden nedan."; -"account_msisdn_validation_error" = "Kunde inte verifiera telefonnummer."; -"account_error_display_name_change_failed" = "Byte av visningsnamn misslyckades"; -"account_error_picture_change_failed" = "Byte av bild misslyckades"; -"account_error_matrix_session_is_not_opened" = "Matrixsession har inte öppnats"; -"account_error_email_wrong_title" = "Ogiltig e-postadress"; -"account_error_email_wrong_description" = "Det här ser inte ut som en giltig e-postadress"; -"account_error_msisdn_wrong_title" = "Ogiltigt telefonnummer"; -"account_error_msisdn_wrong_description" = "Det här ser inte ut som ett giltigt telefonnummer"; -"account_error_push_not_allowed" = "Aviseringar tillåts inte"; -// Room creation -"room_creation_name_title" = "Rumsnamn:"; -"room_creation_name_placeholder" = "(t.ex. lunchgrupp)"; -"room_creation_alias_title" = "Rumsalias:"; -"room_creation_alias_placeholder" = "(t.ex. #foo:exempel.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(t.ex. #foo%@)"; -"room_creation_participants_title" = "Deltagare:"; -"room_creation_participants_placeholder" = "(t.ex. @sven:hemserver1; @anna:hemserver2…)"; -// Room -"room_please_select" = "Vänligen välj ett rum"; -"room_error_join_failed_title" = "Misslyckades att gå med i rum"; -"room_error_join_failed_empty_room" = "Det går för närvarande inte att gå med i ett tomt rum."; -"room_error_name_edition_not_authorized" = "Du är inte auktoriserad att redigera det här rummets namn"; -"room_error_topic_edition_not_authorized" = "Du är inte auktoriserad att ändra det här rummets ämne"; -"room_error_cannot_load_timeline" = "Misslyckades att ladda tidslinjen"; -"room_error_timeline_event_not_found_title" = "Misslyckades att ladda position på tidslinjen"; -"room_error_timeline_event_not_found" = "Appen försökte ladda en viss punkt i detta rums tidslinje men kunde inte hitta den"; -"room_left" = "Du lämnade rummet"; -"room_no_power_to_create_conference_call" = "Du behöver behörighet att bjuda in personer för att starta ett gruppsamtal i det här rummet"; -"room_no_conference_call_in_encrypted_rooms" = "Gruppsamtal stöds inte i krypterade rum"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "skickade en bild."; -"message_reply_to_sender_sent_a_video" = "skickade en video."; -"message_reply_to_sender_sent_an_audio_file" = "skickade en ljudfil."; -"message_reply_to_sender_sent_a_file" = "skickade en fil."; -"message_reply_to_message_to_reply_to_prefix" = "Svar på"; -// Room members -"room_member_ignore_prompt" = "Är du säker på att du vill dölja alla meddelande från den här användaren?"; -"room_member_power_level_prompt" = "Du kommer inte att kunna ångra denna ändring eftersom du befordrar användaren till samma behörighetsnivå som dig själv.\nÄr du säker?"; -// Attachment -"attachment_size_prompt" = "Vill du skicka som:"; -"attachment_original" = "Faktisk storlek (%@)"; -"attachment_small" = "Liten (%@)"; -"attachment_medium" = "Mellan (%@)"; -"attachment_large" = "Stor (%@)"; -"attachment_cancel_download" = "Avbryt nedladdningen?"; -"attachment_cancel_upload" = "Avbryt uppladdningen?"; -"attachment_multiselection_size_prompt" = "Vill du skicka bilder som:"; -"attachment_multiselection_original" = "Faktisk storlek"; -"attachment_e2e_keys_file_prompt" = "Den här filen innehåller krypteringsnycklar som har exporteras från en Matrixklient.\nVill du visa filinnehållet eller importera nycklarna som den innehåller?"; -"attachment_e2e_keys_import" = "Importera…"; -// Contacts -"contact_mx_users" = "Matrixanvändare"; -"contact_local_contacts" = "Lokala kontakter"; -// Groups -"group_invite_section" = "Inbjudningar"; -"group_section" = "Grupper"; -// Search -"search_no_results" = "Inga resultat"; -"search_searching" = "Sökning pågår…"; -// Time -"format_time_s" = "s"; -"format_time_m" = "m"; -"format_time_h" = "t"; -"format_time_d" = "d"; -// E2E import -"e2e_import_room_keys" = "Importera rumsnycklar"; -"e2e_import_prompt" = "Denna process låter dig importera krypteringsnycklar som du tidigare har exporterat från en annan Matrixklient. Du kommer då kunna avkryptera alla meddelanden som den andra klienten kan avkryptera.\nExportfilen är skyddad med en lösenfras. Du bör ange lösenfrasen här för att avkryptera filen."; -"e2e_import" = "Importera"; -"e2e_passphrase_enter" = "Ange lösenfras"; -// E2E export -"e2e_export_room_keys" = "Exportera rumsnycklar"; -"e2e_export_prompt" = "Denna process låter dig exportera nycklarna för meddelanden som du har fått i krypterade rum till en lokal fil. Du kommer då att kunna importera filen till en annan Matrixklient i framtiden, så att klienten också kan avkryptera dessa meddelanden.\nDen exporterade filen tillåter alla som kan läsa den att avkryptera alla krypterade meddelanden som du kan se, så du bör vara noga med att hålla den säker."; -"e2e_export" = "Exportera"; -"e2e_passphrase_confirm" = "Bekräfta lösenfras"; -"e2e_passphrase_empty" = "Lösenfrasen får inte var tom"; -"e2e_passphrase_not_match" = "Lösenfraserna måste matcha"; -"e2e_passphrase_create" = "Skapa lösenfras"; -// Others -"user_id_title" = "Användar-ID:"; -"offline" = "offline"; -"unsent" = "Oskickad"; -"error" = "Fel"; -"error_common_message" = "Ett fel inträffade. Försök igen senare."; -"not_supported_yet" = "Stöds inte än"; -"default" = "förval"; -"private" = "Privat"; -"public" = "Offentlig"; -"power_level" = "Behörighetsnivå"; -"network_error_not_reachable" = "Vänligen kolla din nätverksuppkoppling"; -"user_id_placeholder" = "t.ex.: @sven:hemserver"; -"ssl_homeserver_url" = "Hemserver-URL: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Videosamtal kräver åtkomst till kameran men %@ är inte behörig att använda den"; -"microphone_access_not_granted_for_call" = "Samtal kräver åtkomst till mikrofonen men %@ är inte behörig att använda den"; -"local_contacts_access_not_granted" = "Upptäckt av användare från lokala kontakter kräver åtkomst till dina kontakter men %@ är inte behörig att komma åt dem"; -"local_contacts_access_discovery_warning_title" = "Användarupptäckt"; -"local_contacts_access_discovery_warning" = "För att upptäcka kontakter som redan använder Matrix kan %@ skicka e-postadresser och telefonnummer i din adressbok till din valda Matrixidentitetsserver. Där det stöds hashas personuppgifter innan de skickas - kontrollera din identitetsservers integritetspolicy för mer information."; -// Country picker -"country_picker_title" = "Välj ett land"; -// Language picker -"language_picker_title" = "Välj ett språk"; -"language_picker_default_language" = "Förval (%@)"; -"notice_room_invite" = "%@ bjöd in %@"; -"notice_room_third_party_invite" = "%@ skickade bjöd in %@ att gå med i rummet"; -"notice_room_third_party_registered_invite" = "%@ accepterade inbjudan för %@"; -"notice_room_third_party_revoked_invite" = "%@ drog tillbaka inbjudan för %@ att gå med i rummet"; -"notice_room_join" = "%@ gick med"; -"notice_room_leave" = "%@ lämnade"; -"notice_room_reject" = "%@ avvisade inbjudan"; -"notice_room_kick" = "%@ kickade %@"; -"notice_room_unban" = "%@ avbannade %@"; -"notice_room_ban" = "%@ bannade %@"; -"notice_room_withdraw" = "%@ drog tillbaka inbjudan för %@"; -"notice_room_reason" = ". Anledning: %@"; -"notice_avatar_url_changed" = "%@ bytte sin avatar"; -"notice_display_name_set" = "%@ satte sitt visningsnamn till %@"; -"notice_display_name_changed_from" = "%@ bytte sitt visningsnamn från %@ till %@"; -"notice_display_name_removed" = "%@ tog bort sitt visningsnamn"; -"notice_topic_changed" = "%@ bytte ämnet till \"%@\"."; -"notice_room_name_changed" = "%@ bytte rummets namn till %@."; -"notice_placed_voice_call" = "%@ startade ett röstsamtal"; -"notice_placed_video_call" = "%@ startade ett videosamtal"; -"notice_answered_video_call" = "%@ svarade på samtalet"; -"notice_ended_video_call" = "%@ avslutade samtalet"; -"notice_conference_call_request" = "%@ begärde ett VoIP-gruppsamtal"; -"notice_conference_call_started" = "VoIP-gruppsamtal startat"; -"notice_conference_call_finished" = "VoIP-gruppsamtal avslutat"; -// Notice Events with "You" -"notice_room_invite_by_you" = "Du bjöd in %@"; -"notice_room_invite_you" = "%@ bjöd in dig"; -"notice_room_third_party_invite_by_you" = "Du bjöd in %@ att gå med i rummet"; -"notice_room_third_party_registered_invite_by_you" = "Du accepterade inbjudan för %@"; -"notice_room_third_party_revoked_invite_by_you" = "Du drog tillbaka inbjudan för %@ att gå med i rummet"; -"notice_room_join_by_you" = "Du gick med"; -"notice_room_leave_by_you" = "Du lämnade"; -"notice_room_reject_by_you" = "Du avvisade inbjudan"; -"notice_room_kick_by_you" = "Du kickade %@"; -"notice_room_unban_by_you" = "Du avbannade %@"; -"notice_room_ban_by_you" = "Du bannade %@"; -"notice_room_withdraw_by_you" = "Du drog tillbaka inbjudan för %@"; -"notice_avatar_url_changed_by_you" = "Du bytte din avatar"; -"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_removed_by_you" = "Du tog bort ditt visningsnamn"; -"notice_topic_changed_by_you" = "Du bytte ämnet till \"%@\"."; -"notice_room_name_changed_by_you" = "Du bytte rummets namn till %@."; -"notice_placed_voice_call_by_you" = "Du startade ett röstsamtal"; -"notice_placed_video_call_by_you" = "Du startade ett videosamtal"; -"notice_answered_video_call_by_you" = "Du svarade på samtalet"; -"notice_ended_video_call_by_you" = "Du avslutade samtalet"; -"notice_conference_call_request_by_you" = "Du begärde ett VoIP-gruppsamtal"; -"notice_room_name_removed_by_you" = "Du tog bort rummets namn"; -"notice_room_topic_removed_by_you" = "Du tog bort ämnet"; -"notice_event_redacted_by_you" = " av dig"; -"notice_profile_change_redacted_by_you" = "Du uppdaterade din profil %@"; -"notice_room_created_by_you" = "Du skapade och konfigurerade rummet."; -"notice_encryption_enabled_ok_by_you" = "Du aktiverade totalsträckskryptering."; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Du aktiverade totalsträckskryptering (okänd algoritm %@)."; -"notice_redaction_by_you" = "Du dolde en händelse (id: %@)"; -"notice_room_history_visible_to_anyone_by_you" = "Du gjorde framtida rumshistorik synlig för alla."; -"notice_room_history_visible_to_members_by_you" = "Du gjorde framtida rumshistorik synlig för alla rumsmedlemmar."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Du gjorde framtida rumshistorik synlig för alla rumsmedlemmar från när de bjöds in."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Du gjorde framtida rumshistorik synlig för alla rumsmedlemmar från när de gick med."; -// button names -"ok" = "OK"; -"cancel" = "Avbryt"; -"save" = "Spara"; -"leave" = "Lämna"; -"send" = "Skicka"; -"copy_button_name" = "Kopiera"; -"resend" = "Skicka igen"; -"redact" = "Ta bort"; -"share" = "Dela"; -"delete" = "Radera"; -"view" = "Visa"; -// actions -"action_logout" = "Logga ut"; -"create_room" = "Skapa rum"; -"login" = "Logga in"; -"create_account" = "Skapa konto"; -"membership_invite" = "Inbjuden"; -"membership_leave" = "Lämnade"; -"membership_ban" = "Bannade"; -"num_members_one" = "%@ användare"; -"num_members_other" = "%@ användare"; -"invite" = "Bjud in"; -"kick" = "Kicka"; -"ban" = "Banna"; -"unban" = "Avbanna"; -"message_unsaved_changes" = "Det finns osparade ändringar. Att lämna kommer att slänga dem."; -// Login Screen -"login_error_already_logged_in" = "Redan inloggad"; -"login_error_must_start_http" = "URL:en måste börja på http[s]://"; -// room details dialog screen -"room_details_title" = "Rumsdetaljer"; -// contacts list screen -"invitation_message" = "Jag vill chatta med dig på Matrix. Besök sidan https://matrix.org för mer information."; -// Settings screen -"settings_title_config" = "Konfiguration"; -"settings_title_notifications" = "Aviseringar"; -// Notification settings screen -"notification_settings_disable_all" = "Inaktivera alla aviseringar"; -"notification_settings_enable_notifications" = "Aktivera aviseringar"; -"notification_settings_enable_notifications_warning" = "Alla aviseringar är för närvarande inaktiverade för alla enheter."; -"notification_settings_global_info" = "Aviseringsinställningar sparas i ditt användarkonto och delas mellan alla klienter som stöder dem (inklusive skrivbordsaviseringar).\n\nRegler tillämpas i ordning; den första regeln som matchar definierar resultatet för meddelandet.\nSå: Aviseringar per ord är viktigare än aviseringar per rum som är viktigare än aviseringar per avsändare.\nFör flera regler av samma slag prioriteras den första i listan som matchar."; -"notification_settings_per_word_notifications" = "Aviseringar per ord"; -"notification_settings_per_word_info" = "Matchning av ord är inte skiftlägeskänsligt, och kan innehålla ett jokertecken (*). Så:\nfoo matchar strängen foo omgiven av ordavgränsare (t.ex. skiljetecken och mellanslag eller start/slut på rad).\nfoo* matchar alla ord som börjar foo.\n*foo* matchar alla ord som innehåller de tre bokstäverna foo."; -"notification_settings_always_notify" = "Avisera alltid"; -"notification_settings_never_notify" = "Avisera aldrig"; -"notification_settings_word_to_match" = "ord att matcha"; -"notification_settings_highlight" = "Markera"; -"notification_settings_custom_sound" = "Anpassade ljud"; -"notification_settings_per_room_notifications" = "Aviseringar per rum"; -"notification_settings_per_sender_notifications" = "Aviseringar per avsändare"; -"notification_settings_sender_hint" = "@användare:domän.com"; -"notification_settings_select_room" = "Välj ett rum"; -"notification_settings_other_alerts" = "Andra larm"; -"notification_settings_contain_my_user_name" = "Avisera mig med ett ljud om meddelande som innehåller mitt användarnamn"; -"notification_settings_contain_my_display_name" = "Avisera mig med ett ljud om meddelande som innehåller mitt visningsnamn"; -"notification_settings_just_sent_to_me" = "Avisera med ett ljud om meddelanden skickade till bara mig"; -"notification_settings_invite_to_a_new_room" = "Avisera mig när jag bjuds in till ett nytt rum"; -"notification_settings_people_join_leave_rooms" = "Avisera mig när personer går med i eller lämnar rum"; -"notification_settings_receive_a_call" = "Avisera mig när jag får ett samtal"; -"notification_settings_suppress_from_bots" = "Dämpa aviseringar från bottar"; -"notification_settings_by_default" = "Som förval…"; -"notification_settings_notify_all_other" = "Avisera för alla andra meddelanden/rum"; -// gcm section -"settings_config_home_server" = "Hemserver: %@"; -"settings_config_identity_server" = "Identitetsserver: %@"; -"settings_config_user_id" = "Användar-ID: %@"; -// call string -"call_waiting" = "Väntar…"; -"call_connecting" = "Ansluter…"; -"call_ended" = "Samtal avslutat"; -"call_ring" = "Ringer…"; -"incoming_video_call" = "Inkommande videosamtal"; -"incoming_voice_call" = "Inkommande röstsamtal"; -"call_invite_expired" = "Samtalsinbjudan har löpt ut"; -// unrecognized SSL certificate -"ssl_trust" = "Lita"; -"ssl_logout_account" = "Logga ut"; -"ssl_remain_offline" = "Ignorera"; -"ssl_fingerprint_hash" = "Fingeravtryck (%@):"; -"ssl_could_not_verify" = "Kunde inte verifiera fjärrserverns identitet."; -"ssl_cert_not_trust" = "Det kan betyda att någon genskjuter din trafik eller att din telefon inte litar på certifikatet från fjärrservern."; -"ssl_cert_new_account_expl" = "Om serveradministratören har sagt att detta förväntas, kolla att fingeravtrycket nedan matchar det fingeravtryck som de tillhandahåller."; -"ssl_unexpected_existing_expl" = "Certifikatet har ändrats från ett som din telefon litade på. Detta är MYCKET OVANLIGT. Det rekommenderas att du INTE ACCEPTERAR detta nya certifikat."; -"ssl_expected_existing_expl" = "Certifikatet har ändrats från ett som din telefon litade på till ett som inte är betrott. Servern kan ha förnyat sitt certifikat. Kontakta serveradministratören för det förväntade fingeravtrycket."; -"ssl_only_accept" = "Acceptera ENDAST certifikatet om serveradministratören har publicerat ett fingeravtryck som matchar ovanstående."; -"notice_room_name_removed_for_dm" = "%@ tog bort namnet"; -"notice_room_created_for_dm" = "%@ gick med."; -// New -"notice_room_join_rule_invite" = "%@ ändrade rummet till endast inbjudna."; -"notice_room_join_rule_invite_for_dm" = "%@ ändrade detta till endast inbjudna."; -"notice_room_join_rule_invite_by_you" = "Du ändrade rummet till endast inbjudna."; -"notice_room_join_rule_invite_by_you_for_dm" = "Du ändrade detta till endast inbjudna."; -"notice_room_join_rule_public" = "%@ gjorde rummet offentligt."; -"notice_room_join_rule_public_for_dm" = "%@ gjorde detta offentligt."; -"notice_room_join_rule_public_by_you" = "Du gjorde rummet offentligt."; -"notice_room_join_rule_public_by_you_for_dm" = "Du gjorde detta offentligt."; -"notice_room_power_level_intro_for_dm" = "Behörighetsnivå för medlemmar är:"; -"notice_room_aliases_for_dm" = "Aliasen är: %@"; -"notice_room_history_visible_to_members_for_dm" = "%@ gjorde framtida meddelanden synliga för alla rumsmedlemmar."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ gjorde framtida meddelanden synliga för alla från när de bjöds in."; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ gjorde framtida meddelanden synliga för alla från när de gick med."; -"room_left_for_dm" = "Du lämnade"; -"notice_room_third_party_invite_for_dm" = "%@ bjöd in %@"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ drog tillbaka inbjudan för %@"; -"notice_room_name_changed_for_dm" = "%@ bytte namnet till %@."; -"notice_room_third_party_invite_by_you_for_dm" = "Du bjöd in %@"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Du drog tillbaka inbjudan för %@"; -"notice_room_name_changed_by_you_for_dm" = "Du bytte namnet till %@."; -"notice_room_name_removed_by_you_for_dm" = "Du tog bort namnet"; -"notice_room_created_by_you_for_dm" = "Du gick med."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Du gjorde framtida meddelanden synliga för alla rumsmedlemmar."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Du gjorde framtida meddelanden synliga för alla från när de bjöds in."; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Du gjorde framtida meddelanden synliga för alla från när de gick med."; -"call_more_actions_dialpad" = "Knappsats"; -"call_more_actions_transfer" = "Överför"; -"call_more_actions_audio_use_device" = "Enhetshögtalare"; -"call_more_actions_audio_use_headset" = "Använd headsetljud"; -"call_more_actions_change_audio_device" = "Byt ljudenhet"; -"call_more_actions_unhold" = "Återuppta"; -"call_more_actions_hold" = "Parkera"; -"call_holded" = "Du parkerade samtalet"; -"call_remote_holded" = "%@ parkerade samtalet"; -"notice_declined_video_call_by_you" = "Du avslog samtalet"; -"notice_declined_video_call" = "%@ avslog samtalet"; -"resume_call" = "Återuppta"; -"call_transfer_to_user" = "Överför till %@"; -"call_consulting_with_user" = "Rådfrågar %@"; -"call_video_with_user" = "Videosamtal med %@"; -"call_voice_with_user" = "Röstsamtal med %@"; -"call_ringing" = "Ringer…"; -"e2e_passphrase_too_short" = "Lösenfras för kort (den måste vara minst %d tecken långt)"; -"microphone_access_not_granted_for_voice_message" = "Röstmeddelanden kräver åtkomst till mikrofonen, men %@ är inte behörig att använda den"; -"message_reply_to_sender_sent_a_voice_message" = "skickade ett röstmeddelande."; -"attachment_large_with_resolution" = "Stor %@ (~%@)"; -"attachment_medium_with_resolution" = "Mellan %@ (~%@)"; -"attachment_small_with_resolution" = "Liten %@ (~%@)"; -"attachment_size_prompt_message" = "Du kan stänga av detta i inställningarna."; -"attachment_size_prompt_title" = "Bekräfta storlek att skicka"; -"room_displayname_all_other_participants_left" = "%@ (Kvar)"; -"auth_reset_password_error_not_found" = "Hittades inte"; -"auth_reset_password_error_unauthorized" = "Obehörig"; -"auth_username_in_use" = "Användarnamn upptaget"; -"auth_invalid_user_name" = "Ogiltigt användarnamn"; -"rename" = "Döp om"; -"attachment_unsupported_preview_message" = "Den här filtypen stöds inte."; -"attachment_unsupported_preview_title" = "Kunde inte förhandsgranska"; -"room_displayname_all_other_members_left" = "%@ (Kvar)"; -"message_reply_to_sender_sent_their_location" = "har delat sin plats."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/szl.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/szl.lproj/MatrixKit.strings deleted file mode 100644 index 8b1378917..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/szl.lproj/MatrixKit.strings +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/tzm.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/tzm.lproj/MatrixKit.strings deleted file mode 100644 index f1a0a2a8f..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/tzm.lproj/MatrixKit.strings +++ /dev/null @@ -1,14 +0,0 @@ - - - -"notice_event_redacted_by" = " Sɣur %@"; -"close" = "Rgel"; -"yes" = "Yah"; - -// Action -"no" = "Uhu"; -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "Matrix"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/uk.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/uk.lproj/MatrixKit.strings deleted file mode 100644 index 69eec8107..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/uk.lproj/MatrixKit.strings +++ /dev/null @@ -1,561 +0,0 @@ - - -"resend" = "Повторно надіслати"; -"delete" = "Видалити"; -"share" = "Поділитися"; -"redact" = "Вилучити"; -"copy_button_name" = "Копіювати"; -"send" = "Надіслати"; -"register_error_title" = "Поле реєстрації"; -"login_invalid_param" = "Недійсний параметр"; -"save" = "Зберегти"; -"login_leave_fallback" = "Скасувати"; -"cancel" = "Скасувати"; -"submit" = "Надіслати"; -"sign_up" = "Зареєструватися"; -"retry" = "Повторити"; -"unban" = "Розблокувати"; -"ban" = "Заблокувати"; -"kick" = "Викинути"; -"invite" = "Запросити"; -"leave" = "Вийти"; -"discard" = "Відхилити"; -"continue" = "Продовжити"; -"close" = "Закрити"; -"back" = "Назад"; -"view" = "Вигляд"; -"login_server_url_placeholder" = "URL (наприклад, https://matrix.org)"; - -// Login Screen -"login_create_account" = "Створіть обліковий запис:"; -/* *********************** */ -/* iOS specific */ -/* *********************** */ - -"matrix" = "Matrix"; - -// Events formatter -"notice_avatar_changed_too" = "(аватар теж змінено)"; -"unignore" = "Не нехтувати"; -"ignore" = "Нехтувати"; -"resume_call" = "Продовжити"; -"end_call" = "Завершити виклик"; -"reject_call" = "Відхилити виклик"; -"answer_call" = "Відповісти на виклик"; -"show_details" = "Показати подробиці"; -"cancel_download" = "Скасувати завантаження"; -"cancel_upload" = "Скасувати вивантаження"; -"select_all" = "Вибрати всі"; -"resend_message" = "Повторити надсилання повідомлення"; -"reset_to_default" = "Скинути до типових"; -"invite_user" = "Запросити користувача matrix"; -"capture_media" = "Зробити знімок/зафільмувати"; -"attach_media" = "Долучити медіа з бібліотеки"; -"select_account" = "Вибрати обліковий запис"; -"mention" = "Згадати"; -"start_video_call" = "Розпочати відеовиклик"; -"start_voice_call" = "Розпочати голосовий виклик"; -"start_chat" = "Почати бесіду"; -"set_admin" = "Призначити адміністратора"; -"set_moderator" = "Призначити модератора"; -"set_default_power_level" = "Скинути рівень повноважень"; -"set_power_level" = "Визначити рівень повноважень"; -"submit_code" = "Надіслати код"; -"dismiss" = "Відхилити"; -"abort" = "Перервати"; -"yes" = "Так"; - -// Action -"no" = "Ні"; -"login_error_resource_limit_exceeded_contact_button" = "Зв'язатися з адміністратором"; -"login_error_resource_limit_exceeded_message_contact" = "\n\nЗверніться до адміністратора своєї служби, щоб продовжувати користуватися нею."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Цей домашній сервер досяг свого місячного обмеження активних користувачів."; -"login_error_resource_limit_exceeded_message_default" = "Цей домашній сервер перевищив одне з обмежень ресурсів."; -"login_error_resource_limit_exceeded_title" = "Обмеження ресурсів перевищено"; -"login_desktop_device" = "Комп'ютер"; -"login_tablet_device" = "Планшет"; -"login_mobile_device" = "Мобільний"; -"login_error_forgot_password_is_not_supported" = "Відновлення пароля зараз не підтримується"; -"login_use_fallback" = "Застосувати запасну сторінку"; -"login_error_login_email_not_yet" = "Посилання на електронну адресу, на яке ще не клацнули"; -"login_error_user_in_use" = "Це ім'я користувача вже використовується"; -"login_error_limit_exceeded" = "Було надіслано забагато запитів"; -"login_error_not_json" = "Не містить дійсного JSON"; -"login_error_bad_json" = "Неправильний синтаксис JSON"; -"login_error_unknown_token" = "Вказаний ключ доступу не було розпізнано"; -"login_error_forbidden" = "Не правильне ім'я користувача/пароль"; -"login_error_registration_is_not_supported" = "На цей час реєстрація не підтримується"; -"login_error_no_login_flow" = "Не вдалося отримати дані автентифікації з цього домашнього сервера"; -"login_error_title" = "Не вдалося увійти"; -"login_prompt_email_token" = "Введіть ключ підтвердження електронної пошти:"; -"login_email_placeholder" = "Адреса е-пошти"; -"login_email_info" = "Вкажіть адресу електронної пошти, щоб інші користувачі могли легше знаходити вас на Matrix і надання вам можливості відновити пароль у майбутньому."; -"login_display_name_placeholder" = "Видиме ім'я (наприклад Bob Obson)"; -"login_optional_field" = "необов'язково"; -"login_password_placeholder" = "Пароль"; -"login_user_id_placeholder" = "Ідентифікатор Matrix (наприклад @bob:matrix.org або bob)"; -"login_identity_server_info" = "Matrix забезпечує сервери ідентифікації для відстеження, до яких ідентифікаторів Matrix, які електронні листи належать. Наразі доступно лише для https://matrix.org."; -"login_identity_server_title" = "URL-адреса сервера ідентифікації:"; -"login_home_server_info" = "Ваш домашній сервер зберігає всі ваші розмови та дані облікового запису"; -"login_home_server_title" = "URL-адреса домашнього сервера:"; -"notice_room_power_level_intro_for_dm" = "Рівні повноважень учасників:"; -"notice_room_power_level_intro" = "Рівні повноважень учасників кімнати:"; -"notice_room_join_rule_public_by_you_for_dm" = "Ви дозволяєте доступ всім."; -"notice_room_join_rule_public_by_you" = "Ви дозволяєте доступ до кімнати всім."; -"notice_room_join_rule_public_for_dm" = "%@ дозволяє доступ всім."; -"notice_room_join_rule_public" = "%@ дозволяє доступ до кімнати всім."; -"notice_room_join_rule_invite_by_you_for_dm" = "Ви забороняєте доступ всім, окрім запрошених."; -"notice_room_join_rule_invite_by_you" = "Ви забороняєте доступ до кімнати всім, окрім запрошених."; -// New -"notice_room_join_rule_invite" = "%@ забороняє доступ до кімнати всім, окрім запрошених."; -"notice_room_join_rule_invite_for_dm" = "%@ забороняє доступ всім, окрім запрошених."; -// Old -"notice_room_join_rule" = "Правило приєднання: %@"; -"notice_room_created_for_dm" = "%@ приєднується."; -"notice_room_created" = "%@ створює і налаштовує кімнату."; -"notice_profile_change_redacted" = "%@ оновлює свій профіль %@"; -"notice_event_redacted_reason" = " [причина: %@]"; -"notice_event_redacted_by" = " від %@"; -"notice_event_redacted" = "<змінено%@>"; -"notice_room_topic_removed" = "%@ вилучає тему"; -"notice_room_name_removed_for_dm" = "%@ вилучає назву"; -"notice_room_name_removed" = "%@ вилучає назву кімнати"; -"login_error_do_not_support_login_flows" = "Наразі ми не підтримуємо один або кілька потоків авторизації, визначених цим домашнім сервером"; -"notification_settings_never_notify" = "Ніколи не сповіщати"; -"notification_settings_always_notify" = "Завжди сповіщати"; - -// members list Screen - -// accounts list Screen - -// image size selection - -// invitation members list Screen - -// room creation dialog Screen - -// room info dialog Screen - -// room details dialog screen -"room_details_title" = "Подробиці про кімнату"; -"login_error_must_start_http" = "URL-адреса повинна починатися з http[s]://"; -"num_members_other" = "%@ користувачів"; -"num_members_one" = "%@ користувач"; -"membership_invite" = "Запрошено"; -"create_account" = "Створити обліковий запис"; -"login" = "Увійти"; -"create_room" = "Створити кімнату"; -"call_video_with_user" = "Відеовиклик з %@"; -"call_voice_with_user" = "Голосовий виклик з %@"; -"ssl_fingerprint_hash" = "Відбиток (%@):"; -"ssl_remain_offline" = "Нехтувати"; -"ssl_logout_account" = "Вийти"; - -// actions -"action_logout" = "Вийти"; - -// Room Screen - -// general errors - -// Home Screen - -// Last seen time - -// call events - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /console/src/main/res/values/strings.xml. -*/ - - -// titles - -// button names -"ok" = "Гаразд"; -"notice_declined_video_call_by_you" = "Ви відхилили виклик"; -"notice_ended_video_call_by_you" = "Ви завершили виклик"; -"notice_avatar_url_changed_by_you" = "Ви змінили свій аватар"; -"notice_room_kick_by_you" = "Ви викинули %@"; -"notice_room_invite_you" = "%@ запрошує вас"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "Ви запросили %@"; -"notice_room_third_party_invite_by_you_for_dm" = "Ви запросили %@"; -"notice_room_reason" = ". Причина: %@"; -"notice_room_third_party_registered_invite" = "%@ приймає запрошення від %@"; -"notice_room_third_party_invite_for_dm" = "%@ запрошує %@"; - -/* -*- - Automatic localization for en - - The following key/value pairs were extracted from the android i18n file: - /matrix-sdk/src/main/res/values/strings.xml. -*/ - -"notice_room_invite" = "%@ запрошує %@"; -"ssl_homeserver_url" = "URL-адреса домашнього сервера: %@"; -"user_id_placeholder" = "наприклад: @bob:homeserver"; -"network_error_not_reachable" = "Перевірте під'єднання до мережі"; -"power_level" = "Рівень повноважень"; -"public" = "Загальнодоступний"; -"private" = "Приватний"; -"default" = "типово"; -"not_supported_yet" = "Поки що не підтримується"; -"error_common_message" = "Сталася помилка. Повторіть спробу пізніше."; -"error" = "Помилка"; -"membership_ban" = "Заблоковано"; -"notice_room_ban_by_you" = "Ви заблокували %@"; -"notice_room_unban_by_you" = "Ви розблокували %@"; -"notice_room_ban" = "%@ блокує %@"; -"notice_room_unban" = "%@ розблоковує %@"; -"call_invite_expired" = "Запрошення на виклик не чинне"; -"incoming_voice_call" = "Вхідний голосовий виклик"; -"incoming_video_call" = "Вхідний відеовиклик"; -"call_ended" = "Виклик завершено"; -"call_ringing" = "Виклик…"; - -// Settings keys - -// call string -"call_connecting" = "З'єднання…"; -"settings_config_user_id" = "ID користувача: %@"; -"settings_config_identity_server" = "Сервер ідентифікації: %@"; - -// gcm section -"settings_config_home_server" = "Домашній сервер: %@"; -"notification_settings_other_alerts" = "Інші попередження"; -"notification_settings_select_room" = "Вибрати кімнату"; -"notification_settings_sender_hint" = "@user:domain.com"; -"notification_settings_enable_notifications_warning" = "Наразі всі сповіщення вимкнено для всіх пристроїв."; -"notification_settings_enable_notifications" = "Увімкнути сповіщення"; - -// Notification settings screen -"notification_settings_disable_all" = "Вимкнути сповіщення"; -"settings_title_notifications" = "Сповіщення"; - -// Settings -"settings" = "Налаштування"; -"room_displayname_more_than_two_members" = "%@ і %@ інших"; -"room_displayname_two_members" = "%@ і %@"; - -// room display name -"room_displayname_empty_room" = "Порожня кімната"; -"notice_sticker" = "наліпка"; -"notice_unsupported_attachment" = "Непідтримуване вкладення: %@"; -"notice_file_attachment" = "прикріплений файл"; -"notice_location_attachment" = "прикріплене місцеперебування"; -"notice_video_attachment" = "прикріплене відео"; -"notice_audio_attachment" = "прикріплене аудіо"; -"notice_image_attachment" = "прикріплене зображення"; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ вмикає наскрізне шифрування (нерозпізнаний алгоритм %2$@)."; -"notice_encryption_enabled_ok" = "%@ вмикає наскрізне шифрування."; -"notice_encrypted_message" = "Зашифроване повідомлення"; -"notice_avatar_url_changed" = "%@ змінює свій аватар"; - -// Settings screen -"settings_title_config" = "Конфігурація"; - -// Others -"user_id_title" = "ID користувача:"; -"e2e_export" = "Експорт"; -"e2e_import" = "Імпорт"; -"search_searching" = "Триває пошук..."; - -// Search -"search_no_results" = "Немає результатів"; -"group_section" = "Групи"; - -// Groups -"group_invite_section" = "Запрошення"; -"contact_local_contacts" = "Локальні контакти"; - -// Contacts -"contact_mx_users" = "Користувачі Matrix"; -"attachment_e2e_keys_import" = "Імпорт..."; -"attachment_multiselection_original" = "Справжній розмір"; -"attachment_multiselection_size_prompt" = "Хочете надіслати зображення як:"; -"attachment_cancel_upload" = "Скасувати вивантаження?"; -"attachment_cancel_download" = "Скасувати завантаження?"; -"attachment_large" = "Великий (~%@)"; -"attachment_medium" = "Середній (~%@)"; -"attachment_small" = "Маленький (~%@)"; -"attachment_original" = "Справжній розмір (%@)"; - -// Attachment -"attachment_size_prompt" = "Бажаєте надіслати:"; -"message_reply_to_sender_sent_a_file" = "надсилає файл."; -"message_reply_to_sender_sent_an_audio_file" = "надсилає звуковий файл."; -"message_reply_to_sender_sent_a_voice_message" = "надсилає голосове повідомлення."; -"message_reply_to_sender_sent_a_video" = "надсилає відео."; - -// Reply to message -"message_reply_to_sender_sent_an_image" = "надсилає зображення."; - -// E2E import -"e2e_import_room_keys" = "Імпорт ключів кімнати"; -"format_time_d" = "д"; -"format_time_h" = "год"; -"format_time_m" = "хв"; - -// Time -"format_time_s" = "с"; -"room_error_join_failed_title" = "Не вдалося приєднатися до кімнати"; - -// Room -"room_please_select" = "Виберіть кімнату"; -"room_creation_participants_placeholder" = "(наприклад @bob:homeserver1; @john:homeserver2...)"; -"room_creation_participants_title" = "Учасники:"; -"room_creation_name_placeholder" = "(наприклад lunchGroup)"; - -// Room creation -"room_creation_name_title" = "Назва кімнати:"; -"room_event_encryption_info_device_fingerprint" = "Відбиток Ed25519\n"; -"room_event_encryption_info_event_unencrypted" = "незашифровано"; -"room_event_encryption_info_event_decryption_error" = "Помилка розшифрування\n"; -"room_event_encryption_info_event_session_id" = "ID сеансу\n"; -"room_event_encryption_info_event_algorithm" = "Алгоритм\n"; -"room_event_encryption_info_event_identity_key" = "Ключ ідентифікації Curve25519\n"; -"room_event_encryption_info_event_user_id" = "ID користувача\n"; -"room_event_encryption_info_event" = "Відомості про подію\n"; - -// Encryption information -"room_event_encryption_info_title" = "Відомості про наскрізне шифрування\n\n"; -"device_details_rename_prompt_title" = "Назва сеансу"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_identifier" = "ID\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_name" = "Загальнодоступна назва\n"; -"device_details_name" = "Загальнодоступна назва\n"; - -// Devices -"device_details_title" = "Відомості про сеанс\n"; -"notification_settings_room_rule_title" = "Кімната: '%@'"; -"notice_in_reply_to" = "У відповідь на"; -"message_reply_to_message_to_reply_to_prefix" = "У відповідь на"; -"notice_crypto_unable_to_decrypt" = "** Не вдалося розшифрувати: %@ **"; -"notice_error_unknown_event_type" = "Невідомий тип події"; -"notice_error_unexpected_event" = "Неочікувана подія"; -"notice_error_unsupported_event" = "Непідтримувана подія"; -"notice_invalid_attachment" = "неприпустиме вкладення"; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ робить майбутню історію повідомлень видимою всім від часу їхнього приєднання."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ робить майбутню історію кімнати видимою всім учасникам кімнати від часу їхнього приєднання."; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ робить майбутню історію повідомлень видимою всім від часу їхнього запрошення."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ робить майбутню історію кімнати видимою усім учасникам кімнати від часу їхнього запрошення."; -"notice_room_history_visible_to_members_for_dm" = "%@ робить майбутню історію повідомлень видимою усім учасникам кімнати."; -"notice_room_history_visible_to_members" = "%@ робить майбутню історію кімнати видимою усім учасникам кімнати."; -"notice_room_history_visible_to_anyone" = "%@ робить майбутню історію кімнати видимою усім."; -"notice_redaction" = "%@ редагує подію (id: %@)"; -"notice_feedback" = "Подія відгуку (id: %@): %@"; -"notice_room_related_groups" = "Групи пов'язані з цією кімнатою: %@"; -"notice_room_power_level_acting_requirement" = "Мінімальний рівень повноважень користувача для виконання дії:"; -"notification_settings_by_default" = "Типово..."; -"membership_leave" = "Виходить"; -"notice_redaction_by_you" = "Ви відредагували подію (id: %@)"; -"notice_encryption_enabled_unknown_algorithm_by_you" = "Ви ввімкнули наскрізне шифрування (нерозпізнаний алгоритм %@)."; -"notice_encryption_enabled_ok_by_you" = "Ви ввімкнули наскрізне шифрування."; -"notice_room_created_by_you_for_dm" = "Ви приєдналися."; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "Ви відкликали запрошення для %@"; -"notice_room_third_party_revoked_invite_by_you" = "Ви відкликали запрошення приєднатися до кімнати для %@"; -"notice_room_third_party_registered_invite_by_you" = "Ви прийняли запрошення для %@"; -"notice_room_withdraw_by_you" = "Ви анулювали запрошення для %@"; -"notice_room_reject_by_you" = "Ви відхилили запрошення"; -"notice_room_third_party_invite_by_you" = "Ви надіслали запрошення приєднатися до кімнати для %@"; -"notice_room_name_changed_for_dm" = "%@ змінює назву на %@."; -"notice_room_name_changed" = "%@ змінює назву кімнати на %@."; -"notice_topic_changed" = "%@ змінює тему на «%@»."; -"notice_display_name_removed" = "%@ вилучає своє показуване ім'я"; -"notice_display_name_changed_from" = "%@ змінює своє показуване ім'я з %@ на %@"; -"notice_display_name_set" = "%@ встановлює своїм показуваним іменем %@"; -"notice_room_withdraw" = "%@ анульовує запрошення для %@"; -"notice_room_kick" = "%@ викидає %@"; -"notice_room_reject" = "%@ відхиляє запрошення"; -"notice_room_leave" = "%@ виходить"; -"notice_room_join" = "%@ приєднується"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ відкликає запрошення для %@"; -"notice_room_third_party_revoked_invite" = "%@ відкликає запрошення приєднатися до кімнати для %@"; -"notice_room_third_party_invite" = "%@ надсилає запрошення приєднатися до кімнати для %@"; -"microphone_access_not_granted_for_voice_message" = "Для голосових повідомлень потрібен доступ до мікрофона, але %@ не має дозволу на його використання"; -"microphone_access_not_granted_for_call" = "Для викликів потрібен доступ до мікрофона, але %@ не має дозволу на його використання"; - -// Permissions -"camera_access_not_granted_for_call" = "Для відеовикликів потрібен доступ до камери, але %@ не має дозволу на її використання"; -"language_picker_default_language" = "Типово (%@)"; - -// Language picker -"language_picker_title" = "Виберіть мову"; - -// Country picker -"country_picker_title" = "Виберіть країну"; -"notice_room_join_by_you" = "Ви приєдналися"; -"notice_room_leave_by_you" = "Ви вийшли"; -"room_left_for_dm" = "Ви вийшли"; -"room_left" = "Ви вийшли з кімнати"; -"call_more_actions_unhold" = "Продовжити"; -"call_more_actions_change_audio_device" = "Змінити звуковий пристрій"; -"call_more_actions_audio_use_device" = "Гучномовець пристрою"; -"call_more_actions_transfer" = "Переведення"; -"call_more_actions_dialpad" = "Номеронабирач"; -"call_transfer_to_user" = "Передавання до %@"; - -// unrecognized SSL certificate -"ssl_trust" = "Довіряти"; - -// Account -"account_save_changes" = "Зберегти зміни"; -"room_event_encryption_info_unblock" = "Видалити з чорного списку"; -"room_event_encryption_info_block" = "Чорний список"; -"room_event_encryption_info_device_blocked" = "У чорному списку"; -"room_event_encryption_info_device_unknown" = "невідомий сеанс\n"; -"room_event_encryption_info_device" = "\nВідомості про сеанс відправника\n"; -"device_details_delete_prompt_title" = "Автентифікація"; -"settings_enter_validation_token_for" = "Введіть токен підтвердження для %@:"; -"settings_enable_push_notifications" = "Увімкнути push-сповіщення"; -"settings_enable_inapp_notifications" = "Увімкнути сповіщення в застосунку"; -"room_displayname_all_other_participants_left" = "%@ (виходить)"; -"notice_crypto_error_unknown_inbound_session_id" = "Сеанс відправника не надіслав нам ключі для цього повідомлення."; -"notice_room_power_level_event_requirement" = "Найнижчий рівень повноважень пов'язаний з подією:"; -"notification_settings_global_info" = "Налаштування сповіщень зберігаються у вашому обліковому записі й спільні для всіх клієнтів, які їх підтримують (включно зі сповіщеннями стільниці).\n\nПравила застосовуються по черзі; спочатку надсилається повідомлення першого збігу з правилом.\nОтже: сповіщення для кожного слова важливіші за сповіщення для кожної кімнати, які важливіші за сповіщення від кожного відправника.\nДля кількох правил одного виду важливіше перше у списку."; -"notification_settings_per_word_notifications" = "Сповіщення для кожного слова"; -"notification_settings_per_word_info" = "Слова збігу не чутливі до регістру й можуть містити символ *. Так:\nfoo збігається з рядком foo, оточеним роздільниками слів (наприклад, розділовими знаками та пробілами або початком/кінцем рядка).\nfoo* збігається з будь-яким таким словом, яке починається з foo.\n*foo* збігається з будь-яким таким словом, яке містить три букви foo."; -"notification_settings_word_to_match" = "слово збігу"; -"notification_settings_highlight" = "Підсвічування"; -"notification_settings_per_room_notifications" = "Сповіщення від кожної кімнати"; -"notification_settings_per_sender_notifications" = "Сповіщення про кожного відправника"; -"notification_settings_contain_my_user_name" = "Сповіщати звуком про повідомлення, що містять моє ім'я користиувача"; -"notification_settings_contain_my_display_name" = "Сповіщати звуком про повідомлення, що містять моє показуване ім'я"; -"notification_settings_just_sent_to_me" = "Сповіщати звуком про надіслані лише мені повідомлення"; -"notification_settings_invite_to_a_new_room" = "Сповіщати про запрошення до нових кімнат"; -"notification_settings_people_join_leave_rooms" = "Сповіщати, коли люди приєднуються чи виходять з кімнат"; -"notification_settings_receive_a_call" = "Сповіщати про виклики"; -"notification_settings_suppress_from_bots" = "Приховувати сповіщень від ботів"; -"notification_settings_notify_all_other" = "Сповіщати про всі інші повідомлення/кімнати"; -"notification_settings_custom_sound" = "Власний звук"; -"account_error_push_not_allowed" = "Сповіщення не дозволені"; -"account_error_msisdn_wrong_description" = "Це не схоже на правильний номер телефону"; -"account_error_msisdn_wrong_title" = "Неправильний номер телефону"; -"account_error_email_wrong_description" = "Це не схоже на правильну адресу е-пошти"; -"account_error_email_wrong_title" = "Неправильна адреса е-пошти"; -"account_error_matrix_session_is_not_opened" = "Сеанс Matrix не відкрито"; -"account_error_picture_change_failed" = "Не вдалося змінити зображення"; -"account_error_display_name_change_failed" = "Не вдалося змінити показуване ім'я"; -"account_msisdn_validation_error" = "Не вдалося перевірити номер телефону."; -"account_email_validation_title" = "Очікування перевірки"; -"account_msisdn_validation_title" = "Очікування перевірки"; -"account_msisdn_validation_message" = "Ми надіслали СМС із кодом активації. Введіть цей код унизу."; -"account_linked_emails" = "Пов'язані адреси е-пошти"; -"account_link_email" = "Пов'язати е-пошту"; -"room_event_encryption_verify_ok" = "Звірити"; -"room_event_encryption_info_device_not_verified" = "НЕ звірений"; -"room_event_encryption_info_device_verified" = "Звірений"; -"room_event_encryption_verify_title" = "Звірити сеанс\n\n"; -"room_event_encryption_info_unverify" = "Скасувати перевірку"; -"room_event_encryption_info_verify" = "Звірити..."; -"room_event_encryption_info_device_verification" = "Перевірка\n"; -"room_event_encryption_info_event_none" = "нічого"; -"room_event_encryption_info_event_fingerprint_key" = "Потрібен ключ цифрового відбитка Ed25519\n"; -"device_details_delete_prompt_message" = "Виконання цієї дії вимагає додаткової автентифікації.\nЩоб продовжити, введіть свій пароль."; -"device_details_rename_prompt_message" = "Загальнодоступну назву сеансу бачать люди, з якими ви спілкуєтесь"; -"device_details_last_seen" = "Останні відвідини\n"; -"notice_room_aliases_for_dm" = "Псевдоніми: %@"; -"notice_room_aliases" = "Псевдо кімнати: %@"; -"unsent" = "Не надіслано"; -"offline" = "не в мережі"; -"e2e_passphrase_create" = "Створити парольну фразу"; -"e2e_passphrase_not_match" = "Парольні фрази повинні збігатися"; -"e2e_passphrase_too_short" = "Парольна фраза закоротка (Її довжина повинна складати принаймні %d символів)"; - -// E2E export -"e2e_export_room_keys" = "Експорт ключів кімнати"; -"e2e_passphrase_enter" = "Введіть парольну фразу"; -"e2e_passphrase_empty" = "Парольна фраза не повинна бути порожньою"; -"e2e_passphrase_confirm" = "Підтвердити парольну фразу"; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "Ви зробили майбутні повідомлення кімнати видимими будь-кому від часу їхнього приєднання."; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "Ви зробили майбутню історію кімнати видимою усім учасникам кімнати від часу їхнього приєднання."; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "Ви зробили майбутні повідомлення кімнати видимими будь-кому від часу запрошення їх."; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "Ви зробили майбутню історію кімнати видимою усім учасникам кімнати від часу запрошення їх."; -"notice_room_history_visible_to_members_by_you_for_dm" = "Ви зробили майбутні повідомлення кімнати видимими усім учасникам кімнати."; -"notice_room_history_visible_to_members_by_you" = "Ви зробили майбутню історію кімнати видимою усім учасникам кімнати."; -"notice_room_history_visible_to_anyone_by_you" = "Ви зробили майбутню історію кімнати видимою будь-кому."; -"notice_room_created_by_you" = "Ви створили й сконфігурували кімнату."; -"notice_profile_change_redacted_by_you" = "Ви оновили свій профіль %@"; -"notice_event_redacted_by_you" = " вами"; -"notice_room_topic_removed_by_you" = "Ви вилучили тему"; -"notice_room_name_removed_by_you_for_dm" = "Ви вилучили назву"; -"notice_room_name_removed_by_you" = "Ви вилучили назву кімнати"; -"notice_conference_call_request_by_you" = "Ви запитали VoIP-конференцію"; -"notice_answered_video_call_by_you" = "Ви відповіли на виклик"; -"notice_placed_video_call_by_you" = "Ви розпочали відеовиклик"; -"notice_placed_voice_call_by_you" = "Ви розпочали голосовий виклик"; -"notice_room_name_changed_by_you_for_dm" = "Ви змінили назву на %@."; -"notice_room_name_changed_by_you" = "Ви змінили назву кімнати на %@."; -"notice_topic_changed_by_you" = "Ви змінили тему на «%@»."; -"notice_display_name_removed_by_you" = "Ви вилучили показуване ім'я"; -"notice_display_name_changed_from_by_you" = "Ви змінили показуване ім'я з %@ на %@"; -"notice_display_name_set_by_you" = "Ви вказали показуваним іменем %@"; -"notice_conference_call_finished" = "VoIP-конференція завершилася"; -"notice_conference_call_started" = "VoIP-конференція розпочалася"; -"notice_conference_call_request" = "%@ запитує VoIP-конференцію"; -"notice_declined_video_call" = "%@ відхиляє виклик"; -"notice_ended_video_call" = "%@ завершує виклик"; -"notice_answered_video_call" = "%@ відповідає на виклик"; -"notice_placed_video_call" = "%@ здійснює відеовиклик"; -"notice_placed_voice_call" = "%@ здійснює голосовий виклик"; - -// Room members -"room_member_ignore_prompt" = "Ви впевнені, що хочете сховати всі повідомлення від цього користувача?"; -"room_no_conference_call_in_encrypted_rooms" = "Кімнати з шифруванням не підтримують конференцвиклики"; -"room_error_topic_edition_not_authorized" = "Ви не маєте повноважень змінювати тему цієї кімнати"; -"room_error_name_edition_not_authorized" = "Ви не маєте повноважень змінювати назву цієї кімнати"; -"room_error_join_failed_empty_room" = "На цю мить неможливо приєднатися до порожньої кімнати."; -"room_creation_alias_placeholder_with_homeserver" = "(напр. #foo%@)"; -"room_creation_alias_placeholder" = "(напр. #foo:example.org)"; -"account_email_validation_message" = "Перевірте свою електронну пошту та натисніть на посилання у ній. Після цього натисніть кнопку Продовжити."; -"room_displayname_all_other_members_left" = "%@ (виходять)"; -"auth_username_in_use" = "Ім'я користувача зайняте"; -"rename" = "Перейменувати"; -"room_creation_alias_title" = "Псевдоніми кімнати:"; -"account_email_validation_error" = "Не вдалося перевірити адресу електронної пошти. Перевірте свою електронну пошту та натисніть на посилання в ній. Після цього натисніть продовжити"; -"auth_reset_password_error_not_found" = "Не знайдено"; -"auth_reset_password_error_unauthorized" = "Не авторизовано"; -"auth_invalid_user_name" = "Хибне імʼя користувача"; -"ssl_could_not_verify" = "Не вдалося перевірити справжність сервера ідентифікації."; -"call_consulting_with_user" = "Консультація з %@"; -"local_contacts_access_discovery_warning_title" = "Виявлення користувачів"; -"attachment_large_with_resolution" = "Великий %@ (~%@)"; -"attachment_medium_with_resolution" = "Середній %@ (~%@)"; -"attachment_small_with_resolution" = "Малий %@ (~%@)"; -"attachment_size_prompt_message" = "Ви можете вимкнути це у налаштуваннях."; -"attachment_size_prompt_title" = "Підтвердити розмір, щоб надіслати"; -"room_no_power_to_create_conference_call" = "Вам потрібен дозвіл, щоб надсилати запрошення, щоб розпочати конференцію в цій кімнаті"; -"room_event_encryption_verify_message" = "Щоб переконатися, що цьому сеансу можна довіряти, зв’яжіться з його власником іншим способом (наприклад, особисто чи телефоном) і запитайте його, чи збігається ключ, який вони бачать у налаштуваннях користувача для цього сеансу, з ключем нижче:\n\nНазва сеансу: %@\nID сеансу: %@\nКлюч сеансу: %@\n\nЯкщо він збігається, натисніть кнопку підтвердження внизу. Якщо ні, значить хтось інший перехоплює цей сеанс, і ви, ймовірно, хочете натиснути кнопку чорного списку.\n\nУ майбутньому цей процес перевірки буде ускладнено."; -"call_more_actions_hold" = "Утримувати"; -"call_holded" = "Ви утримуєте виклик"; -"call_remote_holded" = "%@ утримує виклик"; - -// Login Screen -"login_error_already_logged_in" = "Вже ввійшли"; -"message_unsaved_changes" = "Ви маєте незбережені зміни. Якщо вийдете, їх буде скасовано."; -"attachment_unsupported_preview_message" = "Цей тип файлу не підтримується."; -"attachment_unsupported_preview_title" = "Не вдалося показати попередній перегляд"; -"attachment_e2e_keys_file_prompt" = "Цей файл містить ключі шифрування, експортовані з клієнта Matrix.\nБажаєте переглянути вміст файлу або імпортувати з нього ключі?"; -"room_member_power_level_prompt" = "Ви не зможете скасувати цю зміну, оскільки користувач отримає ті ж повноваження, що й ви.\nВи впевнені?"; -"room_error_timeline_event_not_found" = "Застосунок намагався завантажити певну точку стрічки у цій кімнаті, але не зміг її знайти"; -"room_error_timeline_event_not_found_title" = "Не вдалося завантажити позицію стрічки"; -"room_error_cannot_load_timeline" = "Не вдалося завантажити стрічку"; -"ssl_only_accept" = "Приймайте сертифікат ЛИШЕ якщо адміністратор сервера оприлюднив відбиток, збіжний із наведеним угорі."; -"ssl_expected_existing_expl" = "Сертифікат, якому ви довіряли раніше, змінився на недовірений. Можливо, сервер оновив сертифікат. Запитайте в адміністратора, який відбиток очікуваний."; -"ssl_unexpected_existing_expl" = "Сертифікат відрізняється від довіреного вашим телефоном. Це ВКРАЙ НЕЗВИЧНО. Радимо НЕ ПРИЙМАТИ цей новий сертифікат."; -"ssl_cert_new_account_expl" = "Якщо адміністратор сервера каже, що так має бути, переконайтесь, що відбиток знизу збігається з відбитком адміністратора."; -"ssl_cert_not_trust" = "Це може означати, що хтось зловмисно перехоплює ваш трафік або ваш телефон не довіряє сертифікату, наданому віддаленим сервером."; - -// contacts list screen -"invitation_message" = "Поговорімо в matrix? Сайт https://matrix.org описує, як це зробити."; -"local_contacts_access_discovery_warning" = "Щоб виявляти, які ваші контакти вже в Matrix, %@ може надсилати адреси е-пошти й номери телефонів із вашої адресної книги на обраний сервер ідентифікації Matrix. Особисті дані хешуються перед надсиланням, якщо це підтримується: перегляньте політику приватності свого сервера ідентифікації, щоб дізнатися більше."; -"local_contacts_access_not_granted" = "Для пошуку користувачів серед локальних контактів потрібен доступ до ваших контактів, але %@ не має такого дозволу"; -"e2e_export_prompt" = "Це дає змогу експортувати в локальний файл ключі до повідомлень, отриманих вами в зашифрованих кімнатах. Тоді ви зможете імпортувати файл до іншого клієнта Matrix у майбутньому, і той клієнт також зможе розшифрувати ці повідомлення.\nЕкспортований файл дасть змогу всім, хто його прочитає, розшифрувати всі видимі вам зашифровані повідомлення."; -"e2e_import_prompt" = "Це дає змогу імпортувати ключі шифрування, які ви раніше експортували з іншого клієнта Matrix. Тоді ви зможете розшифрувати всі повідомлення, які міг розшифрувати той клієнт.\nФайл експорту захищений парольною фразою. Введіть парольну фразу сюди, щоб розшифрувати файл."; -"message_reply_to_sender_sent_their_location" = "надсилає дані про своє місцеперебування."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/vi.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/vi.lproj/MatrixKit.strings deleted file mode 100644 index 6f7fbb694..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/vi.lproj/MatrixKit.strings +++ /dev/null @@ -1,359 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Tạo tài khoản:"; -"login_server_url_placeholder" = "URL (e.g. https://matrix.org)"; -"login_home_server_title" = "Máy chủ nhà:"; -"login_home_server_info" = "Máy chủ nhà của bạn lưu trữ tất cả dữ liệu cần giữ gìn và tài khoản"; -"login_identity_server_title" = "Máy chủ xác thực:"; -"login_identity_server_info" = "Matrix cung cấp máy chủ xác thực để theo dõi email nào thuộc về Matrix IDs nào. Chỉ https://matrix.org hiện đang tồn tại."; -"login_user_id_placeholder" = "Matrix ID (ví dụ: @bob:matrix.org hoặc bob)"; -"login_password_placeholder" = "Mật khẩu"; -"login_optional_field" = "không bắt buộc"; -"login_display_name_placeholder" = "Tên hiển thị (ví dụ: Bob Obson)"; -"login_email_info" = "Định nghĩa địa chỉ email cho phép người dùng khác tìm thấy bạn trên Matrix dễ dàng hơn và giúp bạn đặt lại mật khẩu của bạn sau này."; -"login_email_placeholder" = "Địa chỉ email"; -"login_prompt_email_token" = "Vui lòng nhập mã xác nhận hợp lệ email của bạn:"; -"login_error_title" = "Đăng nhập thất bại"; -"login_error_no_login_flow" = "Chúng tôi không thể truy xuất thông tin xác thực từ Home Server này"; -"login_error_do_not_support_login_flows" = "Hiện tại chúng tôi không hỗ trợ bất cứ luồng đăng nhập được định nghĩa nào từ Home Server này"; -"login_error_registration_is_not_supported" = "Đăng kí hiện đang không được hỗ trợ"; -"login_error_forbidden" = "Sai tên đăng nhập/mật khẩu"; -"login_error_unknown_token" = "Mã truy cập được chỉ định không được công nhận"; -"login_error_bad_json" = "Sai định dạng JSON"; -"login_error_not_json" = "Không chứa một JSON hợp lệ"; -"login_error_limit_exceeded" = "Quá nhiều yêu cầu đã được gửi"; -"login_error_user_in_use" = "Tên đăng nhập này đã được sử dụng"; -"login_error_login_email_not_yet" = "Liên kết email chưa được nhấp vào"; -"login_use_fallback" = "Sử dụng dự phòng"; -"login_leave_fallback" = "Huỷ"; -"login_invalid_param" = "Tham số không hợp lệ"; -"register_error_title" = "Đăng kí thất bại"; -"login_error_forgot_password_is_not_supported" = "Chức năng quên mật khẩu chưa hỗ trợ"; -"login_mobile_device" = "Di động"; -"login_tablet_device" = "Máy tính bảng"; -"login_desktop_device" = "Máy tính bàn"; -// Action -"no" = "Không"; -"yes" = "Có"; -"abort" = "Huỷ bỏ"; -"back" = "Trở về"; -"close" = "Đóng"; -"continue" = "Tiếp tục"; -"discard" = "Huỷ bỏ"; -"dismiss" = "Bỏ qua"; -"retry" = "Thử lại"; -"sign_up" = "Đăng kí"; -"submit" = "Gửi đi"; -"submit_code" = "Gửi mã lên"; -"set_default_power_level" = "Thiết lập lại cấp độ"; -"set_moderator" = "Đặt người kiểm duyệt"; -"set_admin" = "Đặt người quản trị"; -"start_chat" = "Bắt đầu chat"; -"start_voice_call" = "Bắt đầu cuộc gọi thoại"; -"start_video_call" = "Bắt đầu cuộc gọi video"; -"mention" = "Đề cập đến"; -"select_account" = "Chọn một tài khoản"; -"attach_media" = "Đính kèm Media từ thư viện"; -"capture_media" = "Chụp ảnh/quay video"; -"invite_user" = "Mời người dùng Matrix"; -"reset_to_default" = "Thiết lập lại về mặc định"; -"resend_message" = "Gửi lại tin nhắn"; -"select_all" = "Chọn tất cả"; -"cancel_upload" = "Huỷ tải lên"; -"cancel_download" = "Huỷ tải xuống"; -"show_details" = "Xem chi tiết"; -"answer_call" = "Trả lời cuộc gọi"; -"reject_call" = "Từ chối cuộc gọi"; -"end_call" = "Kết thúc cuộc gọi"; -"ignore" = "Bỏ qua"; -"unignore" = "Huỷ bỏ qua"; -// Events formatter -"notice_avatar_changed_too" = "(hình đại diện cũng đã được thay đổi)"; -"notice_room_name_removed" = "%@ bị gỡ bỏ khỏi tên của phòng"; -"notice_room_topic_removed" = "%@ bị gỡ bỏ khỏi chủ đề của phòng"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " bởi %@"; -"notice_event_redacted_reason" = " [lí do: %@]"; -"notice_profile_change_redacted" = "%@ cập nhật hồ sơ của họ %@"; -"notice_room_created" = "%@ đã tạo phòng"; -"notice_room_join_rule" = "Quy tắc tham gia là: %@"; -"notice_room_power_level_intro" = "Công suất của thành viên trong phòng:"; -"notice_room_power_level_acting_requirement" = "Mức công suất tối thiểu mà người dùng phải có trước khi hoạt động là:"; -"notice_room_power_level_event_requirement" = "Mức công suất tối thiểu liên quan đến sự kiện là:"; -"notice_room_aliases" = "Các bí danh phòng là:% @"; -"notice_encrypted_message" = "Tin nhắn đã được mã hoá"; -"notice_encryption_enabled" = "%@ đã bật mã hoá end-to-end (thuật toán %@)"; -"notice_image_attachment" = "hình ảnh đính kèm"; -"notice_audio_attachment" = "âm thanh đính kèm"; -"notice_video_attachment" = "video đính kèm"; -"notice_location_attachment" = "địa điểm đính kèm"; -"notice_file_attachment" = "tập tin đính kèm"; -"notice_invalid_attachment" = "đính kèm không hợp lệ"; -"notice_unsupported_attachment" = "Đính kèm chưa được hỗ trợ: %@"; -"notice_feedback" = "Sự kiện phản hồi (id: %@): %@"; -"notice_redaction" = "%@ đã biên soạn một sự kiện (id: %@)"; -"notice_error_unsupported_event" = "Sự kiện không được hỗ trợ"; -"notice_error_unexpected_event" = "Sự kiện bất ngờ"; -"notice_error_unknown_event_type" = "Loại sự kiện không xác định"; -"notice_room_history_visible_to_anyone" = "%@ làm cho mọi người có thể thấy lịch sử phòng."; -"notice_room_history_visible_to_members" = "%@ làm cho thành viên trong phòng có thể thấy được lịch sử phòng."; -"notice_room_history_visible_to_members_from_invited_point" = "%@ làm cho mọi thành viên có thể thấy được lịch sử phòng từ thời điểm được mời."; -"notice_room_history_visible_to_members_from_joined_point" = "%@ làm cho mọi người có thể thấy lịch sử phòng từ thời điểm họ tham gia."; -"notice_crypto_unable_to_decrypt" = "** Không thể giải mã: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "Thiết bị gửi đi đã không gửi cho chúng ta các khoá giải mã tin nhắn."; -// room display name -"room_displayname_empty_room" = "Phòng trống"; -"room_displayname_two_members" = "%@ và %@"; -"room_displayname_more_than_two_members" = "%@ và %u người khác"; -// Settings -"settings" = "Cài đặt"; -"settings_enable_inapp_notifications" = "Bật thông báo bên trong ứng dụng"; -"settings_enable_push_notifications" = "Bật thông báo"; -"settings_enter_validation_token_for" = "Nhập mã thông báo xác nhận cho %@:"; -"notification_settings_room_rule_title" = "Phòng chat: '%@'"; -// Devices -"device_details_title" = "Thông tin thiết bị\n"; -"device_details_name" = "Tên\n"; -"device_details_identifier" = "ID Thiết bị\n"; -"device_details_last_seen" = "Lần cuối nhìn thấy\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "Tên thiết bị:"; -"device_details_delete_prompt_title" = "Xác thực"; -"device_details_delete_prompt_message" = "Thao tác này yêu cầu xác thực bổ sung.\nĐể tiếp tục, vui lòng nhập mật khẩu của bạn."; -// Encryption information -"room_event_encryption_info_title" = "Thông tin mã hoá end-to-end\n\n"; -"room_event_encryption_info_event" = "Thông tin sự kiện\n"; -"room_event_encryption_info_event_user_id" = "ID Người dùng\n"; -"room_event_encryption_info_event_identity_key" = "Khoá xác thực Curve25519\n"; -"room_event_encryption_info_event_fingerprint_key" = "Chìa khoá vân tay Claimed Ed25519\n"; -"room_event_encryption_info_event_algorithm" = "Thuật toán\n"; -"room_event_encryption_info_event_session_id" = "ID Phiên làm việc\n"; -"room_event_encryption_info_event_decryption_error" = "Lỗi giải mã\n"; -"room_event_encryption_info_event_unencrypted" = "đã giải mã"; -"room_event_encryption_info_event_none" = "không"; -"room_event_encryption_info_device" = "\nThông tin thiết bị gửi đi\n"; -"room_event_encryption_info_device_unknown" = "thiết bị không xác định\n"; -"room_event_encryption_info_device_name" = "Tên\n"; -"room_event_encryption_info_device_id" = "ID Thiết bị\n"; -"room_event_encryption_info_device_verification" = "Xác minh\n"; -"room_event_encryption_info_device_fingerprint" = "Dấu vân tay Claimed Ed25519\n"; -"room_event_encryption_info_device_verified" = "Đã xác thực"; -"room_event_encryption_info_device_not_verified" = "CHƯA xác thực"; -"room_event_encryption_info_device_blocked" = "Danh sách đen"; -"room_event_encryption_info_verify" = "Xác thực..."; -"room_event_encryption_info_unverify" = "Huỷ xác thực"; -"room_event_encryption_info_block" = "Danh sách đen"; -"room_event_encryption_info_unblock" = "Huỷ danh sách đen"; -"room_event_encryption_verify_title" = "Xác minh thiết bị\n\n"; -"room_event_encryption_verify_message" = "Để xác minh rằng thiết bị này có thể tin cậy, vui lòng liên hệ chủ sở hữu bằng cách sử dụng một số phương tiện khác (ví dụ: trực tiếp hoặc qua điện thoại) và yêu cầu họ xem khoá mà họ nhìn thấy trong \"Cài đặt người dùng\" cho thiết bị này có trùng khớp với khoá dưới đây:\n\n\tTên thiết bị: %@\n\tID thiết bị: %@\n\tKhóa thiết bị: %@\n\nNếu nó trùng khớp, nhấn nút xác minh dưới đây. Nếu không, thì ai đó đang chặn thiết bị này và bạn có thể muốn nhấn nút danh sách đen thay vì nhấn nút xác minh.\n\nTrong tương lai quá trình xác minh này sẽ phức tạp hơn."; -"room_event_encryption_verify_ok" = "Xác thực"; -// Account -"account_save_changes" = "Lưu thay đổi"; -"account_link_email" = "Liên kết email"; -"account_linked_emails" = "Email đã được liên kết"; -"account_email_validation_title" = "Xác minh đang chờ xử lí"; -"account_email_validation_message" = "Vui lòng check email của bạn và nhấn vào đường dẫn đính kèm trong đó. Sau khi việc đó hoàn thành, nhấn tiếp tục."; -"account_email_validation_error" = "Không thể xác minh địa chỉ email. Vui lòng kiểm tra email của bạn và nhấn vào liên kết mà nó được đính kèm. Sau khi việc đó hoàn thành, nhất tiếp tục"; -"account_msisdn_validation_title" = "Xác minh đang chờ xử lí"; -"account_msisdn_validation_message" = "Chúng tôi đã gửi mã kích hoạt qua SMS. Vui lòng nhập mã kích hoạt bên dưới."; -"account_msisdn_validation_error" = "Không thể xác thực số điện thoại."; -"account_error_display_name_change_failed" = "Thay đổi tên hiển thị thất bại"; -"account_error_picture_change_failed" = "Thay đổi hình ảnh thất bại"; -"account_error_matrix_session_is_not_opened" = "Phiên làm việc matrix chưa được mở"; -"account_error_email_wrong_title" = "Địa chỉ email không hợp lệ"; -"account_error_email_wrong_description" = "Nó có vẻ không phải là một địa chỉ email hợp lệ"; -"account_error_msisdn_wrong_title" = "Số điện thoại không hợp lệ"; -"account_error_msisdn_wrong_description" = "Nó có vẻ không phải là một số điện thoại hợp lệ"; -// Room creation -"room_creation_name_title" = "Tên phòng:"; -"room_creation_name_placeholder" = "(ví dụ: lunchGroup)"; -"room_creation_alias_title" = "Bí danh phòng:"; -"room_creation_alias_placeholder" = "(ví dụ: #foo:example.org)"; -"room_creation_alias_placeholder_with_homeserver" = "(ví dụ: #foo%@)"; -"room_creation_participants_title" = "Người tham gia:"; -"room_creation_participants_placeholder" = "(ví dụ: @bob:homeserver1; @john:homeserver2...)"; -// Room -"room_please_select" = "Vui lòng chọn một phòng"; -"room_error_join_failed_title" = "Tham gia phòng thất bại"; -"room_error_join_failed_empty_room" = "Hiện tại không thể tham gia lại phòng trống."; -"room_error_name_edition_not_authorized" = "Bạn chưa được uỷ quyền để sửa tên phòng"; -"room_error_topic_edition_not_authorized" = "Bạn chưa được uỷ quyền để sửa chủ đề phòng"; -"room_error_cannot_load_timeline" = "Không tải được dòng thời gian"; -"room_error_timeline_event_not_found_title" = "Không tải được vị trí dòng thời gian"; -"room_error_timeline_event_not_found" = "Ứng dụng đã cố gắng tải một điểm cụ thể trong thời gian của phòng này nhưng không thể tìm thấy nó"; -"room_left" = "Bạn đã rời phòng"; -"room_no_power_to_create_conference_call" = "Bạn cần cấp quyền để mời bắt đầu cuộc gọi hội họp trong phòng này"; -"room_no_conference_call_in_encrypted_rooms" = "Gọi hội họp chưa được hỗ trợ trong các phòng đã mã hoá"; -// Room members -"room_member_ignore_prompt" = "Bạn có chắc chắn muốn ẩn tất cả tin nhắn từ người dùng này?"; -"room_member_power_level_prompt" = "Bạn sẽ không thể hoàn tác thay đổi này khi bạn đang quảng cáo cho người dùng có mức năng lượng như chính bạn.\nBạn có chắc không?"; -// Attachment -"attachment_size_prompt" = "Bạn có muốn gửi dưới dạng:"; -"attachment_original" = "Kích thước thực sự: %@"; -"attachment_small" = "Nhỏ: %@"; -"attachment_medium" = "Trung bình: %@"; -"attachment_large" = "Lớn: %@"; -"attachment_cancel_download" = "Huỷ bỏ tải xuống?"; -"attachment_cancel_upload" = "Huỷ bỏ tải lên?"; -"attachment_multiselection_size_prompt" = "Bạn có muốn gửi hình ảnh dưới dạng:"; -"attachment_multiselection_original" = "Kích thước thực sự"; -"attachment_e2e_keys_file_prompt" = "Tập tin này chứa các khoá mã hoá được xuất từ một máy khách Matrix.\nBạn có muốn xem nội dung tập tin hoặc nhập khẩu các khóa nó chứa?"; -"attachment_e2e_keys_import" = "Nhập..."; -// Contacts -"contact_mx_users" = "Người dùng của Matrix"; -"contact_local_contacts" = "Danh bạ"; -// Search -"search_no_results" = "Không có kết quả"; -"search_searching" = "Đang tìm kiếm..."; -// Time -"format_time_s" = "giây"; -"format_time_m" = "phút"; -"format_time_h" = "giờ"; -"format_time_d" = "ngày"; -// E2E import -"e2e_import_room_keys" = "Nhập khóa phòng"; -"e2e_import_prompt" = "Quá trình này cho phép bạn nhập các khoá mã hoá mà trước đây bạn đã xuất từ một máy khách Matrix khác. Sau đó, bạn sẽ có thể giải mã bất kỳ thư nào mà khách hàng khác có thể giải mã.\nTệp xuất được bảo vệ bằng cụm mật khẩu. Bạn nên nhập cụm từ mật khẩu ở đây, để giải mã tệp."; -"e2e_import" = "Nhập"; -"e2e_passphrase_enter" = "Nhập cụm mật khẩu"; -// E2E export -"e2e_export_room_keys" = "Xuất các khoá của phòng"; -"e2e_export_prompt" = "Quá trình này cho phép bạn xuất khẩu các khoá cho tin nhắn bạn đã nhận được trong các phòng được mã hoá tới một tập tin cục bộ. Sau đó, bạn sẽ có thể nhập tập tin vào máy khách Matrix khác trong tương lai, để khách hàng cũng có thể giải mã các thư này.\nTập tin được xuất sẽ cho phép bất kỳ ai có thể đọc nó để giải mã bất kỳ tin nhắn nào được mã hóa mà bạn có thể thấy, do đó bạn nên cẩn thận để giữ an toàn."; -"e2e_export" = "Xuất"; -"e2e_passphrase_confirm" = "Xác nhận cụm mật khẩu"; -"e2e_passphrase_empty" = "Cụm mật khẩu không được để trống"; -"e2e_passphrase_not_match" = "Cụm mật khẩu phải trùng khớp"; -// Others -"user_id_title" = "ID Người dùng:"; -"offline" = "ngoại tuyến"; -"unsent" = "Chưa được gửi"; -"error" = "Lỗi"; -"not_supported_yet" = "Chưa hỗ trợ"; -"default" = "mặc định"; -"private" = "Riêng tư"; -"public" = "Công khai"; -"power_level" = "Độ nhiệt huyết"; -"network_error_not_reachable" = "Vui lòng kiểm tra kết nối mạng của bạn"; -"user_id_placeholder" = "ví dụ: @bob:homeserver"; -"ssl_homeserver_url" = "Home Server URL: %@"; -// Permissions -"camera_access_not_granted_for_call" = "Cuộc gọi video yêu cầu quyền truy cập tới máy ảnh nhưng %@ chưa có quyền để sử dụng nó"; -"microphone_access_not_granted_for_call" = "Cuộc gọi thoại yêu cầu truy cập tới Microphone nhưng %@ chưa có quyền để sử dụng nó"; -"local_contacts_access_not_granted" = "Người dùng tìm thấy từ địa chỉ liên hệ cục bộ yêu cầu quyền truy cập vào danh sách liên hệ của bạn nhưng %@ không có quyền sử dụng nó"; -"local_contacts_access_discovery_warning_title" = "Quét người dùng"; -"local_contacts_access_discovery_warning" = "%@ muốn tải lên danh sách email và số điện thoại từ danh bạ của bạn để quét người dùng"; -// Country picker -"country_picker_title" = "Chọn một quốc gia"; -// Language picker -"language_picker_title" = "Chọn một ngôn ngữ"; -"language_picker_default_language" = "Mặc định (%@)"; -"notice_room_invite" = "%@ đã mời %@"; -"notice_room_third_party_invite" = "%@ gửi một lời mời tới %@ để tham gia phòng"; -"notice_room_third_party_registered_invite" = "%@ chấp nhận lời mời cho %@"; -"notice_room_join" = "%@ đã tham gia"; -"notice_room_leave" = "%@ đã rời"; -"notice_room_reject" = "%@ từ chối lời yêu cầu"; -"notice_room_kick" = "%@ đã đá %@ ra khỏi phòng"; -"notice_room_unban" = "%@ đã huỷ cấm %@"; -"notice_room_ban" = "%@ đã cấm %@"; -"notice_room_withdraw" = "%@ đã thu hồi lời mời của %@"; -"notice_room_reason" = ". Lý do: %@"; -"notice_avatar_url_changed" = "%@ đã thay đổi ảnh đại diện của họ"; -"notice_display_name_set" = "%@ đặt tên hiển thị của họ thành %@"; -"notice_display_name_changed_from" = "%@ thay đổi tên hiển thị của họ từ %@ thành %@"; -"notice_display_name_removed" = "%@ đã gỡ bỏ tên hiển thị của họ"; -"notice_topic_changed" = "%@ thay đổi chủ đề thành: %@"; -"notice_room_name_changed" = "%@ đã thay đổi tên phòng thành: %@"; -"notice_placed_voice_call" = "%@ tạo một cuộc gọi thoại"; -"notice_placed_video_call" = "%@ tạo một cuộc gọi video"; -"notice_answered_video_call" = "%@ đã trả lời cuộc gọi"; -"notice_ended_video_call" = "%@ kết thúc cuộc gọi"; -"notice_conference_call_request" = "%@ yêu cầu một hội nghị VoIP"; -"notice_conference_call_started" = "Cuộc gọi hội nghị VoIP đã bắt đầu"; -"notice_conference_call_finished" = "Cuộc gọi hội nghị VoIP đã kết thúc"; -// button names -"ok" = "OK"; -"cancel" = "Huỷ"; -"save" = "Lưu"; -"leave" = "Rời khỏi"; -"send" = "Gửi"; -"copy_button_name" = "Sao chép"; -"resend" = "Gửi lại"; -"redact" = "Biên tập lại"; -"share" = "Chia sẻ"; -"set_power_level" = "Độ nhiệt huyết"; -"delete" = "Xoá"; -"view" = "Xem"; -// actions -"action_logout" = "Đăng xuất"; -"create_room" = "Tạo phòng"; -"login" = "Đăng nhập"; -"create_account" = "Tạo tài khoản"; -"membership_invite" = "Đã mời"; -"membership_leave" = "Đã rời"; -"membership_ban" = "Bị cấm"; -"num_members_one" = "%@ người dùng"; -"num_members_other" = "%@ người dùng"; -"invite" = "Mời"; -"kick" = "Đá"; -"ban" = "Cấm"; -"unban" = "Huỷ cấm"; -"message_unsaved_changes" = "Có vài thay đổi chưa được lưu. Rời khỏi sẽ mất những thay đổi này."; -// Login Screen -"login_error_already_logged_in" = "Đã đăng nhập"; -"login_error_must_start_http" = "URL phải bắt đầu với http[s]://"; -// room details dialog screen -"room_details_title" = "Chi tiết phòng chat"; -// contacts list screen -"invitation_message" = "Tôi muốn trò chuyện với bạn với matrix. Vui lòng truy cập trang web http://matrix.org để biết thêm thông tin."; -// Settings screen -"settings_title_config" = "Cấu hình"; -"settings_title_notifications" = "Thông báo"; -// Notification settings screen -"notification_settings_disable_all" = "Tắt tất cả thông báo"; -"notification_settings_enable_notifications" = "Bật thông báo"; -"notification_settings_enable_notifications_warning" = "Tất cả thông báo hiện tại đang bị vô hiệu hoá cho tất cả thiết bị."; -"notification_settings_global_info" = "Cài đặt thông báo được lưu vào tài khoản người dùng của bạn và được chia sẻ giữa tất cả các máy khách có hỗ trợ chúng (bao gồm thông báo trên máy bàn).\n\nCác quy tắc được áp dụng theo thứ tự; quy tắc đầu tiên khớp với định nghĩa của thông báo đến từ bên ngoài.\nVì vậy: Thông báo mỗi lần quan trọng hơn thông báo cho mỗi phòng điều mà quan trọng hơn thông báo mỗi người gửi.\nĐối với nhiều quy tắc cùng loại, lựa chọn đầu tiên trong danh sách phù hợp sẽ được ưu tiên."; -"notification_settings_per_word_notifications" = "Thông báo mỗi từ"; -"notification_settings_per_word_info" = "Các từ khớp với trường hợp vô nghĩa và có thể bao gồm ký tự đại diện *. Vì thế:\nfoo phù hợp với chuỗi foo bao quanh bởi từ phân cách chữ (ví dụ: chấm câu và khoảng trắng hoặc bắt đầu / kết thúc dòng).\nfoo * khớp với bất kỳ từ nào bắt đầu foo.\n* foo * khớp bất kỳ từ nào trong đó bao gồm 3 chữ foo."; -"notification_settings_always_notify" = "Luôn thông báo"; -"notification_settings_never_notify" = "Không bao giờ thông báo"; -"notification_settings_word_to_match" = "từ để so khớp"; -"notification_settings_highlight" = "Điểm nhấn"; -"notification_settings_custom_sound" = "Âm thanh tuỳ chỉnh"; -"notification_settings_per_room_notifications" = "Thông báo mỗi phòng"; -"notification_settings_per_sender_notifications" = "Thông báo mỗi người gửi"; -"notification_settings_sender_hint" = "@nguoidung:tenmien.com"; -"notification_settings_select_room" = "Chọn một phòng"; -"notification_settings_other_alerts" = "Các thông báo khác"; -"notification_settings_contain_my_user_name" = "Thông báo cho tôi với âm thanh về các tin nhắn chứa tên của tôi"; -"notification_settings_contain_my_display_name" = "Thông báo cho tôi với âm thanh về các tin nhắn chưa tên hiển thị của tôi"; -"notification_settings_just_sent_to_me" = "Thông báo cho tôi với âm thành về các tin nhắn chỉ gửi cho tôi"; -"notification_settings_invite_to_a_new_room" = "Thông báo cho tôi khi tôi được mời vào một phòng mới"; -"notification_settings_people_join_leave_rooms" = "Thông báo cho tôi khi mọi người tham gia hoặc rời các phòng"; -"notification_settings_receive_a_call" = "Thông báo cho tôi khi tôi nhận cuộc gọi"; -"notification_settings_suppress_from_bots" = "Chặn thông báo từ các bot"; -"notification_settings_by_default" = "Theo mặc định..."; -"notification_settings_notify_all_other" = "Thông báo cho tất cả tin nhắn/phòng"; -// gcm section -"settings_config_home_server" = "Home server: %@"; -"settings_config_identity_server" = "Máy chủ xác thực: %@"; -"settings_config_user_id" = "ID Người dùng: %@"; -// call string -"call_waiting" = "Đang đợi..."; -"call_connecting" = "Đang kết nối cuộc gọi..."; -"call_ended" = "Cuộc gọi kết thúc"; -"call_ring" = "Đang gọi..."; -"incoming_video_call" = "Cuộc gọi video tới"; -"incoming_voice_call" = "Cuộc gọi thoại tới"; -"call_invite_expired" = "Lời mời cuộc gọi đã quá hạn"; -// unrecognized SSL certificate -"ssl_trust" = "Tin tưởng"; -"ssl_logout_account" = "Đăng xuất"; -"ssl_remain_offline" = "Bỏ qua"; -"ssl_fingerprint_hash" = "Vân tay (%@):"; -"ssl_could_not_verify" = "Không thể xác minh danh tính của máy chủ từ xa."; -"ssl_cert_not_trust" = "Điều này có thể có nghĩa là ai đó đang ngăn chặn lưu lượng truy cập của bạn, hoặc điện thoại của bạn không tin tưởng vào chứng chỉ được cung cấp bởi máy chủ từ xa."; -"ssl_cert_new_account_expl" = "Nếu quản trị viên máy chủ đã nói rằng điều này được mong đợi, đảm bảo rằng các dấu vân tay dưới đây phù hợp với dấu vân tay được cung cấp bởi chúng."; -"ssl_unexpected_existing_expl" = "Chứng chỉ đã thay đổi từ chứng chỉ mà điện thoại của bạn tin cậy. Điều này là KHÔNG THƯỜNG XUYÊN. Chúng tôi khuyên bạn KHÔNG CHẤP NHẬN chứng chỉ mới này."; -"ssl_expected_existing_expl" = "Chứng chỉ đã thay đổi từ một tài khoản đáng tin cậy trước đó sang chứng chỉ không đáng tin cậy. Máy chủ có thể đã gia hạn chứng chỉ của nó. Liên hệ với quản trị viên máy chủ để lấy dấu vân tay được mong đợi."; -"ssl_only_accept" = "CHỈ chấp nhận chứng chỉ nếu quản trị viên máy chủ đã xuất bản một dấu vân tay phù hợp với bảng trên."; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/vls.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/vls.lproj/MatrixKit.strings deleted file mode 100644 index 0e58e8e60..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/vls.lproj/MatrixKit.strings +++ /dev/null @@ -1,123 +0,0 @@ -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "Account anmoakn:"; -"login_server_url_placeholder" = "URL (bv. https://matrix.org)"; -"login_home_server_title" = "Thuusserver:"; -"login_home_server_info" = "Je thuusserver sloat al je gespreks- en accountgegeevns ip"; -"login_identity_server_title" = "Identiteitsserver:"; -"login_user_id_placeholder" = "Matrix-ID (bv. @jean:matrix.org of jean)"; -"login_password_placeholder" = "Paswoord"; -"login_optional_field" = "optioneel"; -"login_display_name_placeholder" = "Weergoavenoame (bv. Jean Kieckens)"; -"login_email_info" = "Door een e-mailadresse in te geevn kunn andere gebruukers je gemakkeliker ip Matrix wereviendn, en 't gift jen ook e maniere voor in den toekomst je paswoord te verandern."; -"login_email_placeholder" = "E-mailadresse"; -"login_prompt_email_token" = "Gif jen e-mailadressevalidoatiebewys in:"; -"login_error_title" = "Anmeldn mislukt"; -"login_error_no_login_flow" = "Iphoaln van de authenticoatie-informoatie van dezen thuusserver is mislukt"; -"view" = "Toogn"; -"login_identity_server_info" = "Matrix verstrekt identiteitsservers vo t’achterhoaln wukke e-mailadressn e.d.m. dat der by wukke Matrix-ID’s hoorn. Tot nu toe bestoat alleene mo https://matrix.org."; -"login_error_do_not_support_login_flows" = "Vo de moment biedn we geen oundersteunienge vo sommigste of alle anmeldiengsmethoodn van dezen thuusserver"; -"login_error_registration_is_not_supported" = "Registroasje wor vo de moment nie oundersteund"; -"login_error_forbidden" = "Oungeldig(e) gebrukersnoame/paswoord"; -"login_error_unknown_token" = "’t Ingegeevn toegangsbewys is nie herkend"; -"login_error_bad_json" = "Oungeldigen JSON"; -"login_error_not_json" = "Bevat gene geldigen JSON"; -"login_error_limit_exceeded" = "’t Zyn te vele verzoekn verzonden gewist"; -"login_error_user_in_use" = "Deze gebrukersnoame is al in gebruuk"; -"login_error_login_email_not_yet" = "De koppelienge in den e-mail is nog nie geopend gewist"; -"login_use_fallback" = "Weerevalblad gebruukn"; -"login_leave_fallback" = "Annuleern"; -"login_invalid_param" = "Oungeldige parameter"; -"register_error_title" = "Registroasje mislukt"; -"login_error_forgot_password_is_not_supported" = "Paswoord vergeten wor vo de moment nog nie oundersteund"; -"login_mobile_device" = "Gsm"; -"login_tablet_device" = "Tablet"; -"login_desktop_device" = "Computer"; -"login_error_resource_limit_exceeded_title" = "Bronlimiet overschreedn"; -"login_error_resource_limit_exceeded_message_default" = "Dezen thuusserver èt één of meer van z’n bronlimietn overschreedn."; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "Dezen thuusserver è z’n limiet vo moandeliks actieve gebrukers bereikt."; -"login_error_resource_limit_exceeded_message_contact" = "\n\nContacteert je dienstbeheerder vo deze dienst te bluuvn gebruukn."; -"login_error_resource_limit_exceeded_contact_button" = "Beheerder contacteern"; -// Action -"no" = "Nee"; -"yes" = "Ja"; -"abort" = "Afbreekn"; -"back" = "Weere"; -"close" = "Sluutn"; -"continue" = "Verdergoan"; -"discard" = "Verwerpn"; -"dismiss" = "Sluutn"; -"retry" = "Herprobeern"; -"sign_up" = "Anmeldn"; -"submit" = "Indienn"; -"submit_code" = "Code indienn"; -"set_power_level" = "Machtsniveau instelln"; -"set_default_power_level" = "Machtsniveau herinstelln"; -"set_moderator" = "Benoemn tou moderator"; -"set_admin" = "Benoemn tou beheerder"; -"start_chat" = "Gesprek beginn"; -"start_voice_call" = "Sproakiproep beginn"; -"start_video_call" = "Video-iproep beginn"; -"mention" = "Vermeldn"; -"select_account" = "Selecteert een account"; -"attach_media" = "Media van de bibliotheek byvoegn"; -"capture_media" = "Fotootje/filmtje moakn"; -"invite_user" = "Matrix-gebruker uutnodign"; -"reset_to_default" = "Standoardwoardn herstelln"; -"resend_message" = "Bericht hersteurn"; -"select_all" = "Alles selecteern"; -"cancel_upload" = "Upload annuleern"; -"cancel_download" = "Download annuleern"; -"show_details" = "Details weeregeevn"; -"answer_call" = "Iproep beantwoordn"; -"reject_call" = "Iproep afwyzn"; -"end_call" = "Iphangn"; -"ignore" = "Negeern"; -"unignore" = "Stoppen me negeern"; -// Events formatter -"notice_avatar_changed_too" = "(profielfoto is ook veranderd gewist)"; -"notice_room_name_removed" = "%@ èt de gespreksnoame verwyderd"; -"notice_room_topic_removed" = "%@ è ’t ounderwerp verwyderd"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " deur %@"; -"notice_event_redacted_reason" = " [reden: %@]"; -"notice_profile_change_redacted" = "%@ èt zyn/heur profiel bygewerkt %@"; -"notice_room_created" = "%@ è ’t gesprek angemakt"; -"notice_room_join_rule" = "De toetrediengsregel is: %@"; -"notice_room_power_level_intro" = "’t Machtsniveau van gespreksleden is:"; -"notice_room_power_level_acting_requirement" = "De minimoale machtsniveau waarover dat e gebruker moe beschikkn vooraleer da t’n kut handeln zyn:"; -"notice_room_power_level_event_requirement" = "De minimoale machtsniveaus gerelateerd an gebeurtenissn zyn:"; -"notice_room_aliases" = "De gespreksbynoamn zyn: %@"; -"notice_room_related_groups" = "De groepn da geassocieerd zyn me da gesprek hier zyn: %@"; -"notice_encrypted_message" = "Versleuterd bericht"; -"notice_encryption_enabled" = "%@ èt end-tout-end-versleuterienge angezet (%@-algoritme)"; -"notice_image_attachment" = "fotobylage"; -"notice_audio_attachment" = "geluudsbylage"; -"notice_video_attachment" = "videobylage"; -"notice_location_attachment" = "locoasjebylage"; -"notice_file_attachment" = "bestandsbylage"; -"notice_invalid_attachment" = "oungeldige bylage"; -"notice_unsupported_attachment" = "Nie-oundersteunde bylage: %@"; -"notice_feedback" = "Feedbackgebeurtenisse (id: %@): %@"; -"notice_redaction" = "%@ èt e gebeurtenisse verwyderd (id: %@)"; -"notice_error_unsupported_event" = "Nie-oundersteunde gebeurtenisse"; -"notice_error_unexpected_event" = "Ounverwachte gebeurtenisse"; -"notice_error_unknown_event_type" = "Ounbekend gebeurtenistype"; -"notice_room_history_visible_to_anyone" = "%@ èt de toekomstige gesprekgeschiedenisse voor iedereen zichtboar gemakt."; -"cancel" = "Annuleern"; -"save" = "Ipsloan"; -"leave" = "Verloatn"; -"invite" = "Uutnodign"; -"notice_room_history_visible_to_members" = "%@ èt de toekomstige gespreksgeschiedenisse voor alle gespreksleedn zichtboar gemakt ghed."; -"notice_crypto_unable_to_decrypt" = "** Kostege nie ountsleutern: %@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "’t Toestel van den afzender èt uus geen sleuters vo da bericht hier gestuurd ghed."; -"notice_sticker" = "sticker"; -"notice_in_reply_to" = "In antwoord op"; -// room display name -"room_displayname_empty_room" = "Leeg gesprek"; -"room_displayname_two_members" = "%@ en %@"; -"room_displayname_more_than_two_members" = "%@ en %@ anderen"; -// Settings -"settings" = "Instelliengn"; -"settings_enable_inapp_notifications" = "In-app-meldiengn inschoakeln"; -"settings_enable_push_notifications" = "Pushmeldiengn inschoakeln"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/zh_Hans.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/zh_Hans.lproj/MatrixKit.strings deleted file mode 100644 index 87fdb0a0c..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/zh_Hans.lproj/MatrixKit.strings +++ /dev/null @@ -1,482 +0,0 @@ -"view" = "视图"; -"back" = "返回"; -"continue" = "继续"; -"leave" = "离开"; -"invite" = "邀请"; -"retry" = "重试"; -"cancel" = "取消"; -"save" = "保存"; -// room details dialog screen -"room_details_title" = "聊天室详情"; -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "创建账户:"; -"login_server_url_placeholder" = "网址(例如 https://matrix.org)"; -"login_home_server_title" = "主服务器网址:"; -"login_home_server_info" = "您的主服务器存储了您所有的对话和账户数据"; -"login_identity_server_title" = "身份认证服务器网址:"; -"login_identity_server_info" = "Matrix 提供了身份认证服务器以验证邮箱地址等是否属于某个 Matrix ID。目前只有 https://matrix.org 支持。"; -"login_user_id_placeholder" = "Matrix ID(例如 @bob:matrix.org 或 bob)"; -"login_password_placeholder" = "密码"; -"login_optional_field" = "可选"; -"login_display_name_placeholder" = "显示名(例如 Bob Obson)"; -"login_email_placeholder" = "电子邮件地址"; -"login_prompt_email_token" = "请输入您的电子邮件认证令牌:"; -"login_error_title" = "登录失败"; -"login_error_registration_is_not_supported" = "目前不支持注册"; -"login_error_forbidden" = "无效的用户名/密码"; -"login_error_unknown_token" = "不能识别特定访问令牌"; -"login_error_bad_json" = "JSON 格式错误"; -"login_error_not_json" = "不包含有效的 JSON"; -"login_error_limit_exceeded" = "发送了太多的请求"; -"login_error_user_in_use" = "此用户名已占用"; -"login_error_login_email_not_yet" = "此电子邮件链接还没有被点击"; -"login_use_fallback" = "使用备用页面"; -"login_leave_fallback" = "取消"; -"login_invalid_param" = "参数无效"; -"register_error_title" = "注册失败"; -"login_error_forgot_password_is_not_supported" = "当前不支持忘记密码"; -// Action -"no" = "否"; -"yes" = "是"; -"abort" = "中止"; -"close" = "关闭"; -"discard" = "放弃"; -"dismiss" = "无视"; -"sign_up" = "注册"; -"submit" = "提交"; -"submit_code" = "提交码"; -"set_default_power_level" = "重置权限级别"; -"set_moderator" = "设置主持人"; -"set_admin" = "设置管理员"; -"start_chat" = "启动聊天"; -"start_voice_call" = "启动语音通话"; -"start_video_call" = "启动视频通话"; -"mention" = "提到"; -"select_account" = "选择一个账户"; -"attach_media" = "从库附加媒体"; -"capture_media" = "拍照片/视频"; -"invite_user" = "邀请 Matrix 用户"; -"reset_to_default" = "重置到默认"; -"resend_message" = "重新发送此消息"; -"select_all" = "选择全部"; -"cancel_upload" = "取消上传"; -"cancel_download" = "取消下载"; -"show_details" = "显示详情"; -"answer_call" = "接听通话"; -"reject_call" = "拒绝通话"; -"end_call" = "结束通话"; -"ignore" = "忽略"; -"unignore" = "取消忽略"; -// Events formatter -"notice_avatar_changed_too" = "(头像也已经改变)"; -"notice_room_name_removed" = "%@ 移除了此聊天室的名称"; -"notice_room_topic_removed" = "%@ 移除了话题"; -"notice_event_redacted" = ""; -"notice_event_redacted_by" = " 由 %@"; -"notice_event_redacted_reason" = " [理由:%@]"; -"notice_profile_change_redacted" = "%@ 已经更新了他的个人档案 %@"; -"notice_room_created" = "%@ 创建并配置了此聊天室。"; -"notice_room_join_rule" = "加入规则是:%@"; -"notice_room_power_level_intro" = "此聊天室成员的权限级别是:"; -"notice_room_power_level_acting_requirement" = "要进行此操作,用户必须具备的最低权限级别是 :"; -"notice_room_power_level_event_requirement" = "事件所需的最小权限级别:"; -"notice_room_aliases" = "此聊天室的别名是:%@"; -"notice_encrypted_message" = "已加密消息"; -"notice_encryption_enabled" = "%@ 打开了端对端加密(算法 %@)"; -"notice_image_attachment" = "图片附件"; -"notice_audio_attachment" = "音频附件"; -"notice_video_attachment" = "视频附件"; -"notice_location_attachment" = "位置附件"; -"notice_file_attachment" = "文件附件"; -"notice_invalid_attachment" = "无效附件"; -"notice_unsupported_attachment" = "不支持的附件:%@"; -"login_email_info" = "指定邮箱地址可以让其他 Matrix 用户更容易找到您,并允许您可以在未来重置密码。"; -"login_error_no_login_flow" = "我们未能从此主服务器获取认证信息"; -"login_error_do_not_support_login_flows" = "当前我们不支持此主服务器定义的任何或者所有登录流"; -"notice_feedback" = "反馈事件 (id: %@):%@"; -"notice_redaction" = "%@ 取消了一个事件 (id: %@)"; -"notice_error_unsupported_event" = "不支持的事件"; -"notice_error_unexpected_event" = "意外的事件"; -"notice_error_unknown_event_type" = "未知的事件类型"; -"notice_room_history_visible_to_anyone" = "%@ 将未来的聊天室消息历史设为对所有人可见。"; -"notice_room_history_visible_to_members" = "%@ 将未来的聊天室消息历史设为对所有聊天室成员可见。"; -"notice_room_history_visible_to_members_from_invited_point" = "你将未来的聊天室消息历史设为对所有聊天室成员可见,从他们被邀请时开始。"; -"notice_room_history_visible_to_members_from_joined_point" = "%@ 将未来的聊天室消息历史设为对所有聊天室成员可见,从他们加入时开始。"; -"notice_crypto_unable_to_decrypt" = "** 无法解密:%@ **"; -"notice_crypto_error_unknown_inbound_session_id" = "发送者的会话没有向我们发送此消息的密钥。"; -// room display name -"room_displayname_empty_room" = "空聊天室"; -"room_displayname_two_members" = "%@ 和 %@"; -"room_displayname_more_than_two_members" = "%@ 和 %@ 个其他人"; -// Settings -"settings" = "设置"; -"settings_enable_inapp_notifications" = "启用应用内通知"; -"settings_enable_push_notifications" = "启用推送通知"; -"settings_enter_validation_token_for" = "请输入 %@ 的验证令牌:"; -"notification_settings_room_rule_title" = "聊天室:“%@”"; -// Devices -"device_details_title" = "会话信息\n"; -"device_details_name" = "公开名称\n"; -"device_details_identifier" = "ID\n"; -"device_details_last_seen" = "最近一次上线\n"; -"device_details_last_seen_format" = "%@ @ %@\n"; -"device_details_rename_prompt_message" = "会话的公开名称对与你联络的人可见"; -"device_details_delete_prompt_title" = "认证"; -"device_details_delete_prompt_message" = "此操作需要额外的认证。\n要继续,请输入您的密码。"; -// Encryption information -"room_event_encryption_info_title" = "端对端加密信息\n\n"; -"room_event_encryption_info_event" = "事件信息\n"; -"room_event_encryption_info_event_user_id" = "用户 ID\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519 认证密钥\n"; -"login_mobile_device" = "移动设备"; -"login_tablet_device" = "平板电脑"; -"login_desktop_device" = "桌面设备"; -"notice_room_related_groups" = "和此聊天室关联的社群是:%@"; -"room_event_encryption_info_event_session_id" = "会话 ID\n"; -"room_event_encryption_info_event_decryption_error" = "解密错误\n"; -"room_event_encryption_info_event_unencrypted" = "未加密"; -"room_event_encryption_info_event_none" = "无"; -"room_event_encryption_info_device" = "\n发送者的会话信息\n"; -"room_event_encryption_info_device_unknown" = "未知会话\n"; -"room_event_encryption_info_device_name" = "公开名称\n"; -"room_event_encryption_info_device_id" = "ID\n"; -"room_event_encryption_info_device_verification" = "验证\n"; -"room_event_encryption_info_device_verified" = "已验证"; -"room_event_encryption_info_device_not_verified" = "未验证"; -"room_event_encryption_info_device_blocked" = "已拉黑"; -"room_event_encryption_info_verify" = "验证…"; -"room_event_encryption_info_unverify" = "取消验证"; -"room_event_encryption_verify_title" = "验证会话\n\n"; -"account_error_display_name_change_failed" = "昵称修改失败"; -"account_error_email_wrong_title" = "邮箱地址无效"; -"account_error_msisdn_wrong_title" = "手机号码无效"; -// Room creation -"room_creation_name_title" = "聊天室名称:"; -"room_creation_name_placeholder" = "(例如:今天中午吃啥)"; -// Room -"room_please_select" = "请选择一个聊天室"; -"room_error_join_failed_title" = "加入聊天室失败"; -"room_error_cannot_load_timeline" = "时间线加载失败"; -"room_error_timeline_event_not_found_title" = "时间线位置加载失败"; -"room_left" = "你离开了聊天室"; -"attachment_small" = "小 (~%@)"; -"attachment_medium" = "中 (~%@)"; -"attachment_large" = "大 (~%@)"; -"attachment_cancel_download" = "是否取消下载?"; -"attachment_cancel_upload" = "是否取消上传?"; -"attachment_e2e_keys_import" = "导入…"; -// Search -"search_no_results" = "没有结果"; -"search_searching" = "正在搜索…"; -// Time -"format_time_s" = "秒"; -"format_time_m" = "分钟"; -"format_time_h" = "小时"; -"format_time_d" = "天"; -// E2E import -"e2e_import_room_keys" = "导入聊天室密钥"; -"e2e_import" = "导入"; -"e2e_passphrase_enter" = "输入密码"; -// E2E export -"e2e_export_room_keys" = "导出聊天室密钥"; -"e2e_export" = "导出"; -"e2e_passphrase_empty" = "密码不能为空"; -// Others -"user_id_title" = "用户 ID:"; -"offline" = "离线"; -"unsent" = "取消发送"; -"error" = "错误"; -"default" = "默认"; -"private" = "私人"; -"public" = "公开"; -"power_level" = "权限级别"; -"network_error_not_reachable" = "请检查你的网络连接"; -"user_id_placeholder" = "例如:@bob:homeserver"; -"ssl_homeserver_url" = "主服务器网址:%@"; -// Country picker -"country_picker_title" = "请选择国家"; -// Language picker -"language_picker_title" = "请选择语言"; -"language_picker_default_language" = "默认(%@)"; -"notice_room_invite" = "%@ 邀请了 %@"; -"notice_room_third_party_invite" = "%@ 邀请 %@ 加入聊天室"; -"notice_room_third_party_registered_invite" = "%@ 同意了 %@ 的邀请"; -"notice_room_join" = "%@ 已加入"; -"notice_room_leave" = "%@ 已退出"; -"notice_room_reject" = "%@ 拒绝了邀请"; -"notice_room_kick" = "%@ 移除了 %@"; -"notice_room_unban" = "%@ 解封了 %@"; -"notice_room_ban" = "%@ 封禁了 %@"; -"notice_room_withdraw" = "%@ 撤回了对 %@ 的邀请"; -"notice_room_reason" = "。理由:%@"; -"notice_avatar_url_changed" = "%@ 更换了头像"; -"notice_display_name_set" = "%@ 将自己的昵称设置为 %@"; -"notice_display_name_changed_from" = "%@ 将自己的昵称从 %@ 改成 %@"; -"notice_display_name_removed" = "%@ 删除了自己的昵称"; -"notice_room_name_changed" = "%@ 将聊天室名称修改为 %@。"; -// button names -"ok" = "确定"; -"send" = "发送"; -"copy_button_name" = "复制"; -"resend" = "重新发送"; -"share" = "分享"; -"redact" = "移除"; -"set_power_level" = "设置权限级别"; -"delete" = "删除"; -"create_room" = "创建聊天室"; -"login" = "登录"; -"create_account" = "创建账号"; -"membership_invite" = "邀请"; -"membership_leave" = "退出"; -"membership_ban" = "已被封禁"; -"num_members_one" = "%@ 位用户"; -"num_members_other" = "%@ 位用户"; -"kick" = "移除"; -"ban" = "封禁"; -"unban" = "解封"; -// Login Screen -"login_error_already_logged_in" = "已登录"; -"login_error_must_start_http" = "URL 必须以 http[s]:// 开头"; -// Settings screen -"settings_title_config" = "选项"; -"settings_title_notifications" = "通知"; -// contacts list screen -"invitation_message" = "我想使用 Matrix 和你聊天。请访问 https://martix.org 以了解更多信息。"; -"account_error_matrix_session_is_not_opened" = "没有打开 Matrix 会话"; -"account_error_email_wrong_description" = "此邮箱地址似乎是无效的"; -"account_error_msisdn_wrong_description" = "此手机号码似乎是无效的"; -"room_creation_participants_placeholder" = "(例如:@bob:homeserver1; @john:homeserver2…)"; -"room_creation_participants_title" = "成员:"; -"room_creation_alias_placeholder_with_homeserver" = "(例如:#foo%@)"; -"room_creation_alias_placeholder" = "(例如:#foo:example.org)"; -"room_error_join_failed_empty_room" = "目前无法加入空聊天室。"; -"room_error_name_edition_not_authorized" = "你没有修改聊天室名称所需的权限"; -"room_error_topic_edition_not_authorized" = "你没有修改聊天室话题所需的权限"; -// Room members -"room_member_ignore_prompt" = "你确定要隐藏所有此用户发送的消息吗?"; -// Contacts -"contact_mx_users" = "Matrix 用户"; -"contact_local_contacts" = "本地联系人"; -// Groups -"group_invite_section" = "邀请"; -"group_section" = "群组"; -"e2e_passphrase_confirm" = "确认密码"; -"notification_settings_enable_notifications" = "启用通知"; -// Notification settings screen -"notification_settings_disable_all" = "禁用通知"; -"notification_settings_highlight" = "高亮"; -"notification_settings_custom_sound" = "自定义铃声"; -"notification_settings_select_room" = "选择一个聊天室"; -"notification_settings_other_alerts" = "其他警报"; -// gcm section -"settings_config_home_server" = "主服务器:%@"; -"settings_config_identity_server" = "身份认证服务器:%@"; -"settings_config_user_id" = "用户 ID:%@"; -"call_ended" = "通话结束"; -// unrecognized SSL certificate -"ssl_trust" = "信任"; -"ssl_logout_account" = "登出"; -// actions -"action_logout" = "登出"; -"ssl_remain_offline" = "忽略"; -"message_unsaved_changes" = "尚有未经保存的修改。现在退出将会取消这些修改。"; -"notice_sticker" = "贴纸"; -"ssl_could_not_verify" = "无法验证远程服务器的身份。"; -// Account -"account_save_changes" = "保存更改"; -"account_link_email" = "邮箱地址"; -"account_linked_emails" = "邮箱地址"; -"account_email_validation_title" = "等待验证中"; -"account_msisdn_validation_title" = "等待验证中"; -"account_msisdn_validation_error" = "无法验证此手机号。"; -"account_error_picture_change_failed" = "头像修改失败"; -"e2e_passphrase_not_match" = "密码必须匹配"; -"not_supported_yet" = "尚未支持"; -"local_contacts_access_discovery_warning_title" = "发现用户"; -"notice_topic_changed" = "%@ 将话题修改为 \"%@\"。"; -"notice_placed_voice_call" = "%@ 发起了语音通话"; -"notice_placed_video_call" = "%@ 发起了视频通话"; -"notice_answered_video_call" = "%@ 接听了通话"; -"notice_ended_video_call" = "%@ 结束了通话"; -"notification_settings_always_notify" = "总是通知"; -"notification_settings_never_notify" = "从不通知"; -"notification_settings_sender_hint" = "@user:domain.com"; -// call string -"call_waiting" = "请等待…"; -"call_connecting" = "连接中…"; -"call_ring" = "正在通话…"; -"room_event_encryption_info_event_algorithm" = "算法\n"; -"room_event_encryption_verify_message" = "为验证此会话是否可信,请通过其他方式(例如当面交换或拨打电话)与其拥有者联系,并询问他们该会话的用户设置中的密钥是否与以下密钥匹配:\n\n\t会话名称:%@\n\t会话 ID:%@\n\t会话密钥:%@\n\n如果匹配,请点击下面的按钮。如果不匹配,那么说明有其他人截取了此会话,您可能想点击黑名单按钮。\n\n未来,这个验证过程将会变得更加精致、巧妙一些。"; -"room_event_encryption_info_event_fingerprint_key" = "声称的 Ed25519 指纹密钥\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519 指纹\n"; -"room_event_encryption_verify_ok" = "验证"; -"room_event_encryption_info_block" = "拉黑"; -"room_event_encryption_info_unblock" = "取消拉黑"; -"room_creation_alias_title" = "聊天室别称:"; -"notice_conference_call_started" = "VoIP 会议已开始"; -"notice_conference_call_request" = "%@ 发起了 VoIP 会议"; -"notice_conference_call_finished" = "VoIP 会议已结束"; -"notification_settings_enable_notifications_warning" = "所有设备上的通知都已被禁用。"; -"notice_in_reply_to" = "回复"; -"account_email_validation_message" = "请检查您的电子邮箱并点击邮件中的链接。完成此操作后,点击继续。"; -"account_email_validation_error" = "无法验证邮箱地址。请检查你的电子邮箱并点击邮件中的链接。完成后,请点击继续"; -"login_error_resource_limit_exceeded_title" = "超出资源使用限制"; -"login_error_resource_limit_exceeded_contact_button" = "联系管理员"; -"login_error_resource_limit_exceeded_message_default" = "此主服务器已超出某资源的使用限制。"; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "此主服务器已达到月活跃用户限制。"; -"login_error_resource_limit_exceeded_message_contact" = "\n\n请联系管理员以继续使用本服务。"; -"account_msisdn_validation_message" = "我们通过短信向您发送了一条验证码,请在下方输入它。"; -"room_error_timeline_event_not_found" = "应用程序试图加载此聊天室时间线中的特定点,但无法找到该时间点"; -"room_no_power_to_create_conference_call" = "您需要获得邀请权限才能在此聊天室开始会议"; -"room_no_conference_call_in_encrypted_rooms" = "加密聊天室暂不支持通话会议"; -// Reply to message -"message_reply_to_sender_sent_an_image" = "发送了一张图片。"; -"message_reply_to_sender_sent_an_audio_file" = "发送了一个音频文件。"; -"message_reply_to_sender_sent_a_file" = "发送了一个文件。"; -"message_reply_to_message_to_reply_to_prefix" = "回复"; -"room_member_power_level_prompt" = "该用户将被提升至与您一样的权限级别,所以此操作将无法撤销。\n您确定吗?"; -// Attachment -"attachment_size_prompt" = "发送为:"; -"attachment_original" = "实际大小 (%@)"; -"attachment_multiselection_size_prompt" = "发送图片为:"; -"attachment_multiselection_original" = "实际大小"; -"attachment_e2e_keys_file_prompt" = "此文件含有 Matrix 客户端导出的密钥。\n您想要查看文件内容还是导入密钥?"; -"message_reply_to_sender_sent_a_video" = "发送了一段视频。"; -"call_invite_expired" = "通话邀请已过期"; -"ssl_fingerprint_hash" = "指纹(%@):"; -"e2e_import_prompt" = "此操作允许您导入此前从其他 Matrix 客户端上导出的加密密钥。您将能够解密任何该客户端能解密的消息。\n该导出文件受密码保护。您应在此处输入密码以解密该文件。"; -"e2e_export_prompt" = "此操作允许您将加密聊天室中接收到的消息导出为一个本地文件。您将来可以将此文件导入到其他 Matrix 客户端中去解密这些消息。\n导出的文件将允许任何能够读取它的人解密您可以看到的任何加密消息,因此您应该小心保证其安全。"; -"e2e_passphrase_create" = "创建密码"; -"error_common_message" = "出现错误。请稍后再试。"; -// Permissions -"camera_access_not_granted_for_call" = "视频通话需要摄像头使用权限,但 %@ 无此权限"; -"microphone_access_not_granted_for_call" = "通话需要麦克风使用权限,但 %@ 无此权限"; -"local_contacts_access_not_granted" = "本地通讯录用户查找功能需要通讯录权限,但 %@ 无此权限"; -"local_contacts_access_discovery_warning" = "为了发现已经使用 Matrix 的联系人,%@ 可以把你地址簿里的邮箱地址和电话号码发送给你选定的 Matrix 身份认证服务器。如果支持的话,个人数据会在发送前被哈希——请检查你的身份认证服务器的隐私条款获知更多细节。"; -"notification_settings_global_info" = "通知设置已保存在您的账号中并在所有支持的客户端中共享(包括桌面通知)。\n\n规则会按顺序应用;第一条匹配的规则定义了消息的输出结果。\n因此:按字符规则的通知比按聊天室规则的通知级别更高,而这两者都比按发送者规则的通知级别更高。\n对于同一类型的多条规则,匹配列表中的第一条优先级最高。"; -"notification_settings_per_word_notifications" = "按字符通知"; -"notification_settings_per_word_info" = "单词不区分大小写,并且可能包含 * 通配符。 所以:\nfoo 匹配由单词分隔符包围的字符串 foo(例如标点符号和空格,或一行的开头/结尾)。\nfoo* 匹配任何以 foo 开头的单词。\n*foo* 匹配任何包含3个字母 foo 的单词。"; -"notification_settings_word_to_match" = "匹配的单词"; -"notification_settings_per_room_notifications" = "按聊天室通知"; -"notification_settings_per_sender_notifications" = "按发送者通知"; -"notification_settings_contain_my_user_name" = "有包含我的用户名的消息时用铃声通知"; -"notification_settings_contain_my_display_name" = "有包含我的昵称的消息时用铃声通知"; -"notification_settings_just_sent_to_me" = "有发送给我的消息时用铃声通知"; -"notification_settings_invite_to_a_new_room" = "我被邀请去一个新聊天室时用铃声通知"; -"notification_settings_people_join_leave_rooms" = "有人加入或离开聊天室时发送通知"; -"notification_settings_receive_a_call" = "当我收到通话请求时发送通知"; -"notification_settings_suppress_from_bots" = "取消来自机器人的通知"; -"notification_settings_by_default" = "默认…"; -"notification_settings_notify_all_other" = "为所有其他消息/聊天室发送通知"; -"incoming_video_call" = "视频通话来电"; -"incoming_voice_call" = "语音通话来电"; -"ssl_cert_not_trust" = "这可能意味着有人正在恶意劫持您的流量,或者您的手机不信任远程服务器提供的数字证书。"; -"ssl_cert_new_account_expl" = "如果服务器管理员说这是预期的情况,请确保下面的指纹与管理员提供的指纹相匹配。"; -"ssl_unexpected_existing_expl" = "证书已从一个先前受您的设备信任的证书更改为另一个。这非常反常!建议您 不要 接受此新证书。"; -"ssl_expected_existing_expl" = "证书已从曾受信任的证书更改为不受信任的证书。服务器可能已更新其证书,请联系管理员并核对服务器的指纹。"; -"ssl_only_accept" = "请 仅 在服务器管理员发布了与上述指纹匹配的指纹的情况下接受该证书。"; -"notice_encryption_enabled_ok" = "%@ 启用了端到端加密。"; -"notice_encryption_enabled_unknown_algorithm" = "%1$@ 启用了端到端加密(无法识别的算法 %2$@)。"; -"device_details_rename_prompt_title" = "会话名称"; -"account_error_push_not_allowed" = "未允许通知"; -"notice_room_third_party_revoked_invite" = "%@ 撤回了对 %@ 加入聊天室的邀请"; -"notice_encryption_enabled_ok_by_you" = "你启用了端对端加密。"; -"notice_room_created_by_you_for_dm" = "你加入了。"; -"notice_room_topic_removed_by_you" = "你移除了话题"; -"notice_room_name_removed_by_you_for_dm" = "你移除了名称"; -"notice_room_name_removed_by_you" = "你移除了聊天室名称"; -"notice_conference_call_request_by_you" = "你请求了 VoIP 会议"; -"notice_room_ban_by_you" = "你封禁了 %@"; -"notice_room_unban_by_you" = "你解封了 %@"; -"notice_room_kick_by_you" = "你移除了 %@"; -"notice_room_reject_by_you" = "你拒绝了邀请"; -"notice_room_leave_by_you" = "你退出了"; -"notice_room_join_by_you" = "你加入了"; -"notice_room_third_party_registered_invite_by_you" = "你接受了 %@ 的邀请"; -"notice_room_third_party_invite_by_you_for_dm" = "你邀请了 %@"; -"notice_room_invite_you" = "%@ 邀请了你"; - -// Notice Events with "You" -"notice_room_invite_by_you" = "你邀请了 %@"; -"notice_declined_video_call" = "%@ 拒接了通话"; -"notice_room_name_changed_for_dm" = "%@ 将名称修改为 %@。"; -"notice_room_third_party_revoked_invite_for_dm" = "%@ 撤回了对 %@ 的邀请"; -"notice_room_third_party_invite_for_dm" = "%@ 邀请了 %@"; -"room_left_for_dm" = "你离开了"; -"notice_room_power_level_intro_for_dm" = "成员的权限级别是:"; -"notice_room_aliases_for_dm" = "别名是:%@"; -"notice_room_created_for_dm" = "%@ 已加入。"; -"notice_room_name_removed_for_dm" = "%@ 移除了名称"; -"resume_call" = "恢复"; -"notice_encryption_enabled_unknown_algorithm_by_you" = "你启用了端对端加密(无法识别的算法 %@)。"; -"notice_event_redacted_by_you" = " 被你"; -"notice_room_third_party_revoked_invite_by_you" = "你撤回了对 %@ 加入此聊天室的邀请"; -"notice_room_join_rule_public_by_you_for_dm" = "你将此聊天设为公开。"; -"notice_room_join_rule_public_by_you" = "你将此聊天室设为公开。"; -"notice_room_join_rule_public_for_dm" = "%@ 将此聊天设为公开。"; -"notice_room_join_rule_public" = "%@ 将此聊天室设为公开。"; -"notice_room_join_rule_invite_by_you_for_dm" = "你将此聊天设为仅邀请。"; -"notice_room_join_rule_invite_by_you" = "你将此聊天室设为仅邀请。"; -"notice_room_join_rule_invite_for_dm" = "%@ 将此聊天设为仅邀请。"; -// New -"notice_room_join_rule_invite" = "%@ 将此聊天室设为仅邀请。"; -"notice_room_history_visible_to_members_from_invited_point_for_dm" = "%@ 将未来的消息设为对所有人可见,从他们被邀请时开始。"; -"notice_room_history_visible_to_members_from_invited_point_by_you_for_dm" = "你将未来的消息设为对所有人可见,从他们被邀请时开始。"; -"notice_room_history_visible_to_members_from_joined_point_by_you_for_dm" = "你将未来的消息设为对所有人可见,从他们加入时开始。"; -"notice_room_history_visible_to_members_from_joined_point_for_dm" = "%@ 将未来的消息设为对所有人可见,从他们加入时开始。"; -"notice_room_history_visible_to_members_from_joined_point_by_you" = "你将未来的聊天室消息历史设为对所有聊天室成员可见,从他们加入时开始。"; -"notice_room_history_visible_to_members_from_invited_point_by_you" = "你将未来的聊天室消息历史设为对所有聊天室成员可见,从他们被邀请时开始。"; -"notice_room_history_visible_to_members_for_dm" = "%@ 将未来的消息设为对所有聊天室成员可见。"; -"notice_room_third_party_invite_by_you" = "你邀请 %@ 加入此聊天室"; -"notice_room_history_visible_to_members_by_you_for_dm" = "你将未来的消息设为对所有聊天室成员可见。"; -"notice_room_history_visible_to_members_by_you" = "你将未来的聊天室消息历史设为对所有聊天室成员可见。"; -"notice_room_history_visible_to_anyone_by_you" = "你将未来的聊天室消息历史设为对所有人可见。"; -"notice_redaction_by_you" = "你撤回了一个事件(id:%@)"; -"notice_room_withdraw_by_you" = "你撤回了对 %@ 的邀请"; -"notice_room_third_party_revoked_invite_by_you_for_dm" = "你撤回了对 %@ 的邀请"; -"call_more_actions_dialpad" = "拨号键盘"; -"call_more_actions_transfer" = "转移"; -"call_more_actions_audio_use_device" = "设备扬声器"; -"call_more_actions_audio_use_headset" = "使用耳机音频"; -"call_more_actions_change_audio_device" = "更改音频设备"; -"call_more_actions_unhold" = "继续"; -"call_more_actions_hold" = "挂起"; -"call_holded" = "你挂起了通话"; -"call_remote_holded" = "%@ 挂起了通话"; -"notice_room_created_by_you" = "你创建并配置了此聊天室。"; -"notice_profile_change_redacted_by_you" = "你更新了你的资料 %@"; -"notice_declined_video_call_by_you" = "你拒绝了通话"; -"notice_ended_video_call_by_you" = "你挂断了通话"; -"notice_answered_video_call_by_you" = "你接听了通话"; -"notice_placed_video_call_by_you" = "你发起了视频通话"; -"notice_placed_voice_call_by_you" = "你发起了语音通话"; -"notice_room_name_changed_by_you_for_dm" = "你将名称修改为 %@。"; -"notice_room_name_changed_by_you" = "你将聊天室名称修改为 %@。"; -"notice_topic_changed_by_you" = "你将话题修改为 \"%@\"。"; -"notice_display_name_set_by_you" = "你将你的昵称设置为 %@"; -"notice_display_name_changed_from_by_you" = "你将你的昵称从 %@ 更改为 %@"; -"notice_display_name_removed_by_you" = "你移除了你的昵称"; -"notice_avatar_url_changed_by_you" = "你更换了头像"; -"call_transfer_to_user" = "转接到 %@"; -"call_ringing" = "响铃中…"; -"call_consulting_with_user" = "与 %@ 商量"; -"call_video_with_user" = "与 %@ 进行视频通话"; -"call_voice_with_user" = "与 %@ 进行语音通话"; -"e2e_passphrase_too_short" = "密码口令太短 (长度至少为 %d 个字符)"; -"microphone_access_not_granted_for_voice_message" = "语音消息需要访问麦克风,但 %@ 无权使用它"; -"message_reply_to_sender_sent_a_voice_message" = "发送了一条语音消息。"; -"attachment_large_with_resolution" = "大 %@ (~%@)"; -"attachment_medium_with_resolution" = "中等 %@ (~%@)"; -"attachment_small_with_resolution" = "小 %@ (~%@)"; -"attachment_size_prompt_message" = "你可以在设置中关闭这个。"; -"attachment_size_prompt_title" = "确认要发送的大小"; -"room_displayname_all_other_participants_left" = "%@ (离开)"; -"auth_reset_password_error_not_found" = "未找到"; -"auth_reset_password_error_unauthorized" = "未经授权"; -"auth_invalid_user_name" = "用户名无效"; -"room_displayname_all_other_members_left" = "%@ (离开)"; -"auth_username_in_use" = "用户名被占用"; -"rename" = "重命名"; -"attachment_unsupported_preview_message" = "文件类型不受支持。"; -"attachment_unsupported_preview_title" = "无法预览"; diff --git a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/zh_Hant.lproj/MatrixKit.strings b/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/zh_Hant.lproj/MatrixKit.strings deleted file mode 100644 index a30a6d084..000000000 --- a/Riot/Modules/MatrixKit/Assets/MatrixKitAssets.bundle/zh_Hant.lproj/MatrixKit.strings +++ /dev/null @@ -1,247 +0,0 @@ -"view" = "檢視"; -"back" = "上一步"; -"continue" = "繼續"; -"leave" = "離開"; -"invite" = "邀請"; -"retry" = "重試"; -"cancel" = "取消"; -"save" = "儲存"; -"matrix" = "Matrix"; -// Login Screen -"login_create_account" = "建立帳號:"; -"login_server_url_placeholder" = "URL(如 https://matrix.org)"; -"login_home_server_title" = "主伺服器:"; -"login_home_server_info" = "您的主伺服器會儲存所有的對話紀錄跟帳號資料"; -"login_identity_server_title" = "身份認證伺服器:"; -"login_identity_server_info" = "Matrix 提供身份認證伺服器來追蹤電子郵件信箱與 Matrix ID 的關係。目前只有 https://matrix.org 提供這個服務。"; -"login_user_id_placeholder" = "Matrix ID(如 @bob:matrix.org 或 bob)"; -"login_password_placeholder" = "密碼"; -"login_optional_field" = "選擇性"; -"login_display_name_placeholder" = "顯示名稱(如 Bob Obson)"; -"login_email_placeholder" = "電子郵件地址"; -"login_leave_fallback" = "取消"; -// Encryption information -"room_event_encryption_info_title" = "點對點加密資訊\n\n"; -"room_event_encryption_info_event" = "事件資訊\n"; -"room_event_encryption_info_event_user_id" = "使用者 ID\n"; -"room_event_encryption_info_event_identity_key" = "Curve25519 身份認證金鑰\n"; -"room_event_encryption_info_event_fingerprint_key" = "已聲請之 Ed25519 指紋金鑰\n"; -"room_event_encryption_info_event_algorithm" = "演算法\n"; -"room_event_encryption_info_event_session_id" = "會話 ID\n"; -"room_event_encryption_info_event_decryption_error" = "解密錯誤\n"; -"room_event_encryption_info_event_unencrypted" = "未加密"; -"room_event_encryption_info_event_none" = "無"; -"room_event_encryption_info_device" = "\n發送者的裝置訊息\n"; -"room_event_encryption_info_device_unknown" = "未知的裝置\n"; -"room_event_encryption_info_device_name" = "名稱\n"; -"room_event_encryption_info_device_id" = "裝置 ID\n"; -"room_event_encryption_info_device_verification" = "驗證\n"; -"room_event_encryption_info_device_fingerprint" = "Ed25519 指紋\n"; -"room_event_encryption_info_device_verified" = "已驗證"; -"room_event_encryption_info_device_not_verified" = "未驗證"; -"room_event_encryption_info_device_blocked" = "已列入黑名單"; -"room_event_encryption_info_verify" = "驗證..."; -"room_event_encryption_info_unverify" = "取消驗證"; -"room_event_encryption_info_block" = "黑名單"; -"room_event_encryption_info_unblock" = "解除黑名單"; -"room_event_encryption_verify_title" = "驗證裝置\n\n"; -"room_event_encryption_verify_message" = "若要檢查這個裝置是可被信任的,請透過其他方法聯絡所有者(例如面對面或是在電話中),並詢問在其使用者設定中以下金鑰是否是一致的:\n\n\n\t裝置名稱:%@\n\t裝置 ID:%@\n\t裝置金鑰:%@\n\n若相同,請點選下面的「驗證確認」按鈕。如果不相同,表示有人從中攔截這個裝置,您可能要點選「黑名單」按鈕。\n\n未來驗證手續會更加簡單,若有不便敬請見諒。"; -"room_event_encryption_verify_ok" = "驗證確認"; -// Account -"account_save_changes" = "儲存修改"; -// Groups -"group_invite_section" = "邀請"; -// E2E import -"e2e_import_room_keys" = "匯入聊天室金鑰"; -"e2e_import" = "匯入"; -"e2e_passphrase_enter" = "輸入通關密語"; -// E2E export -"e2e_export_room_keys" = "匯出房間金鑰"; -"e2e_export" = "匯出"; -"e2e_passphrase_empty" = "通關密語不能為空"; -"e2e_passphrase_not_match" = "通關密語必須符合"; -// Others -"user_id_title" = "使用者 ID:"; -"offline" = "離線"; -"unsent" = "取消傳送"; -"error" = "錯誤"; -"not_supported_yet" = "尚未支援"; -"default" = "預設"; -"private" = "私密"; -"public" = "公開"; -"power_level" = "權限等級"; -"network_error_not_reachable" = "請檢查您的網路連線"; -"user_id_placeholder" = "例:@bob:homeserver"; -"ssl_homeserver_url" = "家伺服器 URL:%@"; -// Permissions -"camera_access_not_granted_for_call" = "視訊電話需要使用相機權限,但是 %@ 沒有存取權限"; -"microphone_access_not_granted_for_call" = "電話需要使用麥克風權限,但是 %@ 沒有存取權限"; -"local_contacts_access_not_granted" = "從本機的聯絡資訊探索使用者,需要存取聯絡資訊的權限,但是 %@ 沒有存取權限"; -"local_contacts_access_discovery_warning_title" = "使用者探索"; -"local_contacts_access_discovery_warning" = "%@ 要從您的聯絡資訊上傳電子郵件位址跟電話號碼來探索使用者"; -// Country picker -"country_picker_title" = "選擇國家"; -// Language picker -"language_picker_title" = "選擇語言"; -"language_picker_default_language" = "預設 (%@)"; -"notice_room_invite" = "%@ 邀請了 %@"; -"notice_room_third_party_invite" = "%@ 已邀請 %@ 加入聊天室"; -"notice_room_third_party_registered_invite" = "%@ 同意了 %@ 的邀請"; -"notice_room_join" = "%@ 已進入"; -"notice_room_leave" = "%@ 已離開"; -"notice_room_reject" = "%@ 拒絕了邀請"; -"notice_room_kick" = "%@ 踢了 %@"; -"notice_room_unban" = "%@ 解除了 %@ 的封鎖"; -"notice_room_ban" = "%@ 封鎖了 %@"; -"notice_room_withdraw" = "%@ 撤回了 %@ 的邀請"; -"notice_room_reason" = ",原因:%@"; -"notice_avatar_url_changed" = "%@ 變更了頭像"; -"notice_display_name_set" = "%@ 設定了自己的顯示名稱為 %@"; -"notice_display_name_changed_from" = "%@ 將自己的顯示名稱從 %@ 改為 %@"; -"notice_display_name_removed" = "%@ 移除了自己的顯示名稱"; -"notice_topic_changed" = "%@ 已經變更主題為:%@"; -"notice_room_name_changed" = "%@ 將房間名稱變更為 %@"; -"notice_placed_voice_call" = "%@ 開始了語音通話"; -"notice_placed_video_call" = "%@ 開始了視訊通話"; -"notice_answered_video_call" = "%@ 接聽了通話"; -"notice_ended_video_call" = "%@ 結束了通話"; -"notice_conference_call_request" = "%@ 請求了 VoIP 會議"; -"notice_conference_call_started" = "VoIP 會議已開始"; -"notice_conference_call_finished" = "VoIP 會議已結束"; -// button names -"ok" = "好"; -"send" = "傳送"; -"copy_button_name" = "複製"; -"resend" = "重新傳送"; -"redact" = "撤除"; -"share" = "分享"; -"set_power_level" = "權限等級"; -"delete" = "刪除"; -// actions -"action_logout" = "登出"; -"create_room" = "建立聊天室"; -"login" = "登入"; -"create_account" = "建立帳號"; -"membership_invite" = "邀請"; -"membership_leave" = "離開"; -"membership_ban" = "已被封鎖"; -"num_members_one" = "%@ 位使用者"; -"num_members_other" = "%@ 位使用者"; -"kick" = "踢人"; -"ban" = "封鎖"; -"unban" = "解除封鎖"; -// unrecognized SSL certificate -"ssl_trust" = "信任"; -"ssl_logout_account" = "登出"; -"ssl_remain_offline" = "忽略"; -"ssl_fingerprint_hash" = "指紋 (%@):"; -"ssl_could_not_verify" = "無法驗證遠端伺服器的身份。"; -"ssl_cert_not_trust" = "這可能代表有人惡意攔截您的流量,或是裝置無法信任遠端伺服器所提供的憑證。"; -"ssl_cert_new_account_expl" = "如果伺服器管理者表示這是可預期的狀況,請確定以下指紋與管理者提供的一致。"; -"ssl_unexpected_existing_expl" = "這個憑證有別於原本在您裝置所信任的憑證,這個狀況相當不常見。建議您不要信任新的憑證。"; -"ssl_expected_existing_expl" = "這個憑證從原本信任的憑證換成不信任的憑證,可能因為伺服器更新了它的憑證。請聯絡伺服器管理者確認新的指紋一致。"; -"ssl_only_accept" = "只有在伺服器管理者提供的指紋與以上指紋一致時,您才能信任這個憑證。"; -// Devices -"device_details_title" = "裝置資訊\n"; -"login_error_title" = "登入失敗"; -"login_error_no_login_flow" = "無法從該主伺服器取得驗證訊息"; -"login_error_do_not_support_login_flows" = "目前我們不支援任何該主伺服器定義的登入流程"; -"login_error_registration_is_not_supported" = "目前不支援註冊"; -"login_error_forbidden" = "無效的使用者名稱/密碼"; -"login_error_unknown_token" = "不能識別指定的訪問權杖"; -"login_error_bad_json" = "JSON 格式錯誤"; -"login_error_not_json" = "未包含有效的 JSON"; -"login_error_limit_exceeded" = "已傳送過多的請求"; -"login_error_user_in_use" = "該使用者名稱已被使用"; -"login_error_login_email_not_yet" = "該電子郵件連結向未被點擊"; -"login_use_fallback" = "使用備用頁"; -"login_invalid_param" = "無效的參數"; -"register_error_title" = "註冊失敗"; -"login_tablet_device" = "平板電腦"; -// Action -"no" = "否"; -"yes" = "是"; -"abort" = "終止"; -"login_email_info" = "指定一個電子郵件地址可以讓其他 Matirx 用戶更容易找到您,並讓您可以在未來重置密碼。"; -"login_prompt_email_token" = "請輸入您的電子郵件認證權杖:"; -"login_error_forgot_password_is_not_supported" = "目前不支援忘記密碼"; -"login_mobile_device" = "行動裝置"; -"login_desktop_device" = "桌上型電腦"; -"close" = "關閉"; -"discard" = "放棄"; -"dismiss" = "無視"; -"sign_up" = "註冊"; -"submit" = "送出"; -"submit_code" = "送出碼"; -"set_default_power_level" = "重設權限等級"; -"set_admin" = "設定管理員"; -"set_moderator" = "設定主持人"; -"start_chat" = "開始聊天"; -"start_voice_call" = "開始語音通話"; -"start_video_call" = "開始視訊通話"; -"mention" = "提到"; -"select_account" = "選擇一個帳號"; -"capture_media" = "拍攝照片/影片"; -"invite_user" = "邀請 Matrix 用戶"; -"reset_to_default" = "重置為預設值"; -"attach_media" = "從庫中附加媒體"; -"resend_message" = "重新傳送該訊息"; -"select_all" = "全選"; -"cancel_upload" = "取消上傳"; -"cancel_download" = "取消下載"; -"show_details" = "顯示詳細資料"; -"answer_call" = "接聽來電"; -"reject_call" = "拒絕來電"; -"end_call" = "結束通話"; -"ignore" = "忽略"; -"unignore" = "取消忽略"; -// Events formatter -"notice_avatar_changed_too" = "(頭像也已經改變)"; -"notice_room_name_removed" = "%@ 移除了該聊天室的名字"; -"notice_room_topic_removed" = "%@ 移除了該主題"; -"notice_event_redacted_by" = " 由 %@"; -"notice_event_redacted_reason" = " [理由:%@]"; -"notice_profile_change_redacted" = "%@ 已更新他的個人檔案 %@"; -"notice_room_created" = "%@ 創建了該聊天室"; -"notice_room_join_rule" = "加入規則: %@"; -"notice_room_power_level_intro" = "聊天室成員們的權限级别是:"; -"notice_event_redacted" = "<撤回%@>"; -// room details dialog screen -"room_details_title" = "聊天室詳細資料"; -"notice_encrypted_message" = "已加密的訊息"; -"notice_image_attachment" = "附加圖片"; -"notice_audio_attachment" = "附加音訊"; -"notice_video_attachment" = "附加視訊"; -"notice_location_attachment" = "附加位置資訊"; -"notice_file_attachment" = "附加檔案"; -"notice_invalid_attachment" = "無效的附加資訊"; -"notice_unsupported_attachment" = "未支援的附加資訊:%@"; -"notice_sticker" = "貼圖"; -// room display name -"room_displayname_empty_room" = "空的聊天室"; -"room_displayname_two_members" = "%@ 和 %@"; -"room_displayname_more_than_two_members" = "%@ 和 %u 個其他人"; -// Settings -"settings" = "設定"; -"settings_enable_push_notifications" = "啟用推播通知"; -"device_details_name" = "名稱\n"; -"device_details_identifier" = "裝置代碼\n"; -"device_details_last_seen" = "上次使用\n"; -"device_details_rename_prompt_message" = "裝置名稱:"; -"login_error_resource_limit_exceeded_title" = "超過資源限制"; -"login_error_resource_limit_exceeded_message_default" = "此家伺服器已經超過其中一項資源限制。"; -"login_error_resource_limit_exceeded_message_monthly_active_user" = "此家伺服器已經達到其每月活躍使用者限制。"; -"login_error_resource_limit_exceeded_message_contact" = "\n\n請聯絡您的伺服器管理員以繼續使用其服務。"; -"login_error_resource_limit_exceeded_contact_button" = "聯絡管理員"; -"notice_room_power_level_acting_requirement" = "完成此操作之前使用者必須具有的最小權限級別是:"; -"notice_room_power_level_event_requirement" = "事件相關的最小權限級別是:"; -"notice_room_aliases" = "此聊天室別名是:%@"; -"notice_room_related_groups" = "此聊天室關聯的群組是:%@"; -"notice_encryption_enabled" = "%@ 開啓了端對端加密 (演算法 %@)"; -"notice_feedback" = "回報事件 (id:%@):%@"; -"notice_redaction" = "%@ 取消了一个事件 (id: %@)"; -"notice_error_unsupported_event" = "不支援的事件"; -"notice_error_unexpected_event" = "意外事件"; -"notice_error_unknown_event_type" = "未知的事件類型"; -"notice_room_history_visible_to_anyone" = "%@ 讓任何人都能看到未來的聊天室歷史記錄。"; -"notice_room_history_visible_to_members" = "%@ 讓所有聊天室成員都能看到未來的房間歷史記錄。"; diff --git a/Riot/Modules/MatrixKit/Categories/NSBundle+MatrixKit.h b/Riot/Modules/MatrixKit/Categories/NSBundle+MatrixKit.h index 9bcc5572a..7b3e36ab3 100644 --- a/Riot/Modules/MatrixKit/Categories/NSBundle+MatrixKit.h +++ b/Riot/Modules/MatrixKit/Categories/NSBundle+MatrixKit.h @@ -37,22 +37,6 @@ */ + (NSURL *)mxk_audioURLFromMXKAssetsBundleWithName:(NSString *)name; -/** - Customize the table used to retrieve the localized version of a string during [mxk_localizedStringForKey:] call. - If the key is not defined in this table, the localized string is retrieved from the default table "MatrixKit.strings". - - @param tableName the name of the table containing the key-value pairs. Also, the suffix for the strings file (a file with the .strings extension) to store the localized string. - */ -+ (void)mxk_customizeLocalizedStringTableName:(NSString*)tableName; - -/** - Retrieve localized string from the customized table. If none, MatrixKit Assets bundle is used. - - @param key The string key. - @return The localized string. - */ -+ (NSString *)mxk_localizedStringForKey:(NSString *)key; - /** An AppExtension-compatible wrapper for bundleForClass. */ diff --git a/Riot/Modules/MatrixKit/Categories/NSBundle+MatrixKit.m b/Riot/Modules/MatrixKit/Categories/NSBundle+MatrixKit.m index 70a75a59b..599252032 100644 --- a/Riot/Modules/MatrixKit/Categories/NSBundle+MatrixKit.m +++ b/Riot/Modules/MatrixKit/Categories/NSBundle+MatrixKit.m @@ -20,8 +20,6 @@ @implementation NSBundle (MatrixKit) -static NSString *customLocalizedStringTableName = nil; - + (NSBundle*)mxk_assetsBundle { // Get the bundle within MatrixKit @@ -31,35 +29,6 @@ static NSString *customLocalizedStringTableName = nil; return [NSBundle bundleWithURL:assetsBundleURL]; } -+ (NSBundle*)mxk_languageBundle -{ - NSString *language = [NSBundle mxk_language]; - NSBundle *bundle = [NSBundle mxk_assetsBundle]; - - // If there is a runtime language (different from the legacy language chose by the OS), - // return the sub bundle for this language - if (language) - { - bundle = [NSBundle bundleWithPath:[bundle pathForResource:[NSBundle mxk_language] ofType:@"lproj"]]; - } - - return bundle; -} - -+ (NSBundle*)mxk_fallbackLanguageBundle -{ - NSString *fallbackLanguage = [NSBundle mxk_fallbackLanguage]; - NSBundle *bundle = [NSBundle mxk_assetsBundle]; - - // Return the sub bundle of the fallback language if any - if (fallbackLanguage) - { - bundle = [NSBundle bundleWithPath:[bundle pathForResource:fallbackLanguage ofType:@"lproj"]]; - } - - return bundle; -} - // use a cache to avoid loading images from file system. // It often triggers an UI lag. static MXLRUCache *imagesResourceCache = nil; @@ -92,50 +61,6 @@ static MXLRUCache *imagesResourceCache = nil; return [NSURL fileURLWithPath:[[NSBundle mxk_assetsBundle] pathForResource:name ofType:@"mp3" inDirectory:@"Sounds"]]; } -+ (void)mxk_customizeLocalizedStringTableName:(NSString*)tableName -{ - customLocalizedStringTableName = tableName; -} - -+ (NSString *)mxk_localizedStringForKey:(NSString *)key -{ - NSString *localizedString; - - // Check first customized table - // Use "_", a string that does not worth to be translated, as default value to mark - // a key that does not have a value in the customized table. - if (customLocalizedStringTableName) - { - localizedString = NSLocalizedStringWithDefaultValue(key, customLocalizedStringTableName, [NSBundle mainBundle], @"_", nil); - } - - if (!localizedString || (localizedString.length == 1 && [localizedString isEqualToString:@"_"])) - { - // Check if we need to manage a fallback language - // as we do in NSBundle+MXKLanguage - NSString *language = [NSBundle mxk_language]; - NSString *fallbackLanguage = [NSBundle mxk_fallbackLanguage]; - - BOOL manageFallbackLanguage = fallbackLanguage && ![fallbackLanguage isEqualToString:language]; - - localizedString = NSLocalizedStringWithDefaultValue(key, @"MatrixKit", - [NSBundle mxk_languageBundle], - manageFallbackLanguage ? @"_" : nil, - nil); - - if (manageFallbackLanguage - && (!localizedString || (localizedString.length == 1 && [localizedString isEqualToString:@"_"]))) - { - // The translation is not available, use the fallback language - localizedString = NSLocalizedStringFromTableInBundle(key, @"MatrixKit", - [NSBundle mxk_fallbackLanguageBundle], - nil); - } - } - - return localizedString; -} - + (NSBundle *)mxk_bundleForClass:(Class)aClass { NSBundle *bundle = [NSBundle bundleForClass:aClass]; diff --git a/Riot/Modules/MatrixKit/Controllers/MXKAccountDetailsViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKAccountDetailsViewController.m index 95732b072..c55d87a0a 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKAccountDetailsViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKAccountDetailsViewController.m @@ -115,8 +115,8 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked [userPictureButton.layer setCornerRadius:userPictureButton.frame.size.width / 2]; userPictureButton.clipsToBounds = YES; - [saveUserInfoButton setTitle:[MatrixKitL10n accountSaveChanges] forState:UIControlStateNormal]; - [saveUserInfoButton setTitle:[MatrixKitL10n accountSaveChanges] forState:UIControlStateHighlighted]; + [saveUserInfoButton setTitle:[VectorL10n accountSaveChanges] forState:UIControlStateNormal]; + [saveUserInfoButton setTitle:[VectorL10n accountSaveChanges] forState:UIControlStateHighlighted]; // Force refresh self.mxAccount = _mxAccount; @@ -250,10 +250,10 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked { dispatch_async(dispatch_get_main_queue(), ^{ - UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:[MatrixKitL10n messageUnsavedChanges] preferredStyle:UIAlertControllerStyleAlert]; + UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:[VectorL10n messageUnsavedChanges] preferredStyle:UIAlertControllerStyleAlert]; [self->alertsArray addObject:alert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n discard] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n discard] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -271,7 +271,7 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked }]]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n save] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n save] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -443,7 +443,7 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked NSString *title = [error.userInfo valueForKey:NSLocalizedFailureReasonErrorKey]; if (!title) { - title = [MatrixKitL10n accountErrorDisplayNameChangeFailed]; + title = [VectorL10n accountErrorDisplayNameChangeFailed]; } NSString *msg = [error.userInfo valueForKey:NSLocalizedDescriptionKey]; @@ -451,7 +451,7 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked [self->alertsArray addObject:alert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n abort] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n abort] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -464,7 +464,7 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked }]]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n retry] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n retry] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -552,14 +552,14 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked NSString *title = [error.userInfo valueForKey:NSLocalizedFailureReasonErrorKey]; if (!title) { - title = [MatrixKitL10n accountErrorPictureChangeFailed]; + title = [VectorL10n accountErrorPictureChangeFailed]; } NSString *msg = [error.userInfo valueForKey:NSLocalizedDescriptionKey]; UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert]; [alertsArray addObject:alert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n abort] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n abort] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -573,7 +573,7 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked }]]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n retry] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n retry] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -731,10 +731,10 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked - (void)showValidationEmailDialogWithMessage:(NSString*)message { - UIAlertController *alert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n accountEmailValidationTitle] message:message preferredStyle:UIAlertControllerStyleAlert]; + UIAlertController *alert = [UIAlertController alertControllerWithTitle:[VectorL10n accountEmailValidationTitle] message:message preferredStyle:UIAlertControllerStyleAlert]; [alertsArray addObject:alert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n abort] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n abort] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -744,7 +744,7 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked }]]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n continue] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n continue] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -779,7 +779,7 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked MXError *mxError = [[MXError alloc] initWithNSError:error]; if (mxError && [mxError.errcode isEqualToString:kMXErrCodeStringThreePIDAuthFailed]) { - [self showValidationEmailDialogWithMessage:[MatrixKitL10n accountEmailValidationError]]; + [self showValidationEmailDialogWithMessage:[VectorL10n accountEmailValidationError]]; } else { @@ -841,10 +841,10 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked // Email check if (![MXTools isEmailAddress:emailTextField.text]) { - UIAlertController *alert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n accountErrorEmailWrongTitle] message:[MatrixKitL10n accountErrorEmailWrongDescription] preferredStyle:UIAlertControllerStyleAlert]; + UIAlertController *alert = [UIAlertController alertControllerWithTitle:[VectorL10n accountErrorEmailWrongTitle] message:[VectorL10n accountErrorEmailWrongDescription] preferredStyle:UIAlertControllerStyleAlert]; [alertsArray addObject:alert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -870,7 +870,7 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked if (weakSelf) { typeof(self) self = weakSelf; - [self showValidationEmailDialogWithMessage:[MatrixKitL10n accountEmailValidationMessage]]; + [self showValidationEmailDialogWithMessage:[VectorL10n accountEmailValidationMessage]]; } } failure:^(NSError *error) { @@ -985,7 +985,7 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked { UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, MAXFLOAT)]; textView.font = [UIFont systemFontOfSize:14]; - textView.text = [NSString stringWithFormat:@"%@\n%@\n%@", [MatrixKitL10n settingsConfigHomeServer:_mxAccount.mxCredentials.homeServer], [MatrixKitL10n settingsConfigIdentityServer:_mxAccount.identityServerURL], [MatrixKitL10n settingsConfigUserId:_mxAccount.mxCredentials.userId]]; + textView.text = [NSString stringWithFormat:@"%@\n%@\n%@", [VectorL10n settingsConfigHomeServer:_mxAccount.mxCredentials.homeServer], [VectorL10n settingsConfigIdentityServer:_mxAccount.identityServerURL], [VectorL10n settingsConfigUserId:_mxAccount.mxCredentials.userId]]; CGSize contentSize = [textView sizeThatFits:textView.frame.size]; return contentSize.height + 1; @@ -1030,8 +1030,8 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked submittedEmailCell.mxkTextField.text = currentEmail; submittedEmailCell.mxkTextField.keyboardType = UIKeyboardTypeEmailAddress; submittedEmailCell.mxkButton.enabled = (currentEmail.length != 0); - [submittedEmailCell.mxkButton setTitle:[MatrixKitL10n accountLinkEmail] forState:UIControlStateNormal]; - [submittedEmailCell.mxkButton setTitle:[MatrixKitL10n accountLinkEmail] forState:UIControlStateHighlighted]; + [submittedEmailCell.mxkButton setTitle:[VectorL10n accountLinkEmail] forState:UIControlStateNormal]; + [submittedEmailCell.mxkButton setTitle:[VectorL10n accountLinkEmail] forState:UIControlStateHighlighted]; [submittedEmailCell.mxkButton addTarget:self action:@selector(onButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; emailSubmitButton = submittedEmailCell.mxkButton; @@ -1057,13 +1057,13 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked if (indexPath.row == enableInAppNotifRowIndex) { - notificationsCell.mxkLabel.text = [MatrixKitL10n settingsEnableInappNotifications]; + notificationsCell.mxkLabel.text = [VectorL10n settingsEnableInappNotifications]; notificationsCell.mxkSwitch.on = _mxAccount.enableInAppNotifications; inAppNotificationsSwitch = notificationsCell.mxkSwitch; } else /* enablePushNotifRowIndex */ { - notificationsCell.mxkLabel.text = [MatrixKitL10n settingsEnablePushNotifications]; + notificationsCell.mxkLabel.text = [VectorL10n settingsEnablePushNotifications]; notificationsCell.mxkSwitch.on = _mxAccount.pushNotificationServiceIsActive; notificationsCell.mxkSwitch.enabled = YES; apnsNotificationsSwitch = notificationsCell.mxkSwitch; @@ -1081,7 +1081,7 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked configCell = [[MXKTableViewCellWithTextView alloc] init]; } - configCell.mxkTextView.text = [NSString stringWithFormat:@"%@\n%@\n%@", [MatrixKitL10n settingsConfigHomeServer:_mxAccount.mxCredentials.homeServer], [MatrixKitL10n settingsConfigIdentityServer:_mxAccount.identityServerURL], [MatrixKitL10n settingsConfigUserId:_mxAccount.mxCredentials.userId]]; + configCell.mxkTextView.text = [NSString stringWithFormat:@"%@\n%@\n%@", [VectorL10n settingsConfigHomeServer:_mxAccount.mxCredentials.homeServer], [VectorL10n settingsConfigIdentityServer:_mxAccount.identityServerURL], [VectorL10n settingsConfigUserId:_mxAccount.mxCredentials.userId]]; cell = configCell; } @@ -1092,8 +1092,8 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked { logoutBtnCell = [[MXKTableViewCellWithButton alloc] init]; } - [logoutBtnCell.mxkButton setTitle:[MatrixKitL10n actionLogout] forState:UIControlStateNormal]; - [logoutBtnCell.mxkButton setTitle:[MatrixKitL10n actionLogout] forState:UIControlStateHighlighted]; + [logoutBtnCell.mxkButton setTitle:[VectorL10n actionLogout] forState:UIControlStateNormal]; + [logoutBtnCell.mxkButton setTitle:[VectorL10n actionLogout] forState:UIControlStateHighlighted]; [logoutBtnCell.mxkButton addTarget:self action:@selector(onButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; logoutButton = logoutBtnCell.mxkButton; @@ -1133,15 +1133,15 @@ NSString* const kMXKAccountDetailsLinkedEmailCellId = @"kMXKAccountDetailsLinked if (section == linkedEmailsSection) { - sectionLabel.text = [MatrixKitL10n accountLinkedEmails]; + sectionLabel.text = [VectorL10n accountLinkedEmails]; } else if (section == notificationsSection) { - sectionLabel.text = [MatrixKitL10n settingsTitleNotifications]; + sectionLabel.text = [VectorL10n settingsTitleNotifications]; } else if (section == configurationSection) { - sectionLabel.text = [MatrixKitL10n settingsTitleConfig]; + sectionLabel.text = [VectorL10n settingsTitleConfig]; } return sectionHeader; diff --git a/Riot/Modules/MatrixKit/Controllers/MXKActivityHandlingViewController.h b/Riot/Modules/MatrixKit/Controllers/MXKActivityHandlingViewController.h index 400b9cc3b..468004818 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKActivityHandlingViewController.h +++ b/Riot/Modules/MatrixKit/Controllers/MXKActivityHandlingViewController.h @@ -21,6 +21,9 @@ NS_ASSUME_NONNULL_BEGIN @interface MXKActivityHandlingViewController : UIViewController +/// A subclass can override this method to block `stopActivityIndicator` if there are still activities in progress +- (BOOL)canStopActivityIndicator; + @end NS_ASSUME_NONNULL_END diff --git a/Riot/Modules/MatrixKit/Controllers/MXKActivityHandlingViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKActivityHandlingViewController.m index 97cce741e..8fbdac314 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKActivityHandlingViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKActivityHandlingViewController.m @@ -83,9 +83,15 @@ } } +- (BOOL)canStopActivityIndicator { + return YES; +} + - (void)stopActivityIndicator { - [activityIndicator stopAnimating]; + if ([self canStopActivityIndicator]) { + [activityIndicator stopAnimating]; + } } @end diff --git a/Riot/Modules/MatrixKit/Controllers/MXKAttachmentsViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKAttachmentsViewController.m index 06df81822..721b9e08b 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKAttachmentsViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKAttachmentsViewController.m @@ -1188,7 +1188,7 @@ if ([MXKAppSettings standardAppSettings].messageDetailsAllowSaving) { - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n save] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n save] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1217,7 +1217,7 @@ if ([MXKAppSettings standardAppSettings].messageDetailsAllowCopyingMedia) { - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n copyButtonName] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n copyButtonName] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1246,7 +1246,7 @@ if ([MXKAppSettings standardAppSettings].messageDetailsAllowSharing) { - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n share] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n share] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1289,7 +1289,7 @@ if ([MXMediaManager existingDownloaderWithIdentifier:attachment.downloadId]) { - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancelDownload] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancelDownload] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1308,7 +1308,7 @@ if (currentAlert.actions.count) { - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/MatrixKit/Controllers/MXKAuthenticationViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKAuthenticationViewController.m index f51004ede..a1d570d56 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKAuthenticationViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKAuthenticationViewController.m @@ -90,6 +90,10 @@ */ @property (nonatomic) MXIdentityService *identityService; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; + +@property (nonatomic) BOOL isViewVisible; + @end @implementation MXKAuthenticationViewController @@ -166,14 +170,14 @@ [self updateRESTClient]; // Localize labels - _homeServerLabel.text = [MatrixKitL10n loginHomeServerTitle]; - _homeServerTextField.placeholder = [MatrixKitL10n loginServerUrlPlaceholder]; - _homeServerInfoLabel.text = [MatrixKitL10n loginHomeServerInfo]; - _identityServerLabel.text = [MatrixKitL10n loginIdentityServerTitle]; - _identityServerTextField.placeholder = [MatrixKitL10n loginServerUrlPlaceholder]; - _identityServerInfoLabel.text = [MatrixKitL10n loginIdentityServerInfo]; - [_cancelAuthFallbackButton setTitle:[MatrixKitL10n cancel] forState:UIControlStateNormal]; - [_cancelAuthFallbackButton setTitle:[MatrixKitL10n cancel] forState:UIControlStateHighlighted]; + _homeServerLabel.text = [VectorL10n loginHomeServerTitle]; + _homeServerTextField.placeholder = [VectorL10n loginServerUrlPlaceholder]; + _homeServerInfoLabel.text = [VectorL10n loginHomeServerInfo]; + _identityServerLabel.text = [VectorL10n loginIdentityServerTitle]; + _identityServerTextField.placeholder = [VectorL10n loginServerUrlPlaceholder]; + _identityServerInfoLabel.text = [VectorL10n loginIdentityServerInfo]; + [_cancelAuthFallbackButton setTitle:[VectorL10n cancel] forState:UIControlStateNormal]; + [_cancelAuthFallbackButton setTitle:[VectorL10n cancel] forState:UIControlStateHighlighted]; } - (void)didReceiveMemoryWarning @@ -187,6 +191,9 @@ [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onTextFieldChange:) name:UITextFieldTextDidChangeNotification object:nil]; + + self.isViewVisible = YES; + [self.screenTracker trackScreen]; } - (void)viewWillDisappear:(BOOL)animated @@ -206,6 +213,13 @@ [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil]; } +- (void)viewDidDisappear:(BOOL)animated +{ + [super viewDidDisappear:animated]; + + self.isViewVisible = NO; +} + #pragma mark - Override MXKViewController - (void)onKeyboardShowAnimationComplete @@ -305,25 +319,29 @@ if (authType == MXKAuthenticationTypeLogin) { _subTitleLabel.hidden = YES; - [_submitButton setTitle:[MatrixKitL10n login] forState:UIControlStateNormal]; - [_submitButton setTitle:[MatrixKitL10n login] forState:UIControlStateHighlighted]; - [_authSwitchButton setTitle:[MatrixKitL10n createAccount] forState:UIControlStateNormal]; - [_authSwitchButton setTitle:[MatrixKitL10n createAccount] forState:UIControlStateHighlighted]; + [_submitButton setTitle:[VectorL10n login] forState:UIControlStateNormal]; + [_submitButton setTitle:[VectorL10n login] forState:UIControlStateHighlighted]; + [_authSwitchButton setTitle:[VectorL10n createAccount] forState:UIControlStateNormal]; + [_authSwitchButton setTitle:[VectorL10n createAccount] forState:UIControlStateHighlighted]; // Update supported authentication flow and associated information (defined in authentication session) [self refreshAuthenticationSession]; + + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenLogin]; } else if (authType == MXKAuthenticationTypeRegister) { _subTitleLabel.hidden = NO; - _subTitleLabel.text = [MatrixKitL10n loginCreateAccount]; - [_submitButton setTitle:[MatrixKitL10n signUp] forState:UIControlStateNormal]; - [_submitButton setTitle:[MatrixKitL10n signUp] forState:UIControlStateHighlighted]; - [_authSwitchButton setTitle:[MatrixKitL10n back] forState:UIControlStateNormal]; - [_authSwitchButton setTitle:[MatrixKitL10n back] forState:UIControlStateHighlighted]; + _subTitleLabel.text = [VectorL10n loginCreateAccount]; + [_submitButton setTitle:[VectorL10n signUp] forState:UIControlStateNormal]; + [_submitButton setTitle:[VectorL10n signUp] forState:UIControlStateHighlighted]; + [_authSwitchButton setTitle:[VectorL10n back] forState:UIControlStateNormal]; + [_authSwitchButton setTitle:[VectorL10n back] forState:UIControlStateHighlighted]; // Update supported authentication flow and associated information (defined in authentication session) [self refreshAuthenticationSession]; + + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenRegister]; } else if (authType == MXKAuthenticationTypeForgotPassword) { @@ -331,21 +349,28 @@ if (isPasswordReseted) { - [_submitButton setTitle:[MatrixKitL10n back] forState:UIControlStateNormal]; - [_submitButton setTitle:[MatrixKitL10n back] forState:UIControlStateHighlighted]; + [_submitButton setTitle:[VectorL10n back] forState:UIControlStateNormal]; + [_submitButton setTitle:[VectorL10n back] forState:UIControlStateHighlighted]; } else { - [_submitButton setTitle:[MatrixKitL10n submit] forState:UIControlStateNormal]; - [_submitButton setTitle:[MatrixKitL10n submit] forState:UIControlStateHighlighted]; + [_submitButton setTitle:[VectorL10n submit] forState:UIControlStateNormal]; + [_submitButton setTitle:[VectorL10n submit] forState:UIControlStateHighlighted]; [self refreshForgotPasswordSession]; } - [_authSwitchButton setTitle:[MatrixKitL10n back] forState:UIControlStateNormal]; - [_authSwitchButton setTitle:[MatrixKitL10n back] forState:UIControlStateHighlighted]; + [_authSwitchButton setTitle:[VectorL10n back] forState:UIControlStateNormal]; + [_authSwitchButton setTitle:[VectorL10n back] forState:UIControlStateHighlighted]; + + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenForgotPassword]; } + if (self.isViewVisible) + { + [self.screenTracker trackScreen]; + } + [self checkIdentityServer]; } @@ -754,7 +779,7 @@ } else { - [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]]; + [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]]; _externalRegistrationParameters = nil; @@ -779,23 +804,23 @@ // Notify user that no flow is supported if (_authType == MXKAuthenticationTypeLogin) { - _noFlowLabel.text = [MatrixKitL10n loginErrorDoNotSupportLoginFlows]; + _noFlowLabel.text = [VectorL10n loginErrorDoNotSupportLoginFlows]; } else { - _noFlowLabel.text = [MatrixKitL10n loginErrorRegistrationIsNotSupported]; + _noFlowLabel.text = [VectorL10n loginErrorRegistrationIsNotSupported]; } MXLogDebug(@"[MXKAuthenticationVC] Warning: %@", _noFlowLabel.text); if (authenticationFallback.length) { - [_retryButton setTitle:[MatrixKitL10n loginUseFallback] forState:UIControlStateNormal]; - [_retryButton setTitle:[MatrixKitL10n loginUseFallback] forState:UIControlStateNormal]; + [_retryButton setTitle:[VectorL10n loginUseFallback] forState:UIControlStateNormal]; + [_retryButton setTitle:[VectorL10n loginUseFallback] forState:UIControlStateNormal]; } else { - [_retryButton setTitle:[MatrixKitL10n retry] forState:UIControlStateNormal]; - [_retryButton setTitle:[MatrixKitL10n retry] forState:UIControlStateNormal]; + [_retryButton setTitle:[VectorL10n retry] forState:UIControlStateNormal]; + [_retryButton setTitle:[VectorL10n retry] forState:UIControlStateNormal]; } _noFlowLabel.hidden = NO; @@ -1006,7 +1031,7 @@ // Sanity check if (!credentials.userId || !credentials.accessToken) { - [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]]; + [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]]; } else { @@ -1067,7 +1092,7 @@ if (isUserNameInUse) { MXLogDebug(@"[MXKAuthenticationVC] User name is already use"); - [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n authUsernameInUse]}]]; + [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n authUsernameInUse]}]]; } else { @@ -1114,7 +1139,7 @@ else { MXLogDebug(@"[MXKAuthenticationVC] User name is missing"); - [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n authInvalidUserName]}]]; + [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n authInvalidUserName]}]]; } } else if (_authType == MXKAuthenticationTypeForgotPassword) @@ -1229,15 +1254,15 @@ { if (self.authType == MXKAuthenticationTypeLogin) { - title = [MatrixKitL10n loginErrorTitle]; + title = [VectorL10n loginErrorTitle]; } else if (self.authType == MXKAuthenticationTypeRegister) { - title = [MatrixKitL10n registerErrorTitle]; + title = [VectorL10n registerErrorTitle]; } else { - title = [MatrixKitL10n error]; + title = [VectorL10n error]; } } NSString* message = error.localizedDescription; @@ -1258,31 +1283,31 @@ { if ([errCode isEqualToString:kMXErrCodeStringForbidden]) { - message = [MatrixKitL10n loginErrorForbidden]; + message = [VectorL10n loginErrorForbidden]; } else if ([errCode isEqualToString:kMXErrCodeStringUnknownToken]) { - message = [MatrixKitL10n loginErrorUnknownToken]; + message = [VectorL10n loginErrorUnknownToken]; } else if ([errCode isEqualToString:kMXErrCodeStringBadJSON]) { - message = [MatrixKitL10n loginErrorBadJson]; + message = [VectorL10n loginErrorBadJson]; } else if ([errCode isEqualToString:kMXErrCodeStringNotJSON]) { - message = [MatrixKitL10n loginErrorNotJson]; + message = [VectorL10n loginErrorNotJson]; } else if ([errCode isEqualToString:kMXErrCodeStringLimitExceeded]) { - message = [MatrixKitL10n loginErrorLimitExceeded]; + message = [VectorL10n loginErrorLimitExceeded]; } else if ([errCode isEqualToString:kMXErrCodeStringUserInUse]) { - message = [MatrixKitL10n loginErrorUserInUse]; + message = [VectorL10n loginErrorUserInUse]; } else if ([errCode isEqualToString:kMXErrCodeStringLoginEmailURLNotYet]) { - message = [MatrixKitL10n loginErrorLoginEmailNotYet]; + message = [VectorL10n loginErrorLoginEmailNotYet]; } else if ([errCode isEqualToString:kMXErrCodeStringResourceLimitExceeded]) { @@ -1304,7 +1329,7 @@ alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1347,20 +1372,20 @@ adminContact = [NSURL URLWithString:adminContactString]; } - NSString *title = [MatrixKitL10n loginErrorResourceLimitExceededTitle]; + NSString *title = [VectorL10n loginErrorResourceLimitExceededTitle]; // Build the message content NSMutableString *message = [NSMutableString new]; if ([limitType isEqualToString:kMXErrorResourceLimitExceededLimitTypeMonthlyActiveUserValue]) { - [message appendString:[MatrixKitL10n loginErrorResourceLimitExceededMessageMonthlyActiveUser]]; + [message appendString:[VectorL10n loginErrorResourceLimitExceededMessageMonthlyActiveUser]]; } else { - [message appendString:[MatrixKitL10n loginErrorResourceLimitExceededMessageDefault]]; + [message appendString:[VectorL10n loginErrorResourceLimitExceededMessageDefault]]; } - [message appendString:[MatrixKitL10n loginErrorResourceLimitExceededMessageContact]]; + [message appendString:[VectorL10n loginErrorResourceLimitExceededMessageContact]]; // Build the alert alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; @@ -1368,7 +1393,7 @@ MXWeakify(self); if (adminContact && onAdminContactTapped) { - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n loginErrorResourceLimitExceededContactButton] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n loginErrorResourceLimitExceededContactButton] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1381,7 +1406,7 @@ }]]; } - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1423,9 +1448,9 @@ [alert dismissViewControllerAnimated:NO completion:nil]; } - alert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n loginErrorAlreadyLoggedIn] message:nil preferredStyle:UIAlertControllerStyleAlert]; + alert = [UIAlertController alertControllerWithTitle:[VectorL10n loginErrorAlreadyLoggedIn] message:nil preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1544,9 +1569,9 @@ } #if TARGET_OS_IPHONE - NSString *deviceName = [[UIDevice currentDevice].model isEqualToString:@"iPad"] ? [MatrixKitL10n loginTabletDevice] : [MatrixKitL10n loginMobileDevice]; + NSString *deviceName = [[UIDevice currentDevice].model isEqualToString:@"iPad"] ? [VectorL10n loginTabletDevice] : [VectorL10n loginMobileDevice]; #elif TARGET_OS_OSX - NSString *deviceName = [MatrixKitL10n loginDesktopDevice]; + NSString *deviceName = [VectorL10n loginDesktopDevice]; #endif return deviceName; @@ -1591,7 +1616,7 @@ // Remove the potential auth inputs view self.authInputsView = nil; - _noFlowLabel.text = [MatrixKitL10n loginErrorForgotPasswordIsNotSupported]; + _noFlowLabel.text = [VectorL10n loginErrorForgotPasswordIsNotSupported]; MXLogDebug(@"[MXKAuthenticationVC] Warning: %@", _noFlowLabel.text); @@ -1620,12 +1645,12 @@ __block BOOL isTrusted; dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); - NSString *title = [MatrixKitL10n sslCouldNotVerify]; - NSString *homeserverURLStr = [MatrixKitL10n sslHomeserverUrl:homeserverURL]; - NSString *fingerprint = [MatrixKitL10n sslFingerprintHash:@"SHA256"]; + NSString *title = [VectorL10n sslCouldNotVerify]; + NSString *homeserverURLStr = [VectorL10n sslHomeserverUrl:homeserverURL]; + NSString *fingerprint = [VectorL10n sslFingerprintHash:@"SHA256"]; NSString *certFingerprint = [certificate mx_SHA256AsHexString]; - NSString *msg = [NSString stringWithFormat:@"%@\n\n%@\n\n%@\n\n%@\n\n%@\n\n%@", [MatrixKitL10n sslCertNotTrust], [MatrixKitL10n sslCertNewAccountExpl], homeserverURLStr, fingerprint, certFingerprint, [MatrixKitL10n sslOnlyAccept]]; + NSString *msg = [NSString stringWithFormat:@"%@\n\n%@\n\n%@\n\n%@\n\n%@\n\n%@", [VectorL10n sslCertNotTrust], [VectorL10n sslCertNewAccountExpl], homeserverURLStr, fingerprint, certFingerprint, [VectorL10n sslOnlyAccept]]; if (self->alert) { @@ -1634,7 +1659,7 @@ self->alert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert]; - [self->alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [self->alert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1644,7 +1669,7 @@ }]]; - [self->alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n sslTrust] + [self->alert addAction:[UIAlertAction actionWithTitle:[VectorL10n sslTrust] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1703,7 +1728,7 @@ // Sanity check if (!credentials.userId || !credentials.accessToken) { - [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]]; + [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]]; } else { @@ -1745,7 +1770,7 @@ // Sanity check if (!credentials.userId || !credentials.accessToken) { - [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]]; + [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]]; } else { @@ -1811,7 +1836,7 @@ return; } - [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]]; + [self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]]; } else { @@ -1862,9 +1887,9 @@ [self->alert dismissViewControllerAnimated:NO completion:nil]; } - self->alert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] message:[MatrixKitL10n authResetPasswordErrorUnauthorized] preferredStyle:UIAlertControllerStyleAlert]; + self->alert = [UIAlertController alertControllerWithTitle:[VectorL10n error] message:[VectorL10n authResetPasswordErrorUnauthorized] preferredStyle:UIAlertControllerStyleAlert]; - [self->alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [self->alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1888,7 +1913,7 @@ { userInfo = [NSMutableDictionary dictionary]; } - userInfo[NSLocalizedDescriptionKey] = [MatrixKitL10n authResetPasswordErrorNotFound]; + userInfo[NSLocalizedDescriptionKey] = [VectorL10n authResetPasswordErrorNotFound]; [self onFailureDuringAuthRequest:[NSError errorWithDomain:kMXNSErrorDomain code:0 userInfo:userInfo]]; } @@ -1922,7 +1947,7 @@ NSString *title = [error.userInfo valueForKey:NSLocalizedFailureReasonErrorKey]; if (!title) { - title = [MatrixKitL10n error]; + title = [VectorL10n error]; } NSString *msg = [error.userInfo valueForKey:NSLocalizedDescriptionKey]; @@ -1933,7 +1958,7 @@ alert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n dismiss] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n dismiss] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1979,10 +2004,10 @@ _noFlowLabel.text = [error.userInfo valueForKey:NSLocalizedDescriptionKey]; if (!_noFlowLabel.text.length) { - _noFlowLabel.text = [MatrixKitL10n loginErrorNoLoginFlow]; + _noFlowLabel.text = [VectorL10n loginErrorNoLoginFlow]; } - [_retryButton setTitle:[MatrixKitL10n retry] forState:UIControlStateNormal]; - [_retryButton setTitle:[MatrixKitL10n retry] forState:UIControlStateNormal]; + [_retryButton setTitle:[VectorL10n retry] forState:UIControlStateNormal]; + [_retryButton setTitle:[VectorL10n retry] forState:UIControlStateNormal]; _retryButton.hidden = NO; } } @@ -2000,7 +2025,7 @@ } else if (status == AFNetworkReachabilityStatusNotReachable) { - _noFlowLabel.text = [MatrixKitL10n networkErrorNotReachable]; + _noFlowLabel.text = [VectorL10n networkErrorNotReachable]; } } @@ -2113,7 +2138,7 @@ { if (!cancelFallbackBarButton) { - cancelFallbackBarButton = [[UIBarButtonItem alloc] initWithTitle:[MatrixKitL10n loginLeaveFallback] style:UIBarButtonItemStylePlain target:self action:@selector(hideRegistrationFallbackView)]; + cancelFallbackBarButton = [[UIBarButtonItem alloc] initWithTitle:[VectorL10n loginLeaveFallback] style:UIBarButtonItemStylePlain target:self action:@selector(hideRegistrationFallbackView)]; } // Add cancel button in right bar items diff --git a/Riot/Modules/MatrixKit/Controllers/MXKCallViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKCallViewController.m index 6c138160d..4847ffef7 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKCallViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKCallViewController.m @@ -151,14 +151,14 @@ static const CGFloat kLocalPreviewMargin = 20; [self.speakerButton setImage:[NSBundle mxk_imageFromMXKAssetsBundleWithName:@"icon_speaker_on"] forState:UIControlStateSelected]; // Localize string - [answerCallButton setTitle:[MatrixKitL10n answerCall] forState:UIControlStateNormal]; - [answerCallButton setTitle:[MatrixKitL10n answerCall] forState:UIControlStateHighlighted]; - [rejectCallButton setTitle:[MatrixKitL10n rejectCall] forState:UIControlStateNormal]; - [rejectCallButton setTitle:[MatrixKitL10n rejectCall] forState:UIControlStateHighlighted]; - [endCallButton setTitle:[MatrixKitL10n endCall] forState:UIControlStateNormal]; - [endCallButton setTitle:[MatrixKitL10n endCall] forState:UIControlStateHighlighted]; - [_resumeButton setTitle:[MatrixKitL10n resumeCall] forState:UIControlStateNormal]; - [_resumeButton setTitle:[MatrixKitL10n resumeCall] forState:UIControlStateHighlighted]; + [answerCallButton setTitle:[VectorL10n answerCall] forState:UIControlStateNormal]; + [answerCallButton setTitle:[VectorL10n answerCall] forState:UIControlStateHighlighted]; + [rejectCallButton setTitle:[VectorL10n rejectCall] forState:UIControlStateNormal]; + [rejectCallButton setTitle:[VectorL10n rejectCall] forState:UIControlStateHighlighted]; + [endCallButton setTitle:[VectorL10n endCall] forState:UIControlStateNormal]; + [endCallButton setTitle:[VectorL10n endCall] forState:UIControlStateHighlighted]; + [_resumeButton setTitle:[VectorL10n resumeCall] forState:UIControlStateNormal]; + [_resumeButton setTitle:[VectorL10n resumeCall] forState:UIControlStateHighlighted]; // Refresh call information self.mxCall = mxCall; @@ -364,7 +364,7 @@ static const CGFloat kLocalPreviewMargin = 20; // Check the permission right now NSString *appDisplayName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]; [MXKTools checkAccessForMediaType:AVMediaTypeVideo - manualChangeMessage:[MatrixKitL10n cameraAccessNotGrantedForCall:appDisplayName] + manualChangeMessage:[VectorL10n cameraAccessNotGrantedForCall:appDisplayName] showPopUpInViewController:self completionHandler:^(BOOL granted) { @@ -509,17 +509,17 @@ static const CGFloat kLocalPreviewMargin = 20; if (mxCall.isConsulting) { - callerNameLabel.text = [MatrixKitL10n callConsultingWithUser:peerDisplayName]; + callerNameLabel.text = [VectorL10n callConsultingWithUser:peerDisplayName]; } else { if (mxCall.isVideoCall) { - callerNameLabel.text = [MatrixKitL10n callVideoWithUser:peerDisplayName]; + callerNameLabel.text = [VectorL10n callVideoWithUser:peerDisplayName]; } else { - callerNameLabel.text = [MatrixKitL10n callVoiceWithUser:peerDisplayName]; + callerNameLabel.text = [VectorL10n callVoiceWithUser:peerDisplayName]; } } @@ -641,8 +641,8 @@ static const CGFloat kLocalPreviewMargin = 20; NSString *appDisplayName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]; [MXKTools checkAccessForCall:mxCall.isVideoCall - manualChangeMessageForAudio:[MatrixKitL10n microphoneAccessNotGrantedForCall:appDisplayName] - manualChangeMessageForVideo:[MatrixKitL10n cameraAccessNotGrantedForCall:appDisplayName] + manualChangeMessageForAudio:[VectorL10n microphoneAccessNotGrantedForCall:appDisplayName] + manualChangeMessageForVideo:[VectorL10n cameraAccessNotGrantedForCall:appDisplayName] showPopUpInViewController:self completionHandler:^(BOOL granted) { if (granted) @@ -687,7 +687,7 @@ static const CGFloat kLocalPreviewMargin = 20; if (self.speakerButton == nil) { // audio device action - UIAlertAction *audioDeviceAction = [UIAlertAction actionWithTitle:[MatrixKitL10n callMoreActionsChangeAudioDevice] + UIAlertAction *audioDeviceAction = [UIAlertAction actionWithTitle:[VectorL10n callMoreActionsChangeAudioDevice] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -705,7 +705,7 @@ static const CGFloat kLocalPreviewMargin = 20; // check the call can send DTMF tones if (self.mxCall.supportsDTMF) { - UIAlertAction *dialpadAction = [UIAlertAction actionWithTitle:[MatrixKitL10n callMoreActionsDialpad] + UIAlertAction *dialpadAction = [UIAlertAction actionWithTitle:[VectorL10n callMoreActionsDialpad] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -721,7 +721,7 @@ static const CGFloat kLocalPreviewMargin = 20; // check the call be holded/unholded if (mxCall.supportsHolding) { - NSString *actionLocKey = (mxCall.state == MXCallStateOnHold) ? [MatrixKitL10n callMoreActionsUnhold] : [MatrixKitL10n callMoreActionsHold]; + NSString *actionLocKey = (mxCall.state == MXCallStateOnHold) ? [VectorL10n callMoreActionsUnhold] : [VectorL10n callMoreActionsHold]; UIAlertAction *holdAction = [UIAlertAction actionWithTitle:actionLocKey style:UIAlertActionStyleDefault @@ -739,7 +739,7 @@ static const CGFloat kLocalPreviewMargin = 20; // check the call be transferred if (mxCall.supportsTransferring && self.peer) { - UIAlertAction *transferAction = [UIAlertAction actionWithTitle:[MatrixKitL10n callMoreActionsTransfer] + UIAlertAction *transferAction = [UIAlertAction actionWithTitle:[VectorL10n callMoreActionsTransfer] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -765,7 +765,7 @@ static const CGFloat kLocalPreviewMargin = 20; }]; // add cancel action always - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -833,7 +833,7 @@ static const CGFloat kLocalPreviewMargin = 20; NSString *name = route.name; if (route.routeType == MXiOSAudioOutputRouteTypeLoudSpeakers) { - name = [MatrixKitL10n callMoreActionsAudioUseDevice]; + name = [VectorL10n callMoreActionsAudioUseDevice]; } MXWeakify(self); UIAlertAction *routeAction = [UIAlertAction actionWithTitle:name @@ -863,7 +863,7 @@ static const CGFloat kLocalPreviewMargin = 20; // add cancel action MXWeakify(self); - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -911,7 +911,7 @@ static const CGFloat kLocalPreviewMargin = 20; { case MXCallStateFledgling: self.isRinging = NO; - callStatusLabel.text = [MatrixKitL10n callConnecting]; + callStatusLabel.text = [VectorL10n callConnecting]; break; case MXCallStateWaitLocalMedia: self.isRinging = NO; @@ -934,12 +934,12 @@ static const CGFloat kLocalPreviewMargin = 20; self.isRinging = YES; } - callStatusLabel.text = [MatrixKitL10n callConnecting]; + callStatusLabel.text = [VectorL10n callConnecting]; break; } case MXCallStateInviteSent: { - callStatusLabel.text = [MatrixKitL10n callRinging]; + callStatusLabel.text = [VectorL10n callRinging]; break; } case MXCallStateRinging: @@ -947,11 +947,11 @@ static const CGFloat kLocalPreviewMargin = 20; [self configureSpeakerButton]; if (call.isVideoCall) { - callStatusLabel.text = [MatrixKitL10n incomingVideoCall]; + callStatusLabel.text = [VectorL10n incomingVideoCall]; } else { - callStatusLabel.text = [MatrixKitL10n incomingVoiceCall]; + callStatusLabel.text = [VectorL10n incomingVoiceCall]; } // Update bottom bar endCallButton.hidden = YES; @@ -1008,7 +1008,7 @@ static const CGFloat kLocalPreviewMargin = 20; break; case MXCallStateOnHold: - callStatusLabel.text = [MatrixKitL10n callHolded]; + callStatusLabel.text = [VectorL10n callHolded]; break; case MXCallStateRemotelyOnHold: @@ -1017,20 +1017,20 @@ static const CGFloat kLocalPreviewMargin = 20; speakerButton.enabled = NO; cameraSwitchButton.enabled = NO; self.moreButton.enabled = NO; - callStatusLabel.text = [MatrixKitL10n callRemoteHolded:peerDisplayName]; + callStatusLabel.text = [VectorL10n callRemoteHolded:peerDisplayName]; break; case MXCallStateInviteExpired: // MXCallStateInviteExpired state is sent as an notification // MXCall will move quickly to the MXCallStateEnded state self.isRinging = NO; - callStatusLabel.text = [MatrixKitL10n callInviteExpired]; + callStatusLabel.text = [VectorL10n callInviteExpired]; break; case MXCallStateEnded: { self.isRinging = NO; - callStatusLabel.text = [MatrixKitL10n callEnded]; + callStatusLabel.text = [VectorL10n callEnded]; NSString *soundName = [self soundNameForCallEnding]; if (soundName) @@ -1068,18 +1068,18 @@ static const CGFloat kLocalPreviewMargin = 20; NSString *title = [error.userInfo valueForKey:NSLocalizedFailureReasonErrorKey]; if (!title) { - title = [MatrixKitL10n error]; + title = [VectorL10n error]; } NSString *msg = [error.userInfo valueForKey:NSLocalizedDescriptionKey]; if (!msg) { - msg = [MatrixKitL10n errorCommonMessage]; + msg = [VectorL10n errorCommonMessage]; } MXWeakify(self); errorAlert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert]; - [errorAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [errorAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1102,7 +1102,7 @@ static const CGFloat kLocalPreviewMargin = 20; if (call.isConsulting) { - NSString *title = [MatrixKitL10n callTransferToUser:call.transferee.displayname]; + NSString *title = [VectorL10n callTransferToUser:call.transferee.displayname]; [_transferButton setTitle:title forState:UIControlStateNormal]; _transferButton.hidden = call.state != MXCallStateConnected; } @@ -1132,11 +1132,11 @@ static const CGFloat kLocalPreviewMargin = 20; if (mxCall.isVideoCall) { - callerNameLabel.text = [MatrixKitL10n callVideoWithUser:peerDisplayName]; + callerNameLabel.text = [VectorL10n callVideoWithUser:peerDisplayName]; } else { - callerNameLabel.text = [MatrixKitL10n callVoiceWithUser:peerDisplayName]; + callerNameLabel.text = [VectorL10n callVoiceWithUser:peerDisplayName]; } if (peerAvatarURL) diff --git a/Riot/Modules/MatrixKit/Controllers/MXKContactDetailsViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKContactDetailsViewController.m index 6f181b059..6d5fe4c4a 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKContactDetailsViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKContactDetailsViewController.m @@ -152,8 +152,8 @@ cell.mxkLabel.text = @""; } - [cell.mxkButton setTitle:[MatrixKitL10n startChat] forState:UIControlStateNormal]; - [cell.mxkButton setTitle:[MatrixKitL10n startChat] forState:UIControlStateHighlighted]; + [cell.mxkButton setTitle:[VectorL10n startChat] forState:UIControlStateNormal]; + [cell.mxkButton setTitle:[VectorL10n startChat] forState:UIControlStateHighlighted]; cell.mxkButton.tag = row; [cell.mxkButton addTarget:self action:@selector(startChat:) forControlEvents:UIControlEventTouchUpInside]; diff --git a/Riot/Modules/MatrixKit/Controllers/MXKContactListViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKContactListViewController.m index 6bcb30b42..ccdd5a131 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKContactListViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKContactListViewController.m @@ -117,8 +117,8 @@ } // Localize string - [_contactsControls setTitle:[MatrixKitL10n contactMxUsers] forSegmentAtIndex:0]; - [_contactsControls setTitle:[MatrixKitL10n contactLocalContacts] forSegmentAtIndex:1]; + [_contactsControls setTitle:[VectorL10n contactMxUsers] forSegmentAtIndex:0]; + [_contactsControls setTitle:[VectorL10n contactLocalContacts] forSegmentAtIndex:1]; // Apply search option in navigation bar self.enableBarButtonSearch = _enableBarButtonSearch; diff --git a/Riot/Modules/MatrixKit/Controllers/MXKCountryPickerViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKCountryPickerViewController.m index 80ea288f7..3b5102987 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKCountryPickerViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKCountryPickerViewController.m @@ -109,7 +109,7 @@ NSString* const kMXKCountryPickerViewControllerCountryCellId = @"kMXKCountryPick [[[self class] nib] instantiateWithOwner:self options:nil]; } - self.navigationItem.title = [MatrixKitL10n countryPickerTitle]; + self.navigationItem.title = [VectorL10n countryPickerTitle]; [self setupSearchController]; } diff --git a/Riot/Modules/MatrixKit/Controllers/MXKLanguagePickerViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKLanguagePickerViewController.m index b1c796356..185025bad 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKLanguagePickerViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKLanguagePickerViewController.m @@ -84,7 +84,7 @@ NSString* const kMXKLanguagePickerCellDataKeyLanguage = @"language"; // Populate cellDataArray // Start by the default language chosen by the OS NSString *defaultLanguage = [MXKLanguagePickerViewController defaultLanguage]; - NSString *languageDescription = [MatrixKitL10n languagePickerDefaultLanguage:[MXKLanguagePickerViewController languageDescription:defaultLanguage]]; + NSString *languageDescription = [VectorL10n languagePickerDefaultLanguage:[MXKLanguagePickerViewController languageDescription:defaultLanguage]]; [cellDataArray addObject:@{ kMXKLanguagePickerCellDataKeyText:languageDescription @@ -143,7 +143,7 @@ NSString* const kMXKLanguagePickerCellDataKeyLanguage = @"language"; [self setupSearchController]; - self.navigationItem.title = [MatrixKitL10n languagePickerTitle]; + self.navigationItem.title = [VectorL10n languagePickerTitle]; } diff --git a/Riot/Modules/MatrixKit/Controllers/MXKNotificationSettingsViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKNotificationSettingsViewController.m index 156b0c9c3..1524eb2d7 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKNotificationSettingsViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKNotificationSettingsViewController.m @@ -317,13 +317,13 @@ if (areAllDisabled) { - [masterBtnCell.mxkButton setTitle:[MatrixKitL10n notificationSettingsEnableNotifications] forState:UIControlStateNormal]; - [masterBtnCell.mxkButton setTitle:[MatrixKitL10n notificationSettingsEnableNotifications] forState:UIControlStateHighlighted]; + [masterBtnCell.mxkButton setTitle:[VectorL10n notificationSettingsEnableNotifications] forState:UIControlStateNormal]; + [masterBtnCell.mxkButton setTitle:[VectorL10n notificationSettingsEnableNotifications] forState:UIControlStateHighlighted]; } else { - [masterBtnCell.mxkButton setTitle:[MatrixKitL10n notificationSettingsDisableAll] forState:UIControlStateNormal]; - [masterBtnCell.mxkButton setTitle:[MatrixKitL10n notificationSettingsDisableAll] forState:UIControlStateHighlighted]; + [masterBtnCell.mxkButton setTitle:[VectorL10n notificationSettingsDisableAll] forState:UIControlStateNormal]; + [masterBtnCell.mxkButton setTitle:[VectorL10n notificationSettingsDisableAll] forState:UIControlStateHighlighted]; } [masterBtnCell.mxkButton addTarget:self action:@selector(onButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; @@ -342,12 +342,12 @@ if (areAllDisabled) { - introCell.mxkTextView.text = [MatrixKitL10n notificationSettingsEnableNotificationsWarning]; + introCell.mxkTextView.text = [VectorL10n notificationSettingsEnableNotificationsWarning]; introCell.mxkTextView.backgroundColor = [UIColor redColor]; } else { - introCell.mxkTextView.text = [MatrixKitL10n notificationSettingsGlobalInfo]; + introCell.mxkTextView.text = [VectorL10n notificationSettingsGlobalInfo]; introCell.mxkTextView.backgroundColor = [UIColor clearColor]; } @@ -365,7 +365,7 @@ { introCell = [[MXKTableViewCellWithTextView alloc] init]; } - introCell.mxkTextView.text = [MatrixKitL10n notificationSettingsPerWordInfo]; + introCell.mxkTextView.text = [VectorL10n notificationSettingsPerWordInfo]; introCell.mxkTextView.font = [UIFont systemFontOfSize:14]; cell = introCell; @@ -474,37 +474,37 @@ if (rowIndex == ruleContainsUserNameIndex) { pushRule = [_mxAccount.mxSession.notificationCenter ruleById:kMXNotificationCenterContainUserNameRuleID]; - ruleDescription = [MatrixKitL10n notificationSettingsContainMyUserName]; + ruleDescription = [VectorL10n notificationSettingsContainMyUserName]; } if (rowIndex == ruleContainsDisplayNameIndex) { pushRule = [_mxAccount.mxSession.notificationCenter ruleById:kMXNotificationCenterContainDisplayNameRuleID]; - ruleDescription = [MatrixKitL10n notificationSettingsContainMyDisplayName]; + ruleDescription = [VectorL10n notificationSettingsContainMyDisplayName]; } if (rowIndex == ruleOneToOneRoomIndex) { pushRule = [_mxAccount.mxSession.notificationCenter ruleById:kMXNotificationCenterOneToOneRoomRuleID]; - ruleDescription = [MatrixKitL10n notificationSettingsJustSentToMe]; + ruleDescription = [VectorL10n notificationSettingsJustSentToMe]; } if (rowIndex == ruleInviteForMeIndex) { pushRule = [_mxAccount.mxSession.notificationCenter ruleById:kMXNotificationCenterInviteMeRuleID]; - ruleDescription = [MatrixKitL10n notificationSettingsInviteToANewRoom]; + ruleDescription = [VectorL10n notificationSettingsInviteToANewRoom]; } if (rowIndex == ruleMemberEventIndex) { pushRule = [_mxAccount.mxSession.notificationCenter ruleById:kMXNotificationCenterMemberEventRuleID]; - ruleDescription = [MatrixKitL10n notificationSettingsPeopleJoinLeaveRooms]; + ruleDescription = [VectorL10n notificationSettingsPeopleJoinLeaveRooms]; } if (rowIndex == ruleCallIndex) { pushRule = [_mxAccount.mxSession.notificationCenter ruleById:kMXNotificationCenterCallRuleID]; - ruleDescription = [MatrixKitL10n notificationSettingsReceiveACall]; + ruleDescription = [VectorL10n notificationSettingsReceiveACall]; } if (rowIndex == ruleSuppressBotsNotificationsIndex) { pushRule = [_mxAccount.mxSession.notificationCenter ruleById:kMXNotificationCenterSuppressBotsNotificationsRuleID]; - ruleDescription = [MatrixKitL10n notificationSettingsSuppressFromBots]; + ruleDescription = [VectorL10n notificationSettingsSuppressFromBots]; } if (pushRule) @@ -536,7 +536,7 @@ pushRuleCell.mxSession = _mxAccount.mxSession; pushRuleCell.mxPushRule = pushRule; - pushRuleCell.ruleDescription.text = [MatrixKitL10n notificationSettingsNotifyAllOther]; + pushRuleCell.ruleDescription.text = [VectorL10n notificationSettingsNotifyAllOther]; cell = pushRuleCell; } @@ -558,7 +558,7 @@ { UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, MAXFLOAT)]; textView.font = [UIFont systemFontOfSize:14]; - textView.text = areAllDisabled ? [MatrixKitL10n notificationSettingsEnableNotificationsWarning] : [MatrixKitL10n notificationSettingsGlobalInfo]; + textView.text = areAllDisabled ? [VectorL10n notificationSettingsEnableNotificationsWarning] : [VectorL10n notificationSettingsGlobalInfo]; CGSize contentSize = [textView sizeThatFits:textView.frame.size]; return contentSize.height + 1; } @@ -569,7 +569,7 @@ { UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, MAXFLOAT)]; textView.font = [UIFont systemFontOfSize:14]; - textView.text = [MatrixKitL10n notificationSettingsPerWordInfo]; + textView.text = [VectorL10n notificationSettingsPerWordInfo]; CGSize contentSize = [textView sizeThatFits:textView.frame.size]; return contentSize.height + 1; } @@ -612,23 +612,23 @@ if (section == MXKNOTIFICATIONSETTINGS_SECTION_PER_WORD_INDEX) { - sectionLabel.text = [MatrixKitL10n notificationSettingsPerWordNotifications]; + sectionLabel.text = [VectorL10n notificationSettingsPerWordNotifications]; } else if (section == MXKNOTIFICATIONSETTINGS_SECTION_PER_ROOM_INDEX) { - sectionLabel.text = [MatrixKitL10n notificationSettingsPerRoomNotifications]; + sectionLabel.text = [VectorL10n notificationSettingsPerRoomNotifications]; } else if (section == MXKNOTIFICATIONSETTINGS_SECTION_PER_SENDER_INDEX) { - sectionLabel.text = [MatrixKitL10n notificationSettingsPerSenderNotifications]; + sectionLabel.text = [VectorL10n notificationSettingsPerSenderNotifications]; } else if (section == MXKNOTIFICATIONSETTINGS_SECTION_OTHERS_INDEX) { - sectionLabel.text = [MatrixKitL10n notificationSettingsOtherAlerts]; + sectionLabel.text = [VectorL10n notificationSettingsOtherAlerts]; } else if (section == MXKNOTIFICATIONSETTINGS_SECTION_DEFAULT_INDEX) { - sectionLabel.text = [MatrixKitL10n notificationSettingsByDefault]; + sectionLabel.text = [VectorL10n notificationSettingsByDefault]; } return sectionHeader; diff --git a/Riot/Modules/MatrixKit/Controllers/MXKRoomMemberDetailsViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKRoomMemberDetailsViewController.m index 67b963119..6379eba11 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKRoomMemberDetailsViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKRoomMemberDetailsViewController.m @@ -320,9 +320,9 @@ [currentAlert dismissViewControllerAnimated:NO completion:nil]; } - currentAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n roomMemberIgnorePrompt] message:nil preferredStyle:UIAlertControllerStyleAlert]; + currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomMemberIgnorePrompt] message:nil preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n yes] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n yes] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -357,7 +357,7 @@ }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n no] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n no] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -768,49 +768,49 @@ switch (action) { case MXKRoomMemberDetailsActionInvite: - title = [MatrixKitL10n invite]; + title = [VectorL10n invite]; break; case MXKRoomMemberDetailsActionLeave: - title = [MatrixKitL10n leave]; + title = [VectorL10n leave]; break; case MXKRoomMemberDetailsActionKick: - title = [MatrixKitL10n kick]; + title = [VectorL10n kick]; break; case MXKRoomMemberDetailsActionBan: - title = [MatrixKitL10n ban]; + title = [VectorL10n ban]; break; case MXKRoomMemberDetailsActionUnban: - title = [MatrixKitL10n unban]; + title = [VectorL10n unban]; break; case MXKRoomMemberDetailsActionIgnore: - title = [MatrixKitL10n ignore]; + title = [VectorL10n ignore]; break; case MXKRoomMemberDetailsActionUnignore: - title = [MatrixKitL10n unignore]; + title = [VectorL10n unignore]; break; case MXKRoomMemberDetailsActionSetDefaultPowerLevel: - title = [MatrixKitL10n setDefaultPowerLevel]; + title = [VectorL10n setDefaultPowerLevel]; break; case MXKRoomMemberDetailsActionSetModerator: - title = [MatrixKitL10n setModerator]; + title = [VectorL10n setModerator]; break; case MXKRoomMemberDetailsActionSetAdmin: - title = [MatrixKitL10n setAdmin]; + title = [VectorL10n setAdmin]; break; case MXKRoomMemberDetailsActionSetCustomPowerLevel: - title = [MatrixKitL10n setPowerLevel]; + title = [VectorL10n setPowerLevel]; break; case MXKRoomMemberDetailsActionStartChat: - title = [MatrixKitL10n startChat]; + title = [VectorL10n startChat]; break; case MXKRoomMemberDetailsActionStartVoiceCall: - title = [MatrixKitL10n startVoiceCall]; + title = [VectorL10n startVoiceCall]; break; case MXKRoomMemberDetailsActionStartVideoCall: - title = [MatrixKitL10n startVideoCall]; + title = [VectorL10n startVideoCall]; break; case MXKRoomMemberDetailsActionMention: - title = [MatrixKitL10n mention]; + title = [VectorL10n mention]; break; default: break; @@ -918,9 +918,9 @@ [currentAlert dismissViewControllerAnimated:NO completion:nil]; } - currentAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n roomMemberPowerLevelPrompt] message:nil preferredStyle:UIAlertControllerStyleAlert]; + currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomMemberPowerLevelPrompt] message:nil preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n no] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n no] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -932,7 +932,7 @@ }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n yes] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n yes] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -983,12 +983,12 @@ [currentAlert dismissViewControllerAnimated:NO completion:nil]; } - currentAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n powerLevel] message:nil preferredStyle:UIAlertControllerStyleAlert]; + currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n powerLevel] message:nil preferredStyle:UIAlertControllerStyleAlert]; if (![self.mainSession.myUser.userId isEqualToString:_mxRoomMember.userId]) { - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n resetToDefault] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n resetToDefault] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1013,7 +1013,7 @@ textField.keyboardType = UIKeyboardTypeDecimalPad; }]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/MatrixKit/Controllers/MXKRoomMemberListViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKRoomMemberListViewController.m index f53ccc57a..55a0ed447 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKRoomMemberListViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKRoomMemberListViewController.m @@ -516,10 +516,10 @@ } // Ask for userId to invite - currentAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n userIdTitle] message:nil preferredStyle:UIAlertControllerStyleAlert]; + currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n userIdTitle] message:nil preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -535,10 +535,10 @@ [currentAlert addTextFieldWithConfigurationHandler:^(UITextField *textField) { textField.secureTextEntry = NO; - textField.placeholder = [MatrixKitL10n userIdPlaceholder]; + textField.placeholder = [VectorL10n userIdPlaceholder]; }]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n invite] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n invite] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/MatrixKit/Controllers/MXKRoomSettingsViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKRoomSettingsViewController.m index af99a7e3f..bc827a963 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKRoomSettingsViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKRoomSettingsViewController.m @@ -182,7 +182,7 @@ }]; } - self.title = [MatrixKitL10n roomDetailsTitle]; + self.title = [VectorL10n roomDetailsTitle]; } - (void)refreshRoomSettings diff --git a/Riot/Modules/MatrixKit/Controllers/MXKSearchViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKSearchViewController.m index 8d6a03b18..690ac4996 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKSearchViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKSearchViewController.m @@ -102,7 +102,7 @@ self.searchSearchBarHeightConstraint.constant = 0; [self.view setNeedsUpdateConstraints]; - self.noResultsLabel.text = [MatrixKitL10n searchNoResults]; + self.noResultsLabel.text = [VectorL10n searchNoResults]; self.noResultsLabel.hidden = YES; searchBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(showSearchBar:)]; diff --git a/Riot/Modules/MatrixKit/Controllers/MXKViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKViewController.m index a4e559b4c..07b0a2044 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKViewController.m @@ -492,21 +492,16 @@ const CGFloat MXKViewControllerMaxExternalKeyboardHeight = 80; #pragma mark - Activity indicator -- (void)stopActivityIndicator -{ +- (BOOL)canStopActivityIndicator { // Check whether all conditions are satisfied before stopping loading wheel - BOOL isActivityInProgress = NO; for (MXSession *mxSession in mxSessionArray) { if (mxSession.shouldShowActivityIndicator) { - isActivityInProgress = YES; + return NO; } } - if (!isActivityInProgress) - { - [super stopActivityIndicator]; - } + return [super canStopActivityIndicator]; } #pragma mark - Shake handling diff --git a/Riot/Modules/MatrixKit/Controllers/MXKWebViewViewController.m b/Riot/Modules/MatrixKit/Controllers/MXKWebViewViewController.m index b96fe3bd5..17e09796b 100644 --- a/Riot/Modules/MatrixKit/Controllers/MXKWebViewViewController.m +++ b/Riot/Modules/MatrixKit/Controllers/MXKWebViewViewController.m @@ -154,7 +154,7 @@ NSString *const kMXKWebViewViewControllerJavaScriptEnableLog = [NSLayoutConstraint activateConstraints:@[leftConstraint, rightConstraint, topConstraint, bottomConstraint]]; - backButton = [[UIBarButtonItem alloc] initWithTitle:[MatrixKitL10n back] style:UIBarButtonItemStylePlain target:self action:@selector(goBack)]; + backButton = [[UIBarButtonItem alloc] initWithTitle:[VectorL10n back] style:UIBarButtonItemStylePlain target:self action:@selector(goBack)]; if (_URL.length) { diff --git a/Riot/Modules/MatrixKit/Models/Account/MXKAccount.m b/Riot/Modules/MatrixKit/Models/Account/MXKAccount.m index f3a00e1db..d0047f5f0 100644 --- a/Riot/Modules/MatrixKit/Models/Account/MXKAccount.m +++ b/Riot/Modules/MatrixKit/Models/Account/MXKAccount.m @@ -346,7 +346,7 @@ static NSArray *initialSyncSilentErrorsHTTPStatusCodes; code:0 userInfo:@{ NSLocalizedDescriptionKey: - [MatrixKitL10n accountErrorPushNotAllowed] + [VectorL10n accountErrorPushNotAllowed] }]; if (failure) { @@ -423,7 +423,7 @@ static NSArray *initialSyncSilentErrorsHTTPStatusCodes; code:0 userInfo:@{ NSLocalizedDescriptionKey: - [MatrixKitL10n accountErrorPushNotAllowed] + [VectorL10n accountErrorPushNotAllowed] }]; failure (error); } @@ -558,7 +558,7 @@ static NSArray *initialSyncSilentErrorsHTTPStatusCodes; } else if (failure) { - failure ([NSError errorWithDomain:kMXKAccountErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: [MatrixKitL10n accountErrorMatrixSessionIsNotOpened]}]); + failure ([NSError errorWithDomain:kMXKAccountErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: [VectorL10n accountErrorMatrixSessionIsNotOpened]}]); } } @@ -578,7 +578,7 @@ static NSArray *initialSyncSilentErrorsHTTPStatusCodes; } else if (failure) { - failure ([NSError errorWithDomain:kMXKAccountErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: [MatrixKitL10n accountErrorMatrixSessionIsNotOpened]}]); + failure ([NSError errorWithDomain:kMXKAccountErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: [VectorL10n accountErrorMatrixSessionIsNotOpened]}]); } } @@ -599,7 +599,7 @@ static NSArray *initialSyncSilentErrorsHTTPStatusCodes; } else if (failure) { - failure ([NSError errorWithDomain:kMXKAccountErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: [MatrixKitL10n accountErrorMatrixSessionIsNotOpened]}]); + failure ([NSError errorWithDomain:kMXKAccountErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey: [VectorL10n accountErrorMatrixSessionIsNotOpened]}]); } } diff --git a/Riot/Modules/MatrixKit/Models/Contact/MXKContactManager.m b/Riot/Modules/MatrixKit/Models/Contact/MXKContactManager.m index 3226deef8..d9b8d0a78 100644 --- a/Riot/Modules/MatrixKit/Models/Contact/MXKContactManager.m +++ b/Riot/Modules/MatrixKit/Models/Contact/MXKContactManager.m @@ -1176,9 +1176,9 @@ NSString *const MXKContactManagerDataType = @"org.matrix.kit.MXKContactManagerDa { NSString *appDisplayName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]; - [MXKContactManager requestUserConfirmationForLocalContactsSyncWithTitle:[MatrixKitL10n localContactsAccessDiscoveryWarningTitle] - message:[MatrixKitL10n localContactsAccessDiscoveryWarning:appDisplayName] - manualPermissionChangeMessage:[MatrixKitL10n localContactsAccessNotGranted:appDisplayName] + [MXKContactManager requestUserConfirmationForLocalContactsSyncWithTitle:[VectorL10n localContactsAccessDiscoveryWarningTitle] + message:[VectorL10n localContactsAccessDiscoveryWarning:appDisplayName] + manualPermissionChangeMessage:[VectorL10n localContactsAccessNotGranted:appDisplayName] showPopUpInViewController:viewController completionHandler:handler]; } @@ -1197,7 +1197,7 @@ NSString *const MXKContactManagerDataType = @"org.matrix.kit.MXKContactManagerDa { UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1208,7 +1208,7 @@ NSString *const MXKContactManagerDataType = @"org.matrix.kit.MXKContactManagerDa }]]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/MatrixKit/Models/Group/MXKSessionGroupsDataSource.m b/Riot/Modules/MatrixKit/Models/Group/MXKSessionGroupsDataSource.m index cb9f7a948..d35ce9502 100644 --- a/Riot/Modules/MatrixKit/Models/Group/MXKSessionGroupsDataSource.m +++ b/Riot/Modules/MatrixKit/Models/Group/MXKSessionGroupsDataSource.m @@ -514,11 +514,11 @@ NSString *const kMXKGroupCellIdentifier = @"kMXKGroupCellIdentifier"; if (section == _groupInvitesSection) { - sectionTitle = [MatrixKitL10n groupInviteSection]; + sectionTitle = [VectorL10n groupInviteSection]; } else if (section == _joinedGroupsSection) { - sectionTitle = [MatrixKitL10n groupSection]; + sectionTitle = [VectorL10n groupSection]; } return sectionTitle; diff --git a/Riot/Modules/MatrixKit/Models/PublicRoomList/DirectoryServerList/MXKDirectoryServerCellData.m b/Riot/Modules/MatrixKit/Models/PublicRoomList/DirectoryServerList/MXKDirectoryServerCellData.m index e1f80368b..84fa57b8f 100644 --- a/Riot/Modules/MatrixKit/Models/PublicRoomList/DirectoryServerList/MXKDirectoryServerCellData.m +++ b/Riot/Modules/MatrixKit/Models/PublicRoomList/DirectoryServerList/MXKDirectoryServerCellData.m @@ -43,7 +43,7 @@ else { // Use the Matrix name and logo when looking for Matrix rooms only - desc = [MatrixKitL10n matrix]; + desc = [VectorL10n matrix]; icon = [NSBundle mxk_imageFromMXKAssetsBundleWithName:@"network_matrix"]; } } diff --git a/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellData.m b/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellData.m index 4eefae18d..a9f7dabd8 100644 --- a/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellData.m +++ b/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellData.m @@ -26,6 +26,8 @@ #import "MXKTools.h" +#import "GeneratedInterface-Swift.h" + @implementation MXKRoomBubbleCellData @synthesize senderId, targetId, roomId, senderDisplayName, senderAvatarUrl, senderAvatarPlaceholder, targetDisplayName, targetAvatarUrl, targetAvatarPlaceholder, isEncryptedRoom, isPaginationFirstBubble, shouldHideSenderInformation, date, isIncoming, isAttachmentWithThumbnail, isAttachmentWithIcon, attachment, senderFlair; @synthesize textMessage, attributedTextMessage, attributedTextMessageWithoutPositioningSpace; @@ -35,12 +37,12 @@ #pragma mark - MXKRoomBubbleCellDataStoring -- (instancetype)initWithEvent:(MXEvent *)event andRoomState:(MXRoomState *)roomState andRoomDataSource:(MXKRoomDataSource *)roomDataSource2 +- (instancetype)initWithEvent:(MXEvent *)event andRoomState:(MXRoomState *)roomState andRoomDataSource:(MXKRoomDataSource *)roomDataSource { self = [self init]; if (self) { - roomDataSource = roomDataSource2; + self->roomDataSource = roomDataSource; // Initialize read receipts self.readReceipts = [NSMutableDictionary dictionary]; @@ -55,12 +57,17 @@ senderId = event.sender; targetId = [event.type isEqualToString:kMXEventTypeStringRoomMember] ? event.stateKey : nil; roomId = roomDataSource.roomId; - senderDisplayName = [roomDataSource.eventFormatter senderDisplayNameForEvent:event withRoomState:roomState]; - senderAvatarUrl = [roomDataSource.eventFormatter senderAvatarUrlForEvent:event withRoomState:roomState]; + + // If `roomScreenUseOnlyLatestUserAvatarAndName`is enabled, the avatar and name are + // displayed from the latest room state perspective rather than the historical. + MXRoomState *latestRoomState = roomDataSource.roomState; + MXRoomState *displayRoomState = RiotSettings.shared.roomScreenUseOnlyLatestUserAvatarAndName ? latestRoomState : roomState; + [self setRoomState:displayRoomState]; senderAvatarPlaceholder = nil; - targetDisplayName = [roomDataSource.eventFormatter targetDisplayNameForEvent:event withRoomState:roomState]; - targetAvatarUrl = [roomDataSource.eventFormatter targetAvatarUrlForEvent:event withRoomState:roomState]; targetAvatarPlaceholder = nil; + + // Encryption status should always rely on the `MXRoomState` + // from the event rather than the latest. isEncryptedRoom = roomState.isEncrypted; isIncoming = ([event.sender isEqualToString:roomDataSource.mxSession.myUser.userId] == NO); @@ -103,6 +110,25 @@ bubbleComponents = nil; } +- (void)setRoomState:(MXRoomState *)roomState; +{ + MXEvent* firstEvent = self.events.firstObject; + + if (firstEvent == nil || roomState == nil) + { + return; + } + + senderDisplayName = [roomDataSource.eventFormatter senderDisplayNameForEvent:firstEvent + withRoomState:roomState]; + senderAvatarUrl = [roomDataSource.eventFormatter senderAvatarUrlForEvent:firstEvent + withRoomState:roomState]; + targetDisplayName = [roomDataSource.eventFormatter targetDisplayNameForEvent:firstEvent + withRoomState:roomState]; + targetAvatarUrl = [roomDataSource.eventFormatter targetAvatarUrlForEvent:firstEvent + withRoomState:roomState]; +} + - (NSUInteger)updateEvent:(NSString *)eventId withEvent:(MXEvent *)event { NSUInteger count = 0; diff --git a/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellDataStoring.h b/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellDataStoring.h index 5ec4b9cb7..d37587f71 100644 --- a/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellDataStoring.h +++ b/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellDataStoring.h @@ -231,6 +231,15 @@ */ - (instancetype)initWithEvent:(MXEvent*)event andRoomState:(MXRoomState*)roomState andRoomDataSource:(MXKRoomDataSource*)roomDataSource; +/** + Sets the `MXRoomState` for a buble cell. This allows to adapt the display + of a cell with a different room state than its historical. This won't update critical + flag/status, such as `isEncryptedRoom`. + + @param roomState the `MXRoomState` to use for this cell. + */ +- (void)setRoomState:(MXRoomState *)roomState; + /** Update the event because its sent state changed or it is has been redacted. diff --git a/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellDataWithAppendingMode.m b/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellDataWithAppendingMode.m index 6790bddf7..70dda19a3 100644 --- a/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellDataWithAppendingMode.m +++ b/Riot/Modules/MatrixKit/Models/Room/MXKRoomBubbleCellDataWithAppendingMode.m @@ -16,15 +16,17 @@ #import "MXKRoomBubbleCellDataWithAppendingMode.h" +#import "GeneratedInterface-Swift.h" + static NSAttributedString *messageSeparator = nil; @implementation MXKRoomBubbleCellDataWithAppendingMode #pragma mark - MXKRoomBubbleCellDataStoring -- (instancetype)initWithEvent:(MXEvent *)event andRoomState:(MXRoomState *)roomState andRoomDataSource:(MXKRoomDataSource *)roomDataSource2 +- (instancetype)initWithEvent:(MXEvent *)event andRoomState:(MXRoomState *)roomState andRoomDataSource:(MXKRoomDataSource *)roomDataSource { - self = [super initWithEvent:event andRoomState:roomState andRoomDataSource:roomDataSource2]; + self = [super initWithEvent:event andRoomState:roomState andRoomDataSource:roomDataSource]; if (self) { // Set default settings @@ -46,8 +48,12 @@ static NSAttributedString *messageSeparator = nil; } // Check sender information - NSString *eventSenderName = [roomDataSource.eventFormatter senderDisplayNameForEvent:event withRoomState:roomState]; - NSString *eventSenderAvatar = [roomDataSource.eventFormatter senderAvatarUrlForEvent:event withRoomState:roomState]; + // If `roomScreenUseOnlyLatestUserAvatarAndName`is enabled, the avatar and name are + // displayed from the latest room state perspective rather than the historical. + MXRoomState *latestRoomState = roomDataSource.roomState; + MXRoomState *displayRoomState = RiotSettings.shared.roomScreenUseOnlyLatestUserAvatarAndName ? latestRoomState : roomState; + NSString *eventSenderName = [roomDataSource.eventFormatter senderDisplayNameForEvent:event withRoomState:displayRoomState]; + NSString *eventSenderAvatar = [roomDataSource.eventFormatter senderAvatarUrlForEvent:event withRoomState:displayRoomState]; if ((self.senderDisplayName || eventSenderName) && ([self.senderDisplayName isEqualToString:eventSenderName] == NO)) { diff --git a/Riot/Modules/MatrixKit/Models/Room/MXKRoomDataSource.h b/Riot/Modules/MatrixKit/Models/Room/MXKRoomDataSource.h index 70bfe77d2..bc0f4e6bb 100644 --- a/Riot/Modules/MatrixKit/Models/Room/MXKRoomDataSource.h +++ b/Riot/Modules/MatrixKit/Models/Room/MXKRoomDataSource.h @@ -452,16 +452,16 @@ extern NSString *const kMXKRoomDataSourceTimelineErrorErrorKey; While sending, a fake event will be echoed in the messages list. Once complete, this local echo will be replaced by the event saved by the homeserver. - @param eventIdToReply the id of event to reply. + @param eventToReply the event to reply. @param text the text to send. @param success A block object called when the operation succeeds. It returns the event id of the event generated on the homeserver @param failure A block object called when the operation fails. */ -- (void)sendReplyToEventWithId:(NSString*)eventIdToReply - withTextMessage:(NSString *)text - success:(void (^)(NSString *))success - failure:(void (^)(NSError *))failure; +- (void)sendReplyToEvent:(MXEvent*)eventToReply + withTextMessage:(NSString *)text + success:(void (^)(NSString *))success + failure:(void (^)(NSError *))failure; /** Indicates if replying to the provided event is supported. @@ -795,16 +795,16 @@ extern NSString *const kMXKRoomDataSourceTimelineErrorErrorKey; /** Replace a text in an event. - @param eventId The eventId of event to replace. + @param event The event to replace. @param text The new message text. @param success A block object called when the operation succeeds. It returns the event id of the event generated on the homeserver. @param failure A block object called when the operation fails. */ -- (void)replaceTextMessageForEventWithId:(NSString *)eventId - withTextMessage:(NSString *)text - success:(void (^)(NSString *eventId))success - failure:(void (^)(NSError *error))failure; +- (void)replaceTextMessageForEvent:(MXEvent *)event + withTextMessage:(NSString *)text + success:(void (^)(NSString *eventId))success + failure:(void (^)(NSError *error))failure; /** diff --git a/Riot/Modules/MatrixKit/Models/Room/MXKRoomDataSource.m b/Riot/Modules/MatrixKit/Models/Room/MXKRoomDataSource.m index 146fa084d..1a2466a51 100644 --- a/Riot/Modules/MatrixKit/Models/Room/MXKRoomDataSource.m +++ b/Riot/Modules/MatrixKit/Models/Room/MXKRoomDataSource.m @@ -34,6 +34,8 @@ #import "MXKSendReplyEventStringLocalizer.h" #import "MXKSlashCommands.h" +#import "GeneratedInterface-Swift.h" + const BOOL USE_THREAD_TIMELINE = YES; #pragma mark - Constant definitions @@ -1009,6 +1011,11 @@ typedef NS_ENUM (NSUInteger, MXKRoomDataSourceError) { liveEventsListener = [_timeline listenToEventsOfTypes:liveEventTypesFilterForMessages onEvent:^(MXEvent *event, MXTimelineDirection direction, MXRoomState *roomState) { MXStrongifyAndReturnIfNil(self); + + if (event.eventType == MXEventTypeRoomMember && event.isUserProfileChange) + { + [self refreshProfilesIfNeeded]; + } if (MXTimelineDirectionForwards == direction) { @@ -1870,13 +1877,11 @@ typedef NS_ENUM (NSUInteger, MXKRoomDataSourceError) { } } -- (void)sendReplyToEventWithId:(NSString*)eventIdToReply - withTextMessage:(NSString *)text - success:(void (^)(NSString *))success - failure:(void (^)(NSError *))failure +- (void)sendReplyToEvent:(MXEvent*)eventToReply + withTextMessage:(NSString *)text + success:(void (^)(NSString *))success + failure:(void (^)(NSError *))failure { - MXEvent *eventToReply = [self eventWithEventId:eventIdToReply]; - __block MXEvent *localEchoEvent = nil; NSString *sanitizedText = [self sanitizedMessageText:text]; @@ -4284,13 +4289,11 @@ typedef NS_ENUM (NSUInteger, MXKRoomDataSourceError) { return hasChanged; } -- (void)replaceTextMessageForEventWithId:(NSString*)eventId - withTextMessage:(NSString *)text - success:(void (^)(NSString *))success - failure:(void (^)(NSError *))failure +- (void)replaceTextMessageForEvent:(MXEvent*)event + withTextMessage:(NSString *)text + success:(void (^)(NSString *))success + failure:(void (^)(NSError *))failure { - MXEvent *event = [self eventWithEventId:eventId]; - NSString *sanitizedText = [self sanitizedMessageText:text]; NSString *formattedText = [self htmlMessageFromSanitizedText:sanitizedText]; @@ -4325,4 +4328,23 @@ typedef NS_ENUM (NSUInteger, MXKRoomDataSourceError) { self.secondaryRoomId = [self.mxSession virtualRoomOf:self.roomId]; } +#pragma mark - Use Only Latest Profiles + +/** + Refreshes the avatars and display names if needed. This has no effect + if `roomScreenUseOnlyLatestUserAvatarAndName` is disabled. + */ +- (void)refreshProfilesIfNeeded +{ + if (RiotSettings.shared.roomScreenUseOnlyLatestUserAvatarAndName) + { + @synchronized (bubbles) { + for (id bubble in bubbles) + { + [bubble setRoomState:self.roomState]; + } + } + } +} + @end diff --git a/Riot/Modules/MatrixKit/Models/Room/MXKSendReplyEventStringLocalizer.m b/Riot/Modules/MatrixKit/Models/Room/MXKSendReplyEventStringLocalizer.m index b592db0d6..206d8d548 100644 --- a/Riot/Modules/MatrixKit/Models/Room/MXKSendReplyEventStringLocalizer.m +++ b/Riot/Modules/MatrixKit/Models/Room/MXKSendReplyEventStringLocalizer.m @@ -22,37 +22,37 @@ - (NSString *)senderSentAnImage { - return [MatrixKitL10n messageReplyToSenderSentAnImage]; + return [VectorL10n messageReplyToSenderSentAnImage]; } - (NSString *)senderSentAVideo { - return [MatrixKitL10n messageReplyToSenderSentAVideo]; + return [VectorL10n messageReplyToSenderSentAVideo]; } - (NSString *)senderSentAnAudioFile { - return [MatrixKitL10n messageReplyToSenderSentAnAudioFile]; + return [VectorL10n messageReplyToSenderSentAnAudioFile]; } - (NSString *)senderSentAVoiceMessage { - return [MatrixKitL10n messageReplyToSenderSentAVoiceMessage]; + return [VectorL10n messageReplyToSenderSentAVoiceMessage]; } - (NSString *)senderSentAFile { - return [MatrixKitL10n messageReplyToSenderSentAFile]; + return [VectorL10n messageReplyToSenderSentAFile]; } - (NSString *)senderSentTheirLocation { - return [MatrixKitL10n messageReplyToSenderSentTheirLocation]; + return [VectorL10n messageReplyToSenderSentTheirLocation]; } - (NSString *)messageToReplyToPrefix { - return [MatrixKitL10n messageReplyToMessageToReplyToPrefix]; + return [VectorL10n messageReplyToMessageToReplyToPrefix]; } @end diff --git a/Riot/Modules/MatrixKit/Utils/ErrorPresentation/MXKErrorAlertPresentation.m b/Riot/Modules/MatrixKit/Utils/ErrorPresentation/MXKErrorAlertPresentation.m index c8ff3ad96..e30c26adc 100644 --- a/Riot/Modules/MatrixKit/Utils/ErrorPresentation/MXKErrorAlertPresentation.m +++ b/Riot/Modules/MatrixKit/Utils/ErrorPresentation/MXKErrorAlertPresentation.m @@ -53,7 +53,7 @@ UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { if (handler) diff --git a/Riot/Modules/MatrixKit/Utils/ErrorPresentation/MXKErrorPresentableBuilder.m b/Riot/Modules/MatrixKit/Utils/ErrorPresentation/MXKErrorPresentableBuilder.m index 10c1aca39..cd8a978b4 100644 --- a/Riot/Modules/MatrixKit/Utils/ErrorPresentation/MXKErrorPresentableBuilder.m +++ b/Riot/Modules/MatrixKit/Utils/ErrorPresentation/MXKErrorPresentableBuilder.m @@ -36,12 +36,12 @@ if (!title) { - title = [MatrixKitL10n error]; + title = [VectorL10n error]; } if (!message) { - message = [MatrixKitL10n errorCommonMessage]; + message = [VectorL10n errorCommonMessage]; } return [[MXKErrorViewModel alloc] initWithTitle:title message:message]; @@ -49,8 +49,8 @@ - (id )commonErrorPresentable { - return [[MXKErrorViewModel alloc] initWithTitle:[MatrixKitL10n error] - message:[MatrixKitL10n errorCommonMessage]]; + return [[MXKErrorViewModel alloc] initWithTitle:[VectorL10n error] + message:[VectorL10n errorCommonMessage]]; } @end diff --git a/Riot/Modules/MatrixKit/Utils/EventFormatter/MXKEventFormatter.m b/Riot/Modules/MatrixKit/Utils/EventFormatter/MXKEventFormatter.m index adb2b45af..3ebb69a4b 100644 --- a/Riot/Modules/MatrixKit/Utils/EventFormatter/MXKEventFormatter.m +++ b/Riot/Modules/MatrixKit/Utils/EventFormatter/MXKEventFormatter.m @@ -345,27 +345,27 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if ([redactorId isEqualToString:mxSession.myUserId]) { - redactedBy = [NSString stringWithFormat:@"%@%@", [MatrixKitL10n noticeEventRedactedByYou], [MatrixKitL10n noticeEventRedactedReason:redactedReason]]; + redactedBy = [NSString stringWithFormat:@"%@%@", [VectorL10n noticeEventRedactedByYou], [VectorL10n noticeEventRedactedReason:redactedReason]]; } else if (redactedBy.length) { - redactedBy = [NSString stringWithFormat:@"%@%@", [MatrixKitL10n noticeEventRedactedBy:redactedBy], [MatrixKitL10n noticeEventRedactedReason:redactedReason]]; + redactedBy = [NSString stringWithFormat:@"%@%@", [VectorL10n noticeEventRedactedBy:redactedBy], [VectorL10n noticeEventRedactedReason:redactedReason]]; } else { - redactedBy = [MatrixKitL10n noticeEventRedactedReason:redactedReason]; + redactedBy = [VectorL10n noticeEventRedactedReason:redactedReason]; } } else if ([redactorId isEqualToString:mxSession.myUserId]) { - redactedBy = [MatrixKitL10n noticeEventRedactedByYou]; + redactedBy = [VectorL10n noticeEventRedactedByYou]; } else if (redactedBy.length) { - redactedBy = [MatrixKitL10n noticeEventRedactedBy:redactedBy]; + redactedBy = [VectorL10n noticeEventRedactedBy:redactedBy]; } - redactedInfo = [MatrixKitL10n noticeEventRedacted:redactedBy]; + redactedInfo = [VectorL10n noticeEventRedacted:redactedBy]; } } @@ -401,22 +401,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomNameChangedByYouForDm:roomName]; + displayText = [VectorL10n noticeRoomNameChangedByYouForDm:roomName]; } else { - displayText = [MatrixKitL10n noticeRoomNameChangedByYou:roomName]; + displayText = [VectorL10n noticeRoomNameChangedByYou:roomName]; } } else { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomNameChangedForDm:senderDisplayName :roomName]; + displayText = [VectorL10n noticeRoomNameChangedForDm:senderDisplayName :roomName]; } else { - displayText = [MatrixKitL10n noticeRoomNameChanged:senderDisplayName :roomName]; + displayText = [VectorL10n noticeRoomNameChanged:senderDisplayName :roomName]; } } } @@ -426,22 +426,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomNameRemovedByYouForDm]; + displayText = [VectorL10n noticeRoomNameRemovedByYouForDm]; } else { - displayText = [MatrixKitL10n noticeRoomNameRemovedByYou]; + displayText = [VectorL10n noticeRoomNameRemovedByYou]; } } else { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomNameRemovedForDm:senderDisplayName]; + displayText = [VectorL10n noticeRoomNameRemovedForDm:senderDisplayName]; } else { - displayText = [MatrixKitL10n noticeRoomNameRemoved:senderDisplayName]; + displayText = [VectorL10n noticeRoomNameRemoved:senderDisplayName]; } } } @@ -466,22 +466,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeTopicChangedByYou:roomTopic]; + displayText = [VectorL10n noticeTopicChangedByYou:roomTopic]; } else { - displayText = [MatrixKitL10n noticeTopicChanged:senderDisplayName :roomTopic]; + displayText = [VectorL10n noticeTopicChanged:senderDisplayName :roomTopic]; } } else { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeRoomTopicRemovedByYou]; + displayText = [VectorL10n noticeRoomTopicRemovedByYou]; } else { - displayText = [MatrixKitL10n noticeRoomTopicRemoved:senderDisplayName]; + displayText = [VectorL10n noticeRoomTopicRemoved:senderDisplayName]; } } @@ -504,11 +504,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; } if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeProfileChangeRedactedByYou:redactedInfo]; + displayText = [VectorL10n noticeProfileChangeRedactedByYou:redactedInfo]; } else { - displayText = [MatrixKitL10n noticeProfileChangeRedacted:senderDisplayName :redactedInfo]; + displayText = [VectorL10n noticeProfileChangeRedacted:senderDisplayName :redactedInfo]; } } else @@ -533,33 +533,33 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeDisplayNameSetByYou:displayname]; + displayText = [VectorL10n noticeDisplayNameSetByYou:displayname]; } else { - displayText = [MatrixKitL10n noticeDisplayNameSet:event.sender :displayname]; + displayText = [VectorL10n noticeDisplayNameSet:event.sender :displayname]; } } else if (!displayname) { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeDisplayNameRemovedByYou]; + displayText = [VectorL10n noticeDisplayNameRemovedByYou]; } else { - displayText = [MatrixKitL10n noticeDisplayNameRemoved:event.sender]; + displayText = [VectorL10n noticeDisplayNameRemoved:event.sender]; } } else { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeDisplayNameChangedFromByYou:prevDisplayname :displayname]; + displayText = [VectorL10n noticeDisplayNameChangedFromByYou:prevDisplayname :displayname]; } else { - displayText = [MatrixKitL10n noticeDisplayNameChangedFrom:event.sender :prevDisplayname :displayname]; + displayText = [VectorL10n noticeDisplayNameChangedFrom:event.sender :prevDisplayname :displayname]; } } } @@ -582,17 +582,17 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (displayText) { - displayText = [NSString stringWithFormat:@"%@ %@", displayText, [MatrixKitL10n noticeAvatarChangedToo]]; + displayText = [NSString stringWithFormat:@"%@ %@", displayText, [VectorL10n noticeAvatarChangedToo]]; } else { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeAvatarUrlChangedByYou]; + displayText = [VectorL10n noticeAvatarUrlChangedByYou]; } else { - displayText = [MatrixKitL10n noticeAvatarUrlChanged:senderDisplayName]; + displayText = [VectorL10n noticeAvatarUrlChanged:senderDisplayName]; } } } @@ -620,11 +620,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if ([event.stateKey isEqualToString:mxSession.myUserId]) { - displayText = [MatrixKitL10n noticeRoomThirdPartyRegisteredInviteByYou:event.content[@"third_party_invite"][@"display_name"]]; + displayText = [VectorL10n noticeRoomThirdPartyRegisteredInviteByYou:event.content[@"third_party_invite"][@"display_name"]]; } else { - displayText = [MatrixKitL10n noticeRoomThirdPartyRegisteredInvite:targetDisplayName :event.content[@"third_party_invite"][@"display_name"]]; + displayText = [VectorL10n noticeRoomThirdPartyRegisteredInvite:targetDisplayName :event.content[@"third_party_invite"][@"display_name"]]; } } else @@ -633,11 +633,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeConferenceCallRequestByYou]; + displayText = [VectorL10n noticeConferenceCallRequestByYou]; } else { - displayText = [MatrixKitL10n noticeConferenceCallRequest:senderDisplayName]; + displayText = [VectorL10n noticeConferenceCallRequest:senderDisplayName]; } } else @@ -645,11 +645,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; // The targeted member display name (if any) is available in content if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeRoomInviteByYou:targetDisplayName]; + displayText = [VectorL10n noticeRoomInviteByYou:targetDisplayName]; } else if ([targetDisplayName isEqualToString:mxSession.myUserId]) { - displayText = [MatrixKitL10n noticeRoomInviteYou:senderDisplayName]; + displayText = [VectorL10n noticeRoomInviteYou:senderDisplayName]; } else { @@ -658,7 +658,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; targetDisplayName = contentDisplayname; } - displayText = [MatrixKitL10n noticeRoomInvite:senderDisplayName :targetDisplayName]; + displayText = [VectorL10n noticeRoomInvite:senderDisplayName :targetDisplayName]; } } } @@ -667,14 +667,14 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if ([MXCallManager isConferenceUser:event.stateKey]) { - displayText = [MatrixKitL10n noticeConferenceCallStarted]; + displayText = [VectorL10n noticeConferenceCallStarted]; } else { // The targeted member display name (if any) is available in content if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeRoomJoinByYou]; + displayText = [VectorL10n noticeRoomJoinByYou]; } else { @@ -683,7 +683,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; targetDisplayName = contentDisplayname; } - displayText = [MatrixKitL10n noticeRoomJoin:targetDisplayName]; + displayText = [VectorL10n noticeRoomJoin:targetDisplayName]; } } } @@ -705,7 +705,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if ([MXCallManager isConferenceUser:event.stateKey]) { - displayText = [MatrixKitL10n noticeConferenceCallFinished]; + displayText = [VectorL10n noticeConferenceCallFinished]; } else { @@ -713,22 +713,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeRoomRejectByYou]; + displayText = [VectorL10n noticeRoomRejectByYou]; } else { - displayText = [MatrixKitL10n noticeRoomReject:targetDisplayName]; + displayText = [VectorL10n noticeRoomReject:targetDisplayName]; } } else { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeRoomLeaveByYou]; + displayText = [VectorL10n noticeRoomLeaveByYou]; } else { - displayText = [MatrixKitL10n noticeRoomLeave:targetDisplayName]; + displayText = [VectorL10n noticeRoomLeave:targetDisplayName]; } } } @@ -739,15 +739,15 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeRoomWithdrawByYou:targetDisplayName]; + displayText = [VectorL10n noticeRoomWithdrawByYou:targetDisplayName]; } else { - displayText = [MatrixKitL10n noticeRoomWithdraw:senderDisplayName :targetDisplayName]; + displayText = [VectorL10n noticeRoomWithdraw:senderDisplayName :targetDisplayName]; } if (event.content[@"reason"]) { - displayText = [displayText stringByAppendingString:[MatrixKitL10n noticeRoomReason:event.content[@"reason"]]]; + displayText = [displayText stringByAppendingString:[VectorL10n noticeRoomReason:event.content[@"reason"]]]; } } @@ -755,28 +755,28 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeRoomKickByYou:targetDisplayName]; + displayText = [VectorL10n noticeRoomKickByYou:targetDisplayName]; } else { - displayText = [MatrixKitL10n noticeRoomKick:senderDisplayName :targetDisplayName]; + displayText = [VectorL10n noticeRoomKick:senderDisplayName :targetDisplayName]; } // add reason if exists if (event.content[@"reason"]) { - displayText = [displayText stringByAppendingString:[MatrixKitL10n noticeRoomReason:event.content[@"reason"]]]; + displayText = [displayText stringByAppendingString:[VectorL10n noticeRoomReason:event.content[@"reason"]]]; } } else if ([prevMembership isEqualToString:@"ban"]) { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeRoomUnbanByYou:targetDisplayName]; + displayText = [VectorL10n noticeRoomUnbanByYou:targetDisplayName]; } else { - displayText = [MatrixKitL10n noticeRoomUnban:senderDisplayName :targetDisplayName]; + displayText = [VectorL10n noticeRoomUnban:senderDisplayName :targetDisplayName]; } } } @@ -791,15 +791,15 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeRoomBanByYou:targetDisplayName]; + displayText = [VectorL10n noticeRoomBanByYou:targetDisplayName]; } else { - displayText = [MatrixKitL10n noticeRoomBan:senderDisplayName :targetDisplayName]; + displayText = [VectorL10n noticeRoomBan:senderDisplayName :targetDisplayName]; } if (event.content[@"reason"]) { - displayText = [displayText stringByAppendingString:[MatrixKitL10n noticeRoomReason:event.content[@"reason"]]]; + displayText = [displayText stringByAppendingString:[VectorL10n noticeRoomReason:event.content[@"reason"]]]; } } @@ -827,22 +827,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomCreatedByYouForDm]; + displayText = [VectorL10n noticeRoomCreatedByYouForDm]; } else { - displayText = [MatrixKitL10n noticeRoomCreatedByYou]; + displayText = [VectorL10n noticeRoomCreatedByYou]; } } else { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomCreatedForDm:(roomState ? [roomState.members memberName:creatorId] : creatorId)]; + displayText = [VectorL10n noticeRoomCreatedForDm:(roomState ? [roomState.members memberName:creatorId] : creatorId)]; } else { - displayText = [MatrixKitL10n noticeRoomCreated:(roomState ? [roomState.members memberName:creatorId] : creatorId)]; + displayText = [VectorL10n noticeRoomCreated:(roomState ? [roomState.members memberName:creatorId] : creatorId)]; } } // Append redacted info if any @@ -866,22 +866,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomJoinRulePublicByYouForDm]; + displayText = [VectorL10n noticeRoomJoinRulePublicByYouForDm]; } else { - displayText = [MatrixKitL10n noticeRoomJoinRulePublicByYou]; + displayText = [VectorL10n noticeRoomJoinRulePublicByYou]; } } else if ([joinRule isEqualToString:kMXRoomJoinRuleInvite]) { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomJoinRuleInviteByYouForDm]; + displayText = [VectorL10n noticeRoomJoinRuleInviteByYouForDm]; } else { - displayText = [MatrixKitL10n noticeRoomJoinRuleInviteByYou]; + displayText = [VectorL10n noticeRoomJoinRuleInviteByYou]; } } } @@ -892,22 +892,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomJoinRulePublicForDm:displayName]; + displayText = [VectorL10n noticeRoomJoinRulePublicForDm:displayName]; } else { - displayText = [MatrixKitL10n noticeRoomJoinRulePublic:displayName]; + displayText = [VectorL10n noticeRoomJoinRulePublic:displayName]; } } else if ([joinRule isEqualToString:kMXRoomJoinRuleInvite]) { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomJoinRuleInviteForDm:displayName]; + displayText = [VectorL10n noticeRoomJoinRuleInviteForDm:displayName]; } else { - displayText = [MatrixKitL10n noticeRoomJoinRuleInvite:displayName]; + displayText = [VectorL10n noticeRoomJoinRuleInvite:displayName]; } } } @@ -915,7 +915,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; if (!displayText) { // use old string for non-handled cases: "knock" and "private" - displayText = [MatrixKitL10n noticeRoomJoinRule:joinRule]; + displayText = [VectorL10n noticeRoomJoinRule:joinRule]; } // Append redacted info if any @@ -930,11 +930,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomPowerLevelIntroForDm]; + displayText = [VectorL10n noticeRoomPowerLevelIntroForDm]; } else { - displayText = [MatrixKitL10n noticeRoomPowerLevelIntro]; + displayText = [VectorL10n noticeRoomPowerLevelIntro]; } NSDictionary *users; MXJSONModelSetDictionary(users, event.content[@"users"]); @@ -945,10 +945,10 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; } if (event.content[@"users_default"]) { - displayText = [NSString stringWithFormat:@"%@\n\u2022 %@: %@", displayText, [MatrixKitL10n default], event.content[@"users_default"]]; + displayText = [NSString stringWithFormat:@"%@\n\u2022 %@: %@", displayText, [VectorL10n default], event.content[@"users_default"]]; } - displayText = [NSString stringWithFormat:@"%@\n%@", displayText, [MatrixKitL10n noticeRoomPowerLevelActingRequirement]]; + displayText = [NSString stringWithFormat:@"%@\n%@", displayText, [VectorL10n noticeRoomPowerLevelActingRequirement]]; if (event.content[@"ban"]) { displayText = [NSString stringWithFormat:@"%@\n\u2022 ban: %@", displayText, event.content[@"ban"]]; @@ -966,7 +966,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; displayText = [NSString stringWithFormat:@"%@\n\u2022 invite: %@", displayText, event.content[@"invite"]]; } - displayText = [NSString stringWithFormat:@"%@\n%@", displayText, [MatrixKitL10n noticeRoomPowerLevelEventRequirement]]; + displayText = [NSString stringWithFormat:@"%@\n%@", displayText, [VectorL10n noticeRoomPowerLevelEventRequirement]]; NSDictionary *events; MXJSONModelSetDictionary(events, event.content[@"events"]); @@ -998,11 +998,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomAliasesForDm:[aliases componentsJoinedByString:@", "]]; + displayText = [VectorL10n noticeRoomAliasesForDm:[aliases componentsJoinedByString:@", "]]; } else { - displayText = [MatrixKitL10n noticeRoomAliases:[aliases componentsJoinedByString:@", "]]; + displayText = [VectorL10n noticeRoomAliases:[aliases componentsJoinedByString:@", "]]; } // Append redacted info if any if (redactedInfo) @@ -1018,7 +1018,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; MXJSONModelSetArray(groups, event.content[@"groups"]); if (groups) { - displayText = [MatrixKitL10n noticeRoomRelatedGroups:[groups componentsJoinedByString:@", "]]; + displayText = [VectorL10n noticeRoomRelatedGroups:[groups componentsJoinedByString:@", "]]; // Append redacted info if any if (redactedInfo) { @@ -1057,7 +1057,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; && event.decryptionError.code == MXDecryptingErrorUnknownInboundSessionIdCode) { // Make the unknown inbound session id error description more user friendly - errorDescription = [MatrixKitL10n noticeCryptoErrorUnknownInboundSessionId]; + errorDescription = [VectorL10n noticeCryptoErrorUnknownInboundSessionId]; } else if ([event.decryptionError.domain isEqualToString:MXDecryptingErrorDomain] && event.decryptionError.code == MXDecryptingErrorDuplicateMessageIndexCode) @@ -1073,12 +1073,12 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; if (errorDescription) { - displayText = [MatrixKitL10n noticeCryptoUnableToDecrypt:errorDescription]; + displayText = [VectorL10n noticeCryptoUnableToDecrypt:errorDescription]; } } else { - displayText = [MatrixKitL10n noticeEncryptedMessage]; + displayText = [VectorL10n noticeEncryptedMessage]; } } @@ -1103,22 +1103,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeEncryptionEnabledOkByYou]; + displayText = [VectorL10n noticeEncryptionEnabledOkByYou]; } else { - displayText = [MatrixKitL10n noticeEncryptionEnabledOk:senderDisplayName]; + displayText = [VectorL10n noticeEncryptionEnabledOk:senderDisplayName]; } } else { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeEncryptionEnabledUnknownAlgorithmByYou:algorithm]; + displayText = [VectorL10n noticeEncryptionEnabledUnknownAlgorithmByYou:algorithm]; } else { - displayText = [MatrixKitL10n noticeEncryptionEnabledUnknownAlgorithm:senderDisplayName :algorithm]; + displayText = [VectorL10n noticeEncryptionEnabledUnknownAlgorithm:senderDisplayName :algorithm]; } } @@ -1143,11 +1143,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToAnyoneByYou]; + displayText = [VectorL10n noticeRoomHistoryVisibleToAnyoneByYou]; } else { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToAnyone:senderDisplayName]; + displayText = [VectorL10n noticeRoomHistoryVisibleToAnyone:senderDisplayName]; } } } @@ -1157,22 +1157,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembersByYouForDm]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembersByYouForDm]; } else { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembersByYou]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembersByYou]; } } else { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembersForDm:senderDisplayName]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembersForDm:senderDisplayName]; } else { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembers:senderDisplayName]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembers:senderDisplayName]; } } } @@ -1182,22 +1182,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembersFromInvitedPointByYouForDm]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembersFromInvitedPointByYouForDm]; } else { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembersFromInvitedPointByYou]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembersFromInvitedPointByYou]; } } else { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembersFromInvitedPointForDm:senderDisplayName]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembersFromInvitedPointForDm:senderDisplayName]; } else { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembersFromInvitedPoint:senderDisplayName]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembersFromInvitedPoint:senderDisplayName]; } } } @@ -1207,22 +1207,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembersFromJoinedPointByYouForDm]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembersFromJoinedPointByYouForDm]; } else { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembersFromJoinedPointByYou]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembersFromJoinedPointByYou]; } } else { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembersFromJoinedPointForDm:senderDisplayName]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembersFromJoinedPointForDm:senderDisplayName]; } else { - displayText = [MatrixKitL10n noticeRoomHistoryVisibleToMembersFromJoinedPoint:senderDisplayName]; + displayText = [VectorL10n noticeRoomHistoryVisibleToMembersFromJoinedPoint:senderDisplayName]; } } } @@ -1288,57 +1288,57 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if ([msgtype isEqualToString:kMXMessageTypeImage]) { - body = body? body : [MatrixKitL10n noticeImageAttachment]; + body = body? body : [VectorL10n noticeImageAttachment]; // Check attachment validity if (![self isSupportedAttachment:event]) { MXLogDebug(@"[MXKEventFormatter] Warning: Unsupported attachment %@", event.description); - body = [MatrixKitL10n noticeInvalidAttachment]; + body = [VectorL10n noticeInvalidAttachment]; *error = MXKEventFormatterErrorUnsupported; } } else if ([msgtype isEqualToString:kMXMessageTypeAudio]) { - body = body? body : [MatrixKitL10n noticeAudioAttachment]; + body = body? body : [VectorL10n noticeAudioAttachment]; if (![self isSupportedAttachment:event]) { MXLogDebug(@"[MXKEventFormatter] Warning: Unsupported attachment %@", event.description); if (_isForSubtitle || !_settings.showUnsupportedEventsInRoomHistory) { - body = [MatrixKitL10n noticeInvalidAttachment]; + body = [VectorL10n noticeInvalidAttachment]; } else { - body = [MatrixKitL10n noticeUnsupportedAttachment:event.description]; + body = [VectorL10n noticeUnsupportedAttachment:event.description]; } *error = MXKEventFormatterErrorUnsupported; } } else if ([msgtype isEqualToString:kMXMessageTypeVideo]) { - body = body? body : [MatrixKitL10n noticeVideoAttachment]; + body = body? body : [VectorL10n noticeVideoAttachment]; if (![self isSupportedAttachment:event]) { MXLogDebug(@"[MXKEventFormatter] Warning: Unsupported attachment %@", event.description); if (_isForSubtitle || !_settings.showUnsupportedEventsInRoomHistory) { - body = [MatrixKitL10n noticeInvalidAttachment]; + body = [VectorL10n noticeInvalidAttachment]; } else { - body = [MatrixKitL10n noticeUnsupportedAttachment:event.description]; + body = [VectorL10n noticeUnsupportedAttachment:event.description]; } *error = MXKEventFormatterErrorUnsupported; } } else if ([msgtype isEqualToString:kMXMessageTypeFile]) { - body = body? body : [MatrixKitL10n noticeFileAttachment]; + body = body? body : [VectorL10n noticeFileAttachment]; // Check attachment validity if (![self isSupportedAttachment:event]) { MXLogDebug(@"[MXKEventFormatter] Warning: Unsupported attachment %@", event.description); - body = [MatrixKitL10n noticeInvalidAttachment]; + body = [VectorL10n noticeInvalidAttachment]; *error = MXKEventFormatterErrorUnsupported; } } @@ -1361,7 +1361,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; // For replies, look for the end of the parent message // This helps us insert the emote prefix in the right place - if (event.relatesTo.inReplyTo || (event.isInThread && !RiotSettings.shared.enableThreads)) + if (event.relatesTo.inReplyTo || (!RiotSettings.shared.enableThreads && event.isInThread)) { [attributedDisplayText enumerateAttribute:kMXKToolsBlockquoteMarkAttribute inRange:NSMakeRange(0, attributedDisplayText.length) @@ -1402,7 +1402,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; if (type && eventId) { - displayText = [MatrixKitL10n noticeFeedback:eventId :type]; + displayText = [VectorL10n noticeFeedback:eventId :type]; // Append redacted info if any if (redactedInfo) { @@ -1416,11 +1416,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; NSString *eventId = event.redacts; if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeRedactionByYou:eventId]; + displayText = [VectorL10n noticeRedactionByYou:eventId]; } else { - displayText = [MatrixKitL10n noticeRedaction:senderDisplayName :eventId]; + displayText = [VectorL10n noticeRedaction:senderDisplayName :eventId]; } break; } @@ -1434,22 +1434,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomThirdPartyInviteByYouForDm:displayname]; + displayText = [VectorL10n noticeRoomThirdPartyInviteByYouForDm:displayname]; } else { - displayText = [MatrixKitL10n noticeRoomThirdPartyInviteByYou:displayname]; + displayText = [VectorL10n noticeRoomThirdPartyInviteByYou:displayname]; } } else { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomThirdPartyInviteForDm:senderDisplayName :displayname]; + displayText = [VectorL10n noticeRoomThirdPartyInviteForDm:senderDisplayName :displayname]; } else { - displayText = [MatrixKitL10n noticeRoomThirdPartyInvite:senderDisplayName :displayname]; + displayText = [VectorL10n noticeRoomThirdPartyInvite:senderDisplayName :displayname]; } } } @@ -1461,22 +1461,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomThirdPartyRevokedInviteByYouForDm:displayname]; + displayText = [VectorL10n noticeRoomThirdPartyRevokedInviteByYouForDm:displayname]; } else { - displayText = [MatrixKitL10n noticeRoomThirdPartyRevokedInviteByYou:displayname]; + displayText = [VectorL10n noticeRoomThirdPartyRevokedInviteByYou:displayname]; } } else { if (isRoomDirect) { - displayText = [MatrixKitL10n noticeRoomThirdPartyRevokedInviteForDm:senderDisplayName :displayname]; + displayText = [VectorL10n noticeRoomThirdPartyRevokedInviteForDm:senderDisplayName :displayname]; } else { - displayText = [MatrixKitL10n noticeRoomThirdPartyRevokedInvite:senderDisplayName :displayname]; + displayText = [VectorL10n noticeRoomThirdPartyRevokedInvite:senderDisplayName :displayname]; } } } @@ -1490,22 +1490,22 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticePlacedVideoCallByYou]; + displayText = [VectorL10n noticePlacedVideoCallByYou]; } else { - displayText = [MatrixKitL10n noticePlacedVideoCall:senderDisplayName]; + displayText = [VectorL10n noticePlacedVideoCall:senderDisplayName]; } } else { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticePlacedVoiceCallByYou]; + displayText = [VectorL10n noticePlacedVoiceCallByYou]; } else { - displayText = [MatrixKitL10n noticePlacedVoiceCall:senderDisplayName]; + displayText = [VectorL10n noticePlacedVoiceCall:senderDisplayName]; } } break; @@ -1514,11 +1514,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeAnsweredVideoCallByYou]; + displayText = [VectorL10n noticeAnsweredVideoCallByYou]; } else { - displayText = [MatrixKitL10n noticeAnsweredVideoCall:senderDisplayName]; + displayText = [VectorL10n noticeAnsweredVideoCall:senderDisplayName]; } break; } @@ -1526,11 +1526,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeEndedVideoCallByYou]; + displayText = [VectorL10n noticeEndedVideoCallByYou]; } else { - displayText = [MatrixKitL10n noticeEndedVideoCall:senderDisplayName]; + displayText = [VectorL10n noticeEndedVideoCall:senderDisplayName]; } break; } @@ -1538,11 +1538,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { if (isEventSenderMyUser) { - displayText = [MatrixKitL10n noticeDeclinedVideoCallByYou]; + displayText = [VectorL10n noticeDeclinedVideoCallByYou]; } else { - displayText = [MatrixKitL10n noticeDeclinedVideoCall:senderDisplayName]; + displayText = [VectorL10n noticeDeclinedVideoCall:senderDisplayName]; } break; } @@ -1567,11 +1567,11 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; if (![self isSupportedAttachment:event]) { MXLogDebug(@"[MXKEventFormatter] Warning: Unsupported sticker %@", event.description); - body = [MatrixKitL10n noticeInvalidAttachment]; + body = [VectorL10n noticeInvalidAttachment]; *error = MXKEventFormatterErrorUnsupported; } - displayText = body? body : [MatrixKitL10n noticeSticker]; + displayText = body? body : [VectorL10n noticeSticker]; } break; } @@ -1611,13 +1611,13 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; switch (*error) { case MXKEventFormatterErrorUnsupported: - shortDescription = [MatrixKitL10n noticeErrorUnsupportedEvent]; + shortDescription = [VectorL10n noticeErrorUnsupportedEvent]; break; case MXKEventFormatterErrorUnexpected: - shortDescription = [MatrixKitL10n noticeErrorUnexpectedEvent]; + shortDescription = [VectorL10n noticeErrorUnexpectedEvent]; break; case MXKEventFormatterErrorUnknownEventType: - shortDescription = [MatrixKitL10n noticeErrorUnknownEventType]; + shortDescription = [VectorL10n noticeErrorUnknownEventType]; break; default: @@ -1660,10 +1660,13 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:string]; NSRange wholeString = NSMakeRange(0, str.length); + UIFont *fontForWholeString = [self fontForEvent:event string:string]; // Apply color and font corresponding to the event state [str addAttribute:NSForegroundColorAttributeName value:[self textColorForEvent:event] range:wholeString]; - [str addAttribute:NSFontAttributeName value:[self fontForEvent:event] range:wholeString]; + [str addAttribute:NSFontAttributeName + value:fontForWholeString + range:wholeString]; // If enabled, make links clickable if (!([[_settings httpLinkScheme] isEqualToString: @"http"] && @@ -1695,8 +1698,26 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; } } - // Apply additional treatments - return [self postRenderAttributedString:str]; + UIFont *fontForBody = [self fontForEvent:event string:nil]; + if ([fontForWholeString isEqual:fontForBody]) + { + // body font is the same with the whole string font, no need to change body font + // apply additional treatments + return [self postRenderAttributedString:str]; + } + + NSRange bodyRange = [str.string rangeOfString:event.content[kMXMessageBodyKey]]; + if (bodyRange.location == NSNotFound) + { + // body not found in the whole string + // apply additional treatments + return [self postRenderAttributedString:str]; + } + + NSMutableAttributedString *mutableStr = [str mutableCopy]; + [mutableStr addAttribute:NSFontAttributeName value:fontForBody range:bodyRange]; + // apply additional treatments + return [self postRenderAttributedString:mutableStr]; } - (NSAttributedString*)renderHTMLString:(NSString*)htmlString forEvent:(MXEvent*)event withRoomState:(MXRoomState*)roomState @@ -1704,26 +1725,26 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; NSString *html = htmlString; // Special treatment for "In reply to" message - if (event.isReplyEvent || (event.isInThread && !RiotSettings.shared.enableThreads)) + if (event.isReplyEvent || (!RiotSettings.shared.enableThreads && event.isInThread)) { html = [self renderReplyTo:html withRoomState:roomState]; } // Apply the css style that corresponds to the event state - UIFont *font = [self fontForEvent:event]; + UIFont *fontForWholeString = [self fontForEvent:event string:htmlString]; // Do some sanitisation before finalizing the string MXWeakify(self); DTHTMLAttributedStringBuilderWillFlushCallback sanitizeCallback = ^(DTHTMLElement *element) { MXStrongifyAndReturnIfNil(self); - [element sanitizeWith:self.allowedHTMLTags bodyFont:font imageHandler:self.htmlImageHandler]; + [element sanitizeWith:self.allowedHTMLTags bodyFont:fontForWholeString imageHandler:self.htmlImageHandler]; }; NSDictionary *options = @{ DTUseiOS6Attributes: @(YES), // Enable it to be able to display the attributed string in a UITextView - DTDefaultFontFamily: font.familyName, - DTDefaultFontName: font.fontName, - DTDefaultFontSize: @(font.pointSize), + DTDefaultFontFamily: fontForWholeString.familyName, + DTDefaultFontName: fontForWholeString.fontName, + DTDefaultFontSize: @(fontForWholeString.pointSize), DTDefaultTextColor: [self textColorForEvent:event], DTDefaultLinkDecoration: @(NO), DTDefaultStyleSheet: dtCSS, @@ -1748,7 +1769,23 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; // Finalize HTML blockquote blocks marking str = [MXKTools removeMarkedBlockquotesArtifacts:str]; - return str; + UIFont *fontForBody = [self fontForEvent:event string:nil]; + if ([fontForWholeString isEqual:fontForBody]) + { + // body font is the same with the whole string font, no need to change body font + return str; + } + + NSRange bodyRange = [str.string rangeOfString:event.content[kMXMessageBodyKey]]; + if (bodyRange.location == NSNotFound) + { + // body not found in the whole string + return str; + } + + NSMutableAttributedString *mutableStr = [str mutableCopy]; + [mutableStr addAttribute:NSFontAttributeName value:fontForBody range:bodyRange]; + return mutableStr; } /** @@ -1825,7 +1862,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; if (inReplyToTextRange.location != NSNotFound) { - html = [html stringByReplacingCharactersInRange:inReplyToTextRange withString:[MatrixKitL10n noticeInReplyTo]]; + html = [html stringByReplacingCharactersInRange:inReplyToTextRange withString:[VectorL10n noticeInReplyTo]]; } if (inReplyToLinkRange.location != NSNotFound) @@ -2030,7 +2067,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; textColor = _errorTextColor; } // Check whether the message is highlighted. - else if (event.mxkIsHighlighted || (event.isInThread && !RiotSettings.shared.enableThreads && ![event.sender isEqualToString:mxSession.myUserId])) + else if (event.mxkIsHighlighted || (!RiotSettings.shared.enableThreads && event.isInThread && [event shouldBeHighlightedInSession:mxSession])) { textColor = _bingTextColor; } @@ -2080,9 +2117,10 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; Get the text font to use according to the event state. @param event the event. + @param string the string to be rendered for the event. It may be different from event.content.body. Pass nil to get font just according to event.content.body. @return the text font. */ -- (UIFont*)fontForEvent:(MXEvent*)event +- (UIFont*)fontForEvent:(MXEvent*)event string:(NSString*)string { // Select text font UIFont *font = _defaultTextFont; @@ -2094,7 +2132,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { font = _callNoticesTextFont; } - else if (event.mxkIsHighlighted || (event.isInThread && !RiotSettings.shared.enableThreads && ![event.sender isEqualToString:mxSession.myUserId])) + else if (event.mxkIsHighlighted || (!RiotSettings.shared.enableThreads && event.isInThread && [event shouldBeHighlightedInSession:mxSession])) { font = _bingTextFont; } @@ -2102,7 +2140,7 @@ static NSString *const kHTMLATagRegexPattern = @"([^<]*)"; { font = _encryptedMessagesTextFont; } - else if (!_isForSubtitle && event.eventType == MXEventTypeRoomMessage && (_emojiOnlyTextFont || _singleEmojiTextFont)) + else if (!_isForSubtitle && !string && event.eventType == MXEventTypeRoomMessage && (_emojiOnlyTextFont || _singleEmojiTextFont)) { NSString *message; MXJSONModelSetString(message, event.content[kMXMessageBodyKey]); diff --git a/Riot/Modules/MatrixKit/Utils/EventFormatter/MXKRoomNameStringLocalizer.m b/Riot/Modules/MatrixKit/Utils/EventFormatter/MXKRoomNameStringLocalizer.m index 904207536..87b4eadc1 100644 --- a/Riot/Modules/MatrixKit/Utils/EventFormatter/MXKRoomNameStringLocalizer.m +++ b/Riot/Modules/MatrixKit/Utils/EventFormatter/MXKRoomNameStringLocalizer.m @@ -21,22 +21,22 @@ - (NSString *)emptyRoom { - return [MatrixKitL10n roomDisplaynameEmptyRoom]; + return [VectorL10n roomDisplaynameEmptyRoom]; } - (NSString *)twoMembers:(NSString *)firstMember second:(NSString *)secondMember { - return [MatrixKitL10n roomDisplaynameTwoMembers:firstMember :secondMember]; + return [VectorL10n roomDisplaynameTwoMembers:firstMember :secondMember]; } - (NSString *)moreThanTwoMembers:(NSString *)firstMember count:(NSNumber *)memberCount { - return [MatrixKitL10n roomDisplaynameMoreThanTwoMembers:firstMember :memberCount.stringValue]; + return [VectorL10n roomDisplaynameMoreThanTwoMembers:firstMember :memberCount.stringValue]; } - (NSString *)allOtherMembersLeft:(NSString *)member { - return [MatrixKitL10n roomDisplaynameAllOtherMembersLeft:member]; + return [VectorL10n roomDisplaynameAllOtherMembersLeft:member]; } @end diff --git a/Riot/Modules/MatrixKit/Utils/MXKTools.m b/Riot/Modules/MatrixKit/Utils/MXKTools.m index 7e3231324..88fe11017 100644 --- a/Riot/Modules/MatrixKit/Utils/MXKTools.m +++ b/Riot/Modules/MatrixKit/Utils/MXKTools.m @@ -187,22 +187,22 @@ static NSRegularExpression *htmlTagsRegex; if (secondsInterval < 1) { - [formattedString appendFormat:@"< 1%@", [MatrixKitL10n formatTimeS]]; + [formattedString appendFormat:@"< 1%@", [VectorL10n formatTimeS]]; } else if (secondsInterval < 60) { - [formattedString appendFormat:@"%d%@", (int)secondsInterval, [MatrixKitL10n formatTimeS]]; + [formattedString appendFormat:@"%d%@", (int)secondsInterval, [VectorL10n formatTimeS]]; } else if (secondsInterval < 3600) { - [formattedString appendFormat:@"%d%@ %2d%@", (int)(secondsInterval/60), [MatrixKitL10n formatTimeM], - ((int)secondsInterval) % 60, [MatrixKitL10n formatTimeS]]; + [formattedString appendFormat:@"%d%@ %2d%@", (int)(secondsInterval/60), [VectorL10n formatTimeM], + ((int)secondsInterval) % 60, [VectorL10n formatTimeS]]; } else if (secondsInterval >= 3600) { - [formattedString appendFormat:@"%d%@ %d%@ %d%@", (int)(secondsInterval / 3600), [MatrixKitL10n formatTimeH], - ((int)(secondsInterval) % 3600) / 60, [MatrixKitL10n formatTimeM], - (int)(secondsInterval) % 60, [MatrixKitL10n formatTimeS]]; + [formattedString appendFormat:@"%d%@ %d%@ %d%@", (int)(secondsInterval / 3600), [VectorL10n formatTimeH], + ((int)(secondsInterval) % 3600) / 60, [VectorL10n formatTimeM], + (int)(secondsInterval) % 60, [VectorL10n formatTimeS]]; } [formattedString appendString:@" left"]; @@ -215,26 +215,26 @@ static NSRegularExpression *htmlTagsRegex; if (secondsInterval < 0) { - formattedString = [NSString stringWithFormat:@"0%@", [MatrixKitL10n formatTimeS]]; + formattedString = [NSString stringWithFormat:@"0%@", [VectorL10n formatTimeS]]; } else { NSUInteger seconds = secondsInterval; if (seconds < 60) { - formattedString = [NSString stringWithFormat:@"%tu%@", seconds, [MatrixKitL10n formatTimeS]]; + formattedString = [NSString stringWithFormat:@"%tu%@", seconds, [VectorL10n formatTimeS]]; } else if (secondsInterval < 3600) { - formattedString = [NSString stringWithFormat:@"%tu%@", seconds / 60, [MatrixKitL10n formatTimeM]]; + formattedString = [NSString stringWithFormat:@"%tu%@", seconds / 60, [VectorL10n formatTimeM]]; } else if (secondsInterval < 86400) { - formattedString = [NSString stringWithFormat:@"%tu%@", seconds / 3600, [MatrixKitL10n formatTimeH]]; + formattedString = [NSString stringWithFormat:@"%tu%@", seconds / 3600, [VectorL10n formatTimeH]]; } else { - formattedString = [NSString stringWithFormat:@"%tu%@", seconds / 86400, [MatrixKitL10n formatTimeD]]; + formattedString = [NSString stringWithFormat:@"%tu%@", seconds / 86400, [VectorL10n formatTimeD]]; } } @@ -715,15 +715,15 @@ static NSMutableDictionary* backgroundByImageNameDict; + (UIAlertController*)videoConversionPromptForVideoAsset:(AVAsset *)videoAsset withCompletion:(void (^)(NSString * _Nullable presetName))completion { - UIAlertController *compressionPrompt = [UIAlertController alertControllerWithTitle:[MatrixKitL10n attachmentSizePromptTitle] - message:[MatrixKitL10n attachmentSizePromptMessage] + UIAlertController *compressionPrompt = [UIAlertController alertControllerWithTitle:[VectorL10n attachmentSizePromptTitle] + message:[VectorL10n attachmentSizePromptMessage] preferredStyle:UIAlertControllerStyleActionSheet]; CGSize naturalSize = [videoAsset tracksWithMediaType:AVMediaTypeVideo].firstObject.naturalSize; // Provide 480p as the baseline preset. NSString *fileSizeString = [MXKTools estimatedFileSizeStringForVideoAsset:videoAsset withPresetName:AVAssetExportPreset640x480]; - NSString *title = [MatrixKitL10n attachmentSmallWithResolution:@"480p" :fileSizeString]; + NSString *title = [VectorL10n attachmentSmallWithResolution:@"480p" :fileSizeString]; [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -735,7 +735,7 @@ static NSMutableDictionary* backgroundByImageNameDict; if (naturalSize.height > 480) { NSString *fileSizeString = [MXKTools estimatedFileSizeStringForVideoAsset:videoAsset withPresetName:AVAssetExportPreset1280x720]; - NSString *title = [MatrixKitL10n attachmentMediumWithResolution:@"720p" :fileSizeString]; + NSString *title = [VectorL10n attachmentMediumWithResolution:@"720p" :fileSizeString]; [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -748,7 +748,7 @@ static NSMutableDictionary* backgroundByImageNameDict; if (naturalSize.height > 720) { NSString *fileSizeString = [MXKTools estimatedFileSizeStringForVideoAsset:videoAsset withPresetName:AVAssetExportPreset1920x1080]; - NSString *title = [MatrixKitL10n attachmentLargeWithResolution:@"1080p" :fileSizeString]; + NSString *title = [VectorL10n attachmentLargeWithResolution:@"1080p" :fileSizeString]; [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -757,7 +757,7 @@ static NSMutableDictionary* backgroundByImageNameDict; }]]; } - [compressionPrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [compressionPrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { // Cancelled. Call the completion with nil. @@ -800,7 +800,7 @@ static NSMutableDictionary* backgroundByImageNameDict; UIApplication *sharedApplication = [UIApplication performSelector:@selector(sharedApplication)]; if (sharedApplication && UIApplicationOpenSettingsURLString) { - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n settings] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n settings] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -814,7 +814,7 @@ static NSMutableDictionary* backgroundByImageNameDict; }]]; } - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -898,7 +898,7 @@ manualChangeMessageForVideo:(NSString*)manualChangeMessageForVideo // Display manualChangeMessage UIAlertController *alert = [UIAlertController alertControllerWithTitle:manualChangeTitle message:manualChangeMessage preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:MatrixKitL10n.cancel + [alert addAction:[UIAlertAction actionWithTitle:VectorL10n.cancel style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -910,7 +910,7 @@ manualChangeMessageForVideo:(NSString*)manualChangeMessageForVideo UIApplication *sharedApplication = [UIApplication performSelector:@selector(sharedApplication)]; if (sharedApplication) { - UIAlertAction *settingsAction = [UIAlertAction actionWithTitle:MatrixKitL10n.settings + UIAlertAction *settingsAction = [UIAlertAction actionWithTitle:VectorL10n.settings style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [MXKAppSettings standardAppSettings].syncLocalContactsPermissionOpenedSystemSettings = YES; diff --git a/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsEmailCodeBasedView.m b/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsEmailCodeBasedView.m index f43aada0d..06aa184d9 100644 --- a/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsEmailCodeBasedView.m +++ b/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsEmailCodeBasedView.m @@ -32,11 +32,11 @@ { [super awakeFromNib]; - _userLoginTextField.placeholder = [MatrixKitL10n loginUserIdPlaceholder]; - _emailAndTokenTextField.placeholder = [MatrixKitL10n loginEmailPlaceholder]; - _promptEmailTokenLabel.text = [MatrixKitL10n loginPromptEmailToken]; + _userLoginTextField.placeholder = [VectorL10n loginUserIdPlaceholder]; + _emailAndTokenTextField.placeholder = [VectorL10n loginEmailPlaceholder]; + _promptEmailTokenLabel.text = [VectorL10n loginPromptEmailToken]; - _displayNameTextField.placeholder = [MatrixKitL10n loginDisplayNamePlaceholder]; + _displayNameTextField.placeholder = [VectorL10n loginDisplayNamePlaceholder]; } #pragma mark - @@ -84,7 +84,7 @@ { if (!self.areAllRequiredFieldsSet) { - errorMsg = [MatrixKitL10n loginInvalidParam]; + errorMsg = [VectorL10n loginInvalidParam]; } } diff --git a/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsPasswordBasedView.m b/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsPasswordBasedView.m index 237a7a1cc..ad649be44 100644 --- a/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsPasswordBasedView.m +++ b/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsPasswordBasedView.m @@ -37,12 +37,12 @@ { [super awakeFromNib]; - _userLoginTextField.placeholder = [MatrixKitL10n loginUserIdPlaceholder]; - _passWordTextField.placeholder = [MatrixKitL10n loginPasswordPlaceholder]; - _emailTextField.placeholder = [NSString stringWithFormat:@"%@ (%@)", [MatrixKitL10n loginEmailPlaceholder], [MatrixKitL10n loginOptionalField]]; - _emailInfoLabel.text = [MatrixKitL10n loginEmailInfo]; + _userLoginTextField.placeholder = [VectorL10n loginUserIdPlaceholder]; + _passWordTextField.placeholder = [VectorL10n loginPasswordPlaceholder]; + _emailTextField.placeholder = [NSString stringWithFormat:@"%@ (%@)", [VectorL10n loginEmailPlaceholder], [VectorL10n loginOptionalField]]; + _emailInfoLabel.text = [VectorL10n loginEmailInfo]; - _displayNameTextField.placeholder = [MatrixKitL10n loginDisplayNamePlaceholder]; + _displayNameTextField.placeholder = [VectorL10n loginDisplayNamePlaceholder]; } #pragma mark - @@ -91,7 +91,7 @@ // Check user login and pass fields if (!self.areAllRequiredFieldsSet) { - errorMsg = [MatrixKitL10n loginInvalidParam]; + errorMsg = [VectorL10n loginInvalidParam]; } } @@ -105,7 +105,7 @@ // Sanity check on required fields if (!self.areAllRequiredFieldsSet) { - callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n loginInvalidParam]}]); + callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n loginInvalidParam]}]); return; } diff --git a/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsView.h b/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsView.h index c71b022ae..5582aa95a 100644 --- a/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsView.h +++ b/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsView.h @@ -25,7 +25,7 @@ extern NSString *const MXKAuthErrorDomain; /** Authentication types */ -typedef enum { +typedef NS_ENUM(NSUInteger, MXKAuthenticationType) { /** Type used to sign up. */ @@ -39,7 +39,7 @@ typedef enum { */ MXKAuthenticationTypeForgotPassword -} MXKAuthenticationType; +}; @class MXKAuthInputsView; diff --git a/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsView.m b/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsView.m index 3977b6355..00e143b12 100644 --- a/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsView.m +++ b/Riot/Modules/MatrixKit/Views/Authentication/MXKAuthInputsView.m @@ -87,7 +87,7 @@ NSString *const MXKAuthErrorDomain = @"MXKAuthErrorDomain"; // Do nothing by default if (callback) { - callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]); + callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]); } } @@ -96,7 +96,7 @@ NSString *const MXKAuthErrorDomain = @"MXKAuthErrorDomain"; // Do nothing by default if (callback) { - callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]); + callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n notSupportedYet]}]); } } diff --git a/Riot/Modules/MatrixKit/Views/DeviceView/MXKDeviceView.m b/Riot/Modules/MatrixKit/Views/DeviceView/MXKDeviceView.m index 3551e08e2..637a18a0e 100644 --- a/Riot/Modules/MatrixKit/Views/DeviceView/MXKDeviceView.m +++ b/Riot/Modules/MatrixKit/Views/DeviceView/MXKDeviceView.m @@ -77,14 +77,14 @@ static NSAttributedString *verticalWhitespace = nil; [self.bgView addGestureRecognizer:tap]; // Localize string - [_cancelButton setTitle:[MatrixKitL10n ok] forState:UIControlStateNormal]; - [_cancelButton setTitle:[MatrixKitL10n ok] forState:UIControlStateHighlighted]; + [_cancelButton setTitle:[VectorL10n ok] forState:UIControlStateNormal]; + [_cancelButton setTitle:[VectorL10n ok] forState:UIControlStateHighlighted]; - [_renameButton setTitle:[MatrixKitL10n rename] forState:UIControlStateNormal]; - [_renameButton setTitle:[MatrixKitL10n rename] forState:UIControlStateHighlighted]; + [_renameButton setTitle:[VectorL10n rename] forState:UIControlStateNormal]; + [_renameButton setTitle:[VectorL10n rename] forState:UIControlStateHighlighted]; - [_deleteButton setTitle:[MatrixKitL10n delete] forState:UIControlStateNormal]; - [_deleteButton setTitle:[MatrixKitL10n delete] forState:UIControlStateHighlighted]; + [_deleteButton setTitle:[VectorL10n delete] forState:UIControlStateNormal]; + [_deleteButton setTitle:[VectorL10n delete] forState:UIControlStateHighlighted]; } - (void)layoutSubviews @@ -149,13 +149,13 @@ static NSAttributedString *verticalWhitespace = nil; { // Device information NSMutableAttributedString *deviceInformationString = [[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n deviceDetailsTitle] + initWithString:[VectorL10n deviceDetailsTitle] attributes:@{NSForegroundColorAttributeName : _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:15]}]; [deviceInformationString appendAttributedString:[MXKDeviceView verticalWhitespace]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n deviceDetailsName] + initWithString:[VectorL10n deviceDetailsName] attributes:@{NSForegroundColorAttributeName : _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] @@ -165,7 +165,7 @@ static NSAttributedString *verticalWhitespace = nil; [deviceInformationString appendAttributedString:[MXKDeviceView verticalWhitespace]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n deviceDetailsIdentifier] + initWithString:[VectorL10n deviceDetailsIdentifier] attributes:@{NSForegroundColorAttributeName : _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] @@ -175,7 +175,7 @@ static NSAttributedString *verticalWhitespace = nil; [deviceInformationString appendAttributedString:[MXKDeviceView verticalWhitespace]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n deviceDetailsLastSeen] + initWithString:[VectorL10n deviceDetailsLastSeen] attributes:@{NSForegroundColorAttributeName : _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; @@ -187,7 +187,7 @@ static NSAttributedString *verticalWhitespace = nil; [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; - NSString *lastSeen = [MatrixKitL10n deviceDetailsLastSeenFormat:device.lastSeenIp :[dateFormatter stringFromDate:lastSeenDate]]; + NSString *lastSeen = [VectorL10n deviceDetailsLastSeenFormat:device.lastSeenIp :[dateFormatter stringFromDate:lastSeenDate]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:lastSeen @@ -262,8 +262,8 @@ static NSAttributedString *verticalWhitespace = nil; [currentAlert dismissViewControllerAnimated:NO completion:nil]; __weak typeof(self) weakSelf = self; - currentAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n deviceDetailsRenamePromptTitle] - message:[MatrixKitL10n deviceDetailsRenamePromptMessage] preferredStyle:UIAlertControllerStyleAlert]; + currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n deviceDetailsRenamePromptTitle] + message:[VectorL10n deviceDetailsRenamePromptMessage] preferredStyle:UIAlertControllerStyleAlert]; [currentAlert addTextFieldWithConfigurationHandler:^(UITextField *textField) { @@ -277,7 +277,7 @@ static NSAttributedString *verticalWhitespace = nil; } }]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -289,7 +289,7 @@ static NSAttributedString *verticalWhitespace = nil; }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -375,7 +375,7 @@ static NSAttributedString *verticalWhitespace = nil; __weak typeof(self) weakSelf = self; // Prompt the user before deleting the device. - self->currentAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n deviceDetailsDeletePromptTitle] message:[MatrixKitL10n deviceDetailsDeletePromptMessage] preferredStyle:UIAlertControllerStyleAlert]; + self->currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n deviceDetailsDeletePromptTitle] message:[VectorL10n deviceDetailsDeletePromptMessage] preferredStyle:UIAlertControllerStyleAlert]; [self->currentAlert addTextFieldWithConfigurationHandler:^(UITextField *textField) { @@ -385,7 +385,7 @@ static NSAttributedString *verticalWhitespace = nil; textField.keyboardType = UIKeyboardTypeDefault; }]; - [self->currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [self->currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -398,7 +398,7 @@ static NSAttributedString *verticalWhitespace = nil; }]]; - [self->currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n submit] + [self->currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n submit] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/MatrixKit/Views/EncryptionInfoView/MXKEncryptionInfoView.m b/Riot/Modules/MatrixKit/Views/EncryptionInfoView/MXKEncryptionInfoView.m index cc6c3175e..5ae061284 100644 --- a/Riot/Modules/MatrixKit/Views/EncryptionInfoView/MXKEncryptionInfoView.m +++ b/Riot/Modules/MatrixKit/Views/EncryptionInfoView/MXKEncryptionInfoView.m @@ -56,11 +56,11 @@ static NSAttributedString *verticalWhitespace = nil; [super awakeFromNib]; // Localize string - [_cancelButton setTitle:[MatrixKitL10n ok] forState:UIControlStateNormal]; - [_cancelButton setTitle:[MatrixKitL10n ok] forState:UIControlStateHighlighted]; + [_cancelButton setTitle:[VectorL10n ok] forState:UIControlStateNormal]; + [_cancelButton setTitle:[VectorL10n ok] forState:UIControlStateHighlighted]; - [_confirmVerifyButton setTitle:[MatrixKitL10n roomEventEncryptionVerifyOk] forState:UIControlStateNormal]; - [_confirmVerifyButton setTitle:[MatrixKitL10n roomEventEncryptionVerifyOk] forState:UIControlStateHighlighted]; + [_confirmVerifyButton setTitle:[VectorL10n roomEventEncryptionVerifyOk] forState:UIControlStateNormal]; + [_confirmVerifyButton setTitle:[VectorL10n roomEventEncryptionVerifyOk] forState:UIControlStateHighlighted]; } - (void)layoutSubviews @@ -140,7 +140,7 @@ static NSAttributedString *verticalWhitespace = nil; { // Prepare the text view content NSMutableAttributedString *textViewAttributedString = [[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoTitle] + initWithString:[VectorL10n roomEventEncryptionInfoTitle] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:17]}]; @@ -183,7 +183,7 @@ static NSAttributedString *verticalWhitespace = nil; // Event information NSMutableAttributedString *eventInformationString = [[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoEvent] + initWithString:[VectorL10n roomEventEncryptionInfoEvent] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:15]}]; [eventInformationString appendAttributedString:[MXKEncryptionInfoView verticalWhitespace]]; @@ -201,23 +201,23 @@ static NSAttributedString *verticalWhitespace = nil; if (!senderKey.length) { - senderKey = [MatrixKitL10n roomEventEncryptionInfoEventNone]; + senderKey = [VectorL10n roomEventEncryptionInfoEventNone]; } if (!claimedKey.length) { - claimedKey = [MatrixKitL10n roomEventEncryptionInfoEventNone]; + claimedKey = [VectorL10n roomEventEncryptionInfoEventNone]; } if (!algorithm.length) { - algorithm = [MatrixKitL10n roomEventEncryptionInfoEventUnencrypted]; + algorithm = [VectorL10n roomEventEncryptionInfoEventUnencrypted]; } if (!sessionId.length) { - sessionId = [MatrixKitL10n roomEventEncryptionInfoEventNone]; + sessionId = [VectorL10n roomEventEncryptionInfoEventNone]; } [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoEventUserId] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, + initWithString:[VectorL10n roomEventEncryptionInfoEventUserId] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:senderId @@ -226,7 +226,7 @@ static NSAttributedString *verticalWhitespace = nil; [eventInformationString appendAttributedString:[MXKEncryptionInfoView verticalWhitespace]]; [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoEventIdentityKey] + initWithString:[VectorL10n roomEventEncryptionInfoEventIdentityKey] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] @@ -236,7 +236,7 @@ static NSAttributedString *verticalWhitespace = nil; [eventInformationString appendAttributedString:[MXKEncryptionInfoView verticalWhitespace]]; [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoEventFingerprintKey] + initWithString:[VectorL10n roomEventEncryptionInfoEventFingerprintKey] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] @@ -246,7 +246,7 @@ static NSAttributedString *verticalWhitespace = nil; [eventInformationString appendAttributedString:[MXKEncryptionInfoView verticalWhitespace]]; [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoEventAlgorithm] + initWithString:[VectorL10n roomEventEncryptionInfoEventAlgorithm] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] @@ -258,7 +258,7 @@ static NSAttributedString *verticalWhitespace = nil; if (decryptionError.length) { [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoEventDecryptionError] + initWithString:[VectorL10n roomEventEncryptionInfoEventDecryptionError] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] @@ -269,7 +269,7 @@ static NSAttributedString *verticalWhitespace = nil; } [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoEventSessionId] + initWithString:[VectorL10n roomEventEncryptionInfoEventSessionId] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [eventInformationString appendAttributedString:[[NSMutableAttributedString alloc] @@ -283,7 +283,7 @@ static NSAttributedString *verticalWhitespace = nil; // Device information NSMutableAttributedString *deviceInformationString = [[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoDevice] + initWithString:[VectorL10n roomEventEncryptionInfoDevice] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:15]}]; [deviceInformationString appendAttributedString:[MXKEncryptionInfoView verticalWhitespace]]; @@ -304,41 +304,41 @@ static NSAttributedString *verticalWhitespace = nil; case MXDeviceUnverified: { verification = [[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoDeviceNotVerified] + initWithString:[VectorL10n roomEventEncryptionInfoDeviceNotVerified] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoVerify] forState:UIControlStateNormal]; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoVerify] forState:UIControlStateHighlighted]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoBlock] forState:UIControlStateNormal]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoBlock] forState:UIControlStateHighlighted]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoVerify] forState:UIControlStateNormal]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoVerify] forState:UIControlStateHighlighted]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoBlock] forState:UIControlStateNormal]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoBlock] forState:UIControlStateHighlighted]; break; } case MXDeviceVerified: { verification = [[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoDeviceVerified] + initWithString:[VectorL10n roomEventEncryptionInfoDeviceVerified] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont systemFontOfSize:14]}]; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoUnverify] forState:UIControlStateNormal]; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoUnverify] forState:UIControlStateHighlighted]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoBlock] forState:UIControlStateNormal]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoBlock] forState:UIControlStateHighlighted]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoUnverify] forState:UIControlStateNormal]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoUnverify] forState:UIControlStateHighlighted]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoBlock] forState:UIControlStateNormal]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoBlock] forState:UIControlStateHighlighted]; break; } case MXDeviceBlocked: { verification = [[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoDeviceBlocked] + initWithString:[VectorL10n roomEventEncryptionInfoDeviceBlocked] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoVerify] forState:UIControlStateNormal]; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoVerify] forState:UIControlStateHighlighted]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoUnblock] forState:UIControlStateNormal]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoUnblock] forState:UIControlStateHighlighted]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoVerify] forState:UIControlStateNormal]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoVerify] forState:UIControlStateHighlighted]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoUnblock] forState:UIControlStateNormal]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoUnblock] forState:UIControlStateHighlighted]; break; } @@ -347,7 +347,7 @@ static NSAttributedString *verticalWhitespace = nil; } [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoDeviceName] + initWithString:[VectorL10n roomEventEncryptionInfoDeviceName] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] @@ -357,7 +357,7 @@ static NSAttributedString *verticalWhitespace = nil; [deviceInformationString appendAttributedString:[MXKEncryptionInfoView verticalWhitespace]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoDeviceId] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; + initWithString:[VectorL10n roomEventEncryptionInfoDeviceId] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:deviceId attributes:@{NSForegroundColorAttributeName: _defaultTextColor, @@ -365,12 +365,12 @@ static NSAttributedString *verticalWhitespace = nil; [deviceInformationString appendAttributedString:[MXKEncryptionInfoView verticalWhitespace]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoDeviceVerification] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; + initWithString:[VectorL10n roomEventEncryptionInfoDeviceVerification] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [deviceInformationString appendAttributedString:verification]; [deviceInformationString appendAttributedString:[MXKEncryptionInfoView verticalWhitespace]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoDeviceFingerprint] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; + initWithString:[VectorL10n roomEventEncryptionInfoDeviceFingerprint] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:14]}]]; [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:fingerprint attributes:@{NSForegroundColorAttributeName: _defaultTextColor, @@ -381,7 +381,7 @@ static NSAttributedString *verticalWhitespace = nil; { // Unknown device [deviceInformationString appendAttributedString:[[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionInfoDeviceUnknown] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont italicSystemFontOfSize:14]}]]; + initWithString:[VectorL10n roomEventEncryptionInfoDeviceUnknown] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont italicSystemFontOfSize:14]}]]; } [textViewAttributedString appendAttributedString:deviceInformationString]; @@ -451,10 +451,10 @@ static NSAttributedString *verticalWhitespace = nil; { // Prompt user NSMutableAttributedString *textViewAttributedString = [[NSMutableAttributedString alloc] - initWithString:[MatrixKitL10n roomEventEncryptionVerifyTitle] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, + initWithString:[VectorL10n roomEventEncryptionVerifyTitle] attributes:@{NSForegroundColorAttributeName: _defaultTextColor, NSFontAttributeName: [UIFont boldSystemFontOfSize:17]}]; - NSString *message = [MatrixKitL10n roomEventEncryptionVerifyMessage:_mxDeviceInfo.displayName :_mxDeviceInfo.deviceId :_mxDeviceInfo.fingerprint]; + NSString *message = [VectorL10n roomEventEncryptionVerifyMessage:_mxDeviceInfo.displayName :_mxDeviceInfo.deviceId :_mxDeviceInfo.fingerprint]; [textViewAttributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:message @@ -463,8 +463,8 @@ static NSAttributedString *verticalWhitespace = nil; self.textView.attributedText = textViewAttributedString; - [_cancelButton setTitle:[MatrixKitL10n cancel] forState:UIControlStateNormal]; - [_cancelButton setTitle:[MatrixKitL10n cancel] forState:UIControlStateHighlighted]; + [_cancelButton setTitle:[VectorL10n cancel] forState:UIControlStateNormal]; + [_cancelButton setTitle:[VectorL10n cancel] forState:UIControlStateHighlighted]; _verifyButton.hidden = _blockButton.hidden = YES; _confirmVerifyButton.hidden = NO; } diff --git a/Riot/Modules/MatrixKit/Views/EncryptionKeys/MXKEncryptionKeysExportView.m b/Riot/Modules/MatrixKit/Views/EncryptionKeys/MXKEncryptionKeysExportView.m index 8351571dd..82a73d169 100644 --- a/Riot/Modules/MatrixKit/Views/EncryptionKeys/MXKEncryptionKeysExportView.m +++ b/Riot/Modules/MatrixKit/Views/EncryptionKeys/MXKEncryptionKeysExportView.m @@ -41,7 +41,7 @@ mxSession = matrixSession; _passphraseMinLength = 1; - _alertController = [UIAlertController alertControllerWithTitle:[MatrixKitL10n e2eExportRoomKeys] message:[MatrixKitL10n e2eExportPrompt] preferredStyle:UIAlertControllerStyleAlert]; + _alertController = [UIAlertController alertControllerWithTitle:[VectorL10n e2eExportRoomKeys] message:[VectorL10n e2eExportPrompt] preferredStyle:UIAlertControllerStyleAlert]; } return self; } @@ -72,18 +72,18 @@ [_alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { textField.secureTextEntry = YES; - textField.placeholder = [MatrixKitL10n e2ePassphraseCreate]; + textField.placeholder = [VectorL10n e2ePassphraseCreate]; [textField resignFirstResponder]; }]; [_alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { textField.secureTextEntry = YES; - textField.placeholder = [MatrixKitL10n e2ePassphraseConfirm]; + textField.placeholder = [VectorL10n e2ePassphraseConfirm]; [textField resignFirstResponder]; }]; - [_alertController addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [_alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -94,7 +94,7 @@ }]]; - [_alertController addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n e2eExport] + [_alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n e2eExport] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -115,20 +115,20 @@ NSString *error; if (!password.length) { - error = [MatrixKitL10n e2ePassphraseEmpty]; + error = [VectorL10n e2ePassphraseEmpty]; } else if (password.length < self.passphraseMinLength) { - error = [MatrixKitL10n e2ePassphraseTooShort:self.passphraseMinLength]; + error = [VectorL10n e2ePassphraseTooShort:self.passphraseMinLength]; } else { - error = [MatrixKitL10n e2ePassphraseNotMatch]; + error = [VectorL10n e2ePassphraseNotMatch]; } - UIAlertController *otherAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] message:error preferredStyle:UIAlertControllerStyleAlert]; + UIAlertController *otherAlert = [UIAlertController alertControllerWithTitle:[VectorL10n error] message:error preferredStyle:UIAlertControllerStyleAlert]; - [otherAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [otherAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { if (weakSelf) { @@ -162,9 +162,9 @@ onLoading(NO); // TODO: i18n the error - UIAlertController *otherAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] message:error.localizedDescription preferredStyle:UIAlertControllerStyleAlert]; + UIAlertController *otherAlert = [UIAlertController alertControllerWithTitle:[VectorL10n error] message:error.localizedDescription preferredStyle:UIAlertControllerStyleAlert]; - [otherAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [otherAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { if (weakSelf) { diff --git a/Riot/Modules/MatrixKit/Views/EncryptionKeys/MXKEncryptionKeysImportView.m b/Riot/Modules/MatrixKit/Views/EncryptionKeys/MXKEncryptionKeysImportView.m index 154cca7d9..0adf019ac 100644 --- a/Riot/Modules/MatrixKit/Views/EncryptionKeys/MXKEncryptionKeysImportView.m +++ b/Riot/Modules/MatrixKit/Views/EncryptionKeys/MXKEncryptionKeysImportView.m @@ -39,7 +39,7 @@ { mxSession = matrixSession; - _alertController = [UIAlertController alertControllerWithTitle:[MatrixKitL10n e2eImportRoomKeys] message:[MatrixKitL10n e2eImportPrompt] preferredStyle:UIAlertControllerStyleAlert]; + _alertController = [UIAlertController alertControllerWithTitle:[VectorL10n e2eImportRoomKeys] message:[VectorL10n e2eImportPrompt] preferredStyle:UIAlertControllerStyleAlert]; } return self; } @@ -52,11 +52,11 @@ [_alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { textField.secureTextEntry = YES; - textField.placeholder = [MatrixKitL10n e2ePassphraseEnter]; + textField.placeholder = [VectorL10n e2ePassphraseEnter]; [textField resignFirstResponder]; }]; - [_alertController addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [_alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -67,7 +67,7 @@ }]]; - [_alertController addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n e2eImport] + [_alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n e2eImport] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -96,9 +96,9 @@ [mxkViewController stopActivityIndicator]; // TODO: i18n the error - UIAlertController *otherAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] message:error.localizedDescription preferredStyle:UIAlertControllerStyleAlert]; + UIAlertController *otherAlert = [UIAlertController alertControllerWithTitle:[VectorL10n error] message:error.localizedDescription preferredStyle:UIAlertControllerStyleAlert]; - [otherAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [otherAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { if (weakSelf) { diff --git a/Riot/Modules/MatrixKit/Views/Group/MXKGroupTableViewCell.m b/Riot/Modules/MatrixKit/Views/Group/MXKGroupTableViewCell.m index 188a4c493..641f2c4ac 100644 --- a/Riot/Modules/MatrixKit/Views/Group/MXKGroupTableViewCell.m +++ b/Riot/Modules/MatrixKit/Views/Group/MXKGroupTableViewCell.m @@ -50,11 +50,11 @@ { if (groupCellData.group.summary.usersSection.totalUserCountEstimate > 1) { - _memberCount.text = [MatrixKitL10n numMembersOther:@(groupCellData.group.summary.usersSection.totalUserCountEstimate).stringValue]; + _memberCount.text = [VectorL10n numMembersOther:@(groupCellData.group.summary.usersSection.totalUserCountEstimate).stringValue]; } else if (groupCellData.group.summary.usersSection.totalUserCountEstimate == 1) { - _memberCount.text = [MatrixKitL10n numMembersOne:@(1).stringValue]; + _memberCount.text = [VectorL10n numMembersOne:@(1).stringValue]; } else { diff --git a/Riot/Modules/MatrixKit/Views/MXKEventDetailsView.m b/Riot/Modules/MatrixKit/Views/MXKEventDetailsView.m index 59ed20691..e29b9951f 100644 --- a/Riot/Modules/MatrixKit/Views/MXKEventDetailsView.m +++ b/Riot/Modules/MatrixKit/Views/MXKEventDetailsView.m @@ -57,10 +57,10 @@ [super awakeFromNib]; // Localize string - [_redactButton setTitle:[MatrixKitL10n redact] forState:UIControlStateNormal]; - [_redactButton setTitle:[MatrixKitL10n redact] forState:UIControlStateHighlighted]; - [_closeButton setTitle:[MatrixKitL10n close] forState:UIControlStateNormal]; - [_closeButton setTitle:[MatrixKitL10n close] forState:UIControlStateHighlighted]; + [_redactButton setTitle:[VectorL10n redact] forState:UIControlStateNormal]; + [_redactButton setTitle:[VectorL10n redact] forState:UIControlStateHighlighted]; + [_closeButton setTitle:[VectorL10n close] forState:UIControlStateNormal]; + [_closeButton setTitle:[VectorL10n close] forState:UIControlStateHighlighted]; } - (instancetype)initWithEvent:(MXEvent*)event andMatrixSession:(MXSession*)session diff --git a/Riot/Modules/MatrixKit/Views/MXKRoomCreationView.m b/Riot/Modules/MatrixKit/Views/MXKRoomCreationView.m index d132e8e00..03f93d728 100644 --- a/Riot/Modules/MatrixKit/Views/MXKRoomCreationView.m +++ b/Riot/Modules/MatrixKit/Views/MXKRoomCreationView.m @@ -75,18 +75,18 @@ _participantsTextField.inputAccessoryView = inputAccessoryView; // Localize strings - _roomNameLabel.text = [MatrixKitL10n roomCreationNameTitle]; - _roomNameTextField.placeholder = [MatrixKitL10n roomCreationNamePlaceholder]; - _roomAliasLabel.text = [MatrixKitL10n roomCreationAliasTitle]; - _roomAliasTextField.placeholder = [MatrixKitL10n roomCreationAliasPlaceholder]; - _participantsLabel.text = [MatrixKitL10n roomCreationParticipantsTitle]; - _participantsTextField.placeholder = [MatrixKitL10n roomCreationParticipantsPlaceholder]; + _roomNameLabel.text = [VectorL10n roomCreationNameTitle]; + _roomNameTextField.placeholder = [VectorL10n roomCreationNamePlaceholder]; + _roomAliasLabel.text = [VectorL10n roomCreationAliasTitle]; + _roomAliasTextField.placeholder = [VectorL10n roomCreationAliasPlaceholder]; + _participantsLabel.text = [VectorL10n roomCreationParticipantsTitle]; + _participantsTextField.placeholder = [VectorL10n roomCreationParticipantsPlaceholder]; - [_roomVisibilityControl setTitle:[MatrixKitL10n public] forSegmentAtIndex:0]; - [_roomVisibilityControl setTitle:[MatrixKitL10n private] forSegmentAtIndex:1]; + [_roomVisibilityControl setTitle:[VectorL10n public] forSegmentAtIndex:0]; + [_roomVisibilityControl setTitle:[VectorL10n private] forSegmentAtIndex:1]; - [_createRoomBtn setTitle:[MatrixKitL10n createRoom] forState:UIControlStateNormal]; - [_createRoomBtn setTitle:[MatrixKitL10n createRoom] forState:UIControlStateHighlighted]; + [_createRoomBtn setTitle:[VectorL10n createRoom] forState:UIControlStateNormal]; + [_createRoomBtn setTitle:[VectorL10n createRoom] forState:UIControlStateHighlighted]; } - (void)dealloc @@ -180,11 +180,11 @@ // Update alias placeholder in room creation section if (homeServerSuffixArray.count == 1) { - _roomAliasTextField.placeholder = [MatrixKitL10n roomCreationAliasPlaceholderWithHomeserver:homeServerSuffixArray.firstObject]; + _roomAliasTextField.placeholder = [VectorL10n roomCreationAliasPlaceholderWithHomeserver:homeServerSuffixArray.firstObject]; } else { - _roomAliasTextField.placeholder = [MatrixKitL10n roomCreationAliasPlaceholder]; + _roomAliasTextField.placeholder = [VectorL10n roomCreationAliasPlaceholder]; } } @@ -320,7 +320,7 @@ [mxSessionPicker dismissViewControllerAnimated:NO completion:nil]; } - mxSessionPicker = [UIAlertController alertControllerWithTitle:[MatrixKitL10n selectAccount] message:nil preferredStyle:UIAlertControllerStyleActionSheet]; + mxSessionPicker = [UIAlertController alertControllerWithTitle:[VectorL10n selectAccount] message:nil preferredStyle:UIAlertControllerStyleActionSheet]; __weak typeof(self) weakSelf = self; @@ -344,7 +344,7 @@ }]]; } - [mxSessionPicker addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [mxSessionPicker addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/MatrixKit/Views/PushRule/MXKPushRuleCreationTableViewCell.m b/Riot/Modules/MatrixKit/Views/PushRule/MXKPushRuleCreationTableViewCell.m index b0929edc9..c19d4bfe5 100644 --- a/Riot/Modules/MatrixKit/Views/PushRule/MXKPushRuleCreationTableViewCell.m +++ b/Riot/Modules/MatrixKit/Views/PushRule/MXKPushRuleCreationTableViewCell.m @@ -43,14 +43,14 @@ switch (mxPushRuleKind) { case MXPushRuleKindContent: - _inputTextField.placeholder = [MatrixKitL10n notificationSettingsWordToMatch]; + _inputTextField.placeholder = [VectorL10n notificationSettingsWordToMatch]; _inputTextField.autocorrectionType = UITextAutocorrectionTypeDefault; break; case MXPushRuleKindRoom: - _inputTextField.placeholder = [MatrixKitL10n notificationSettingsSelectRoom]; + _inputTextField.placeholder = [VectorL10n notificationSettingsSelectRoom]; break; case MXPushRuleKindSender: - _inputTextField.placeholder = [MatrixKitL10n notificationSettingsSenderHint]; + _inputTextField.placeholder = [VectorL10n notificationSettingsSenderHint]; _inputTextField.autocorrectionType = UITextAutocorrectionTypeNo; break; default: diff --git a/Riot/Modules/MatrixKit/Views/PushRule/MXKPushRuleTableViewCell.m b/Riot/Modules/MatrixKit/Views/PushRule/MXKPushRuleTableViewCell.m index 221c16c2c..a65174564 100644 --- a/Riot/Modules/MatrixKit/Views/PushRule/MXKPushRuleTableViewCell.m +++ b/Riot/Modules/MatrixKit/Views/PushRule/MXKPushRuleTableViewCell.m @@ -71,7 +71,7 @@ MXRoom *room = [_mxSession roomWithRoomId:mxPushRule.ruleId]; if (room) { - description = [MatrixKitL10n notificationSettingsRoomRuleTitle:room.summary.displayname]; + description = [VectorL10n notificationSettingsRoomRuleTitle:room.summary.displayname]; } break; } @@ -115,20 +115,20 @@ { if (ruleAction.actionType == MXPushRuleActionTypeDontNotify) { - notify = [MatrixKitL10n notificationSettingsNeverNotify]; + notify = [VectorL10n notificationSettingsNeverNotify]; sound = @""; highlight = @""; break; } else if (ruleAction.actionType == MXPushRuleActionTypeNotify || ruleAction.actionType == MXPushRuleActionTypeCoalesce) { - notify = [MatrixKitL10n notificationSettingsAlwaysNotify]; + notify = [VectorL10n notificationSettingsAlwaysNotify]; } else if (ruleAction.actionType == MXPushRuleActionTypeSetTweak) { if ([ruleAction.parameters[@"set_tweak"] isEqualToString:@"sound"]) { - sound = [NSString stringWithFormat:@", %@", [MatrixKitL10n notificationSettingsCustomSound]]; + sound = [NSString stringWithFormat:@", %@", [VectorL10n notificationSettingsCustomSound]]; } else if ([ruleAction.parameters[@"set_tweak"] isEqualToString:@"highlight"]) { @@ -136,7 +136,7 @@ // If not present, highlight. Else check its value before highlighting if (nil == ruleAction.parameters[@"value"] || YES == [ruleAction.parameters[@"value"] boolValue]) { - highlight = [NSString stringWithFormat:@", %@", [MatrixKitL10n notificationSettingsHighlight]]; + highlight = [NSString stringWithFormat:@", %@", [VectorL10n notificationSettingsHighlight]]; } } } diff --git a/Riot/Modules/MatrixKit/Views/RoomInputToolbar/MXKRoomInputToolbarView.m b/Riot/Modules/MatrixKit/Views/RoomInputToolbar/MXKRoomInputToolbarView.m index 4c3924d96..47e9e6909 100644 --- a/Riot/Modules/MatrixKit/Views/RoomInputToolbar/MXKRoomInputToolbarView.m +++ b/Riot/Modules/MatrixKit/Views/RoomInputToolbar/MXKRoomInputToolbarView.m @@ -95,8 +95,8 @@ self.editable = YES; // Localize string - [_rightInputToolbarButton setTitle:[MatrixKitL10n send] forState:UIControlStateNormal]; - [_rightInputToolbarButton setTitle:[MatrixKitL10n send] forState:UIControlStateHighlighted]; + [_rightInputToolbarButton setTitle:[VectorL10n send] forState:UIControlStateNormal]; + [_rightInputToolbarButton setTitle:[VectorL10n send] forState:UIControlStateHighlighted]; validationViews = [NSMutableArray array]; } @@ -142,7 +142,7 @@ { optionsListView = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; - [optionsListView addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n attachMedia] + [optionsListView addAction:[UIAlertAction actionWithTitle:[VectorL10n attachMedia] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -162,7 +162,7 @@ }]]; - [optionsListView addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n captureMedia] + [optionsListView addAction:[UIAlertAction actionWithTitle:[VectorL10n captureMedia] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -195,7 +195,7 @@ optionsListView = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; } - [optionsListView addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n inviteUser] + [optionsListView addAction:[UIAlertAction actionWithTitle:[VectorL10n inviteUser] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -204,10 +204,10 @@ typeof(self) self = weakSelf; // Ask for userId to invite - self->optionsListView = [UIAlertController alertControllerWithTitle:[MatrixKitL10n userIdTitle] message:nil preferredStyle:UIAlertControllerStyleAlert]; + self->optionsListView = [UIAlertController alertControllerWithTitle:[VectorL10n userIdTitle] message:nil preferredStyle:UIAlertControllerStyleAlert]; - [self->optionsListView addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [self->optionsListView addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { if (weakSelf) { @@ -220,11 +220,11 @@ [self->optionsListView addTextFieldWithConfigurationHandler:^(UITextField *textField) { textField.secureTextEntry = NO; - textField.placeholder = [MatrixKitL10n userIdPlaceholder]; + textField.placeholder = [VectorL10n userIdPlaceholder]; }]; - [self->optionsListView addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n invite] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [self->optionsListView addAction:[UIAlertAction actionWithTitle:[VectorL10n invite] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { if (weakSelf) { @@ -256,7 +256,7 @@ if (optionsListView) { - [self->optionsListView addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [self->optionsListView addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { if (weakSelf) { @@ -609,15 +609,15 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) { __weak typeof(self) weakSelf = self; - compressionPrompt = [UIAlertController alertControllerWithTitle:[MatrixKitL10n attachmentSizePromptTitle] - message:[MatrixKitL10n attachmentSizePromptMessage] + compressionPrompt = [UIAlertController alertControllerWithTitle:[VectorL10n attachmentSizePromptTitle] + message:[VectorL10n attachmentSizePromptMessage] preferredStyle:UIAlertControllerStyleActionSheet]; if (compressionSizes.small.fileSize) { NSString *fileSizeString = [MXTools fileSizeToString:compressionSizes.small.fileSize]; - NSString *title = [MatrixKitL10n attachmentSmall:fileSizeString]; + NSString *title = [VectorL10n attachmentSmall:fileSizeString]; [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault @@ -641,7 +641,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) { NSString *fileSizeString = [MXTools fileSizeToString:compressionSizes.medium.fileSize]; - NSString *title = [MatrixKitL10n attachmentMedium:fileSizeString]; + NSString *title = [VectorL10n attachmentMedium:fileSizeString]; [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault @@ -665,7 +665,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) { NSString *fileSizeString = [MXTools fileSizeToString:compressionSizes.large.fileSize]; - NSString *title = [MatrixKitL10n attachmentLarge:fileSizeString]; + NSString *title = [VectorL10n attachmentLarge:fileSizeString]; [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault @@ -687,7 +687,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) NSString *fileSizeString = [MXTools fileSizeToString:compressionSizes.original.fileSize]; - NSString *title = [MatrixKitL10n attachmentOriginal:fileSizeString]; + NSString *title = [VectorL10n attachmentOriginal:fileSizeString]; [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault @@ -705,7 +705,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) }]]; - [compressionPrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [compressionPrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -838,15 +838,15 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) && (fileSizes.small || fileSizes.medium || fileSizes.large)) { // Ask the user for the compression value - compressionPrompt = [UIAlertController alertControllerWithTitle:[MatrixKitL10n attachmentSizePromptTitle] - message:[MatrixKitL10n attachmentSizePromptMessage] + compressionPrompt = [UIAlertController alertControllerWithTitle:[VectorL10n attachmentSizePromptTitle] + message:[VectorL10n attachmentSizePromptMessage] preferredStyle:UIAlertControllerStyleActionSheet]; __weak typeof(self) weakSelf = self; if (fileSizes.small) { - NSString *title = [MatrixKitL10n attachmentSmall:[MXTools fileSizeToString:fileSizes.small]]; + NSString *title = [VectorL10n attachmentSmall:[MXTools fileSizeToString:fileSizes.small]]; [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault @@ -866,7 +866,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) if (fileSizes.medium) { - NSString *title = [MatrixKitL10n attachmentMedium:[MXTools fileSizeToString:fileSizes.medium]]; + NSString *title = [VectorL10n attachmentMedium:[MXTools fileSizeToString:fileSizes.medium]]; [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault @@ -886,7 +886,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) if (fileSizes.large) { - NSString *title = [MatrixKitL10n attachmentLarge:[MXTools fileSizeToString:fileSizes.large]]; + NSString *title = [VectorL10n attachmentLarge:[MXTools fileSizeToString:fileSizes.large]]; [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault @@ -904,7 +904,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) }]]; } - NSString *title = [MatrixKitL10n attachmentOriginal:[MXTools fileSizeToString:fileSizes.original]]; + NSString *title = [VectorL10n attachmentOriginal:[MXTools fileSizeToString:fileSizes.original]]; [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault @@ -921,7 +921,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) }]]; - [compressionPrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [compressionPrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -1040,7 +1040,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) imageValidationView.stretchable = YES; // the user validates the image - [imageValidationView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) + [imageValidationView setRightButtonTitle:[VectorL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { if (weakSelf) { @@ -1066,7 +1066,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) }]; // the user wants to use an other image - [imageValidationView setLeftButtonTitle:[MatrixKitL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) + [imageValidationView setLeftButtonTitle:[VectorL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) { if (weakSelf) { @@ -1201,7 +1201,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) imageValidationView.stretchable = YES; // the user validates the image - [imageValidationView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) + [imageValidationView setRightButtonTitle:[VectorL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { if (weakSelf) { @@ -1212,7 +1212,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) }]; // the user wants to use an other image - [imageValidationView setLeftButtonTitle:[MatrixKitL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) + [imageValidationView setLeftButtonTitle:[VectorL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) { // Dismiss the image validation view. if (weakSelf) @@ -1254,7 +1254,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) videoValidationView.stretchable = YES; // the user validates the image - [videoValidationView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) + [videoValidationView setRightButtonTitle:[VectorL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { if (weakSelf) { @@ -1266,7 +1266,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) }]; // the user wants to use an other image - [videoValidationView setLeftButtonTitle:[MatrixKitL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) + [videoValidationView setLeftButtonTitle:[VectorL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) { // Dismiss the video validation view. if (weakSelf) @@ -1304,7 +1304,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) docValidationView.stretchable = YES; // the user validates the image - [docValidationView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) + [docValidationView setRightButtonTitle:[VectorL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { if (weakSelf) { @@ -1316,7 +1316,7 @@ NSString* MXKFileSizes_description(MXKFileSizes sizes) }]; // the user wants to use an other image - [docValidationView setLeftButtonTitle:[MatrixKitL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) + [docValidationView setLeftButtonTitle:[VectorL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) { // Dismiss the validation view. if (weakSelf) diff --git a/Riot/Modules/MatrixKit/Views/RoomList/MXKPublicRoomTableViewCell.m b/Riot/Modules/MatrixKit/Views/RoomList/MXKPublicRoomTableViewCell.m index d6321f100..eaf7d0b90 100644 --- a/Riot/Modules/MatrixKit/Views/RoomList/MXKPublicRoomTableViewCell.m +++ b/Riot/Modules/MatrixKit/Views/RoomList/MXKPublicRoomTableViewCell.m @@ -41,11 +41,11 @@ // Set member count if (publicRoom.numJoinedMembers > 1) { - _memberCount.text = [MatrixKitL10n numMembersOther:@(publicRoom.numJoinedMembers).stringValue]; + _memberCount.text = [VectorL10n numMembersOther:@(publicRoom.numJoinedMembers).stringValue]; } else if (publicRoom.numJoinedMembers == 1) { - _memberCount.text = [MatrixKitL10n numMembersOne:@(1).stringValue]; + _memberCount.text = [VectorL10n numMembersOne:@(1).stringValue]; } else { diff --git a/Riot/Modules/MatrixKit/Views/RoomMemberList/MXKRoomMemberTableViewCell.m b/Riot/Modules/MatrixKit/Views/RoomMemberList/MXKRoomMemberTableViewCell.m index d312f27c1..4bf68852f 100644 --- a/Riot/Modules/MatrixKit/Views/RoomMemberList/MXKRoomMemberTableViewCell.m +++ b/Riot/Modules/MatrixKit/Views/RoomMemberList/MXKRoomMemberTableViewCell.m @@ -116,7 +116,7 @@ if (memberCellData.roomMember.membership == MXMembershipLeave || memberCellData.roomMember.membership == MXMembershipBan) { self.backgroundColor = [UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:1.0]; - presenceText = (memberCellData.roomMember.membership == MXMembershipLeave) ? [MatrixKitL10n membershipLeave] : [MatrixKitL10n membershipBan]; + presenceText = (memberCellData.roomMember.membership == MXMembershipLeave) ? [VectorL10n membershipLeave] : [VectorL10n membershipBan]; } else { @@ -126,7 +126,7 @@ if (memberCellData.roomMember.membership == MXMembershipInvite) { thumbnailBorderColor = [UIColor lightGrayColor]; - presenceText = [MatrixKitL10n membershipInvite]; + presenceText = [VectorL10n membershipInvite]; } else { @@ -218,7 +218,7 @@ { case MXPresenceOffline: { - lastActiveTime = [MatrixKitL10n offline]; + lastActiveTime = [VectorL10n offline]; break; } case MXPresenceUnknown: diff --git a/Riot/Modules/MatrixKit/Views/RoomTitle/MXKRoomTitleView.m b/Riot/Modules/MatrixKit/Views/RoomTitle/MXKRoomTitleView.m index 5ea74fc37..a3893141e 100644 --- a/Riot/Modules/MatrixKit/Views/RoomTitle/MXKRoomTitleView.m +++ b/Riot/Modules/MatrixKit/Views/RoomTitle/MXKRoomTitleView.m @@ -86,7 +86,7 @@ } else { - self.displayNameTextField.text = [MatrixKitL10n roomPleaseSelect]; + self.displayNameTextField.text = [VectorL10n roomPleaseSelect]; self.displayNameTextField.enabled = NO; } self.displayNameTextField.hidden = NO; @@ -180,7 +180,7 @@ } else { - alertMsg = [MatrixKitL10n roomErrorNameEditionNotAuthorized]; + alertMsg = [VectorL10n roomErrorNameEditionNotAuthorized]; } } @@ -195,7 +195,7 @@ currentAlert = [UIAlertController alertControllerWithTitle:nil message:alertMsg preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/MatrixKit/Views/RoomTitle/MXKRoomTitleViewWithTopic.m b/Riot/Modules/MatrixKit/Views/RoomTitle/MXKRoomTitleViewWithTopic.m index c568f7eff..b4dc7d4e1 100644 --- a/Riot/Modules/MatrixKit/Views/RoomTitle/MXKRoomTitleViewWithTopic.m +++ b/Riot/Modules/MatrixKit/Views/RoomTitle/MXKRoomTitleViewWithTopic.m @@ -372,7 +372,7 @@ } else { - alertMsg = [MatrixKitL10n roomErrorNameEditionNotAuthorized]; + alertMsg = [VectorL10n roomErrorNameEditionNotAuthorized]; } // Check whether the user is allowed to change room topic @@ -401,7 +401,7 @@ } else { - alertMsg = [MatrixKitL10n roomErrorTopicEditionNotAuthorized]; + alertMsg = [VectorL10n roomErrorTopicEditionNotAuthorized]; } } @@ -415,7 +415,7 @@ } currentAlert = [UIAlertController alertControllerWithTitle:nil message:alertMsg preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/MediaPicker/Library/MediaAlbumContentViewController.m b/Riot/Modules/MediaPicker/Library/MediaAlbumContentViewController.m index 440aeb027..d3aa009e3 100644 --- a/Riot/Modules/MediaPicker/Library/MediaAlbumContentViewController.m +++ b/Riot/Modules/MediaPicker/Library/MediaAlbumContentViewController.m @@ -348,7 +348,7 @@ selectedAssets = [NSMutableArray array]; // Update the nav buttons - self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[MatrixKitL10n send] style:UIBarButtonItemStylePlain target:self action:@selector(onSelectionSend:)]; + self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[VectorL10n send] style:UIBarButtonItemStylePlain target:self action:@selector(onSelectionSend:)]; self.navigationItem.rightBarButtonItem.enabled = NO; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onSelectionCancel:)]; } diff --git a/Riot/Modules/MediaPicker/MediaPickerViewController.m b/Riot/Modules/MediaPicker/MediaPickerViewController.m index 8905b926b..b2e2ddc61 100644 --- a/Riot/Modules/MediaPicker/MediaPickerViewController.m +++ b/Riot/Modules/MediaPicker/MediaPickerViewController.m @@ -263,7 +263,7 @@ message:message preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { [self.delegate mediaPickerControllerDidCancel:self]; @@ -271,7 +271,7 @@ NSURL *settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n settings] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n settings] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [UIApplication.sharedApplication openURL:settingsURL options:@{} completionHandler:^(BOOL success) { @@ -645,7 +645,7 @@ validationView.stretchable = YES; // the user validates the image - [validationView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { + [validationView setRightButtonTitle:[VectorL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { __strong __typeof(weakSelf)strongSelf = weakSelf; // Dismiss the image view @@ -655,7 +655,7 @@ }]; // the user wants to use an other image - [validationView setLeftButtonTitle:[MatrixKitL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) { + [validationView setLeftButtonTitle:[VectorL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) { __strong __typeof(weakSelf)strongSelf = weakSelf; // dismiss the image view @@ -684,7 +684,7 @@ validationView.stretchable = NO; // the user validates the image - [validationView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { + [validationView setRightButtonTitle:[VectorL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) { __strong __typeof(weakSelf)strongSelf = weakSelf; // Dismiss the image view @@ -694,7 +694,7 @@ }]; // the user wants to use an other image - [validationView setLeftButtonTitle:[MatrixKitL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) { + [validationView setLeftButtonTitle:[VectorL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) { __strong __typeof(weakSelf)strongSelf = weakSelf; // dismiss the image view diff --git a/Riot/Modules/Onboarding/OnboardingCoordinator.swift b/Riot/Modules/Onboarding/OnboardingCoordinator.swift index dd7f088e7..94182fa56 100644 --- a/Riot/Modules/Onboarding/OnboardingCoordinator.swift +++ b/Riot/Modules/Onboarding/OnboardingCoordinator.swift @@ -56,11 +56,19 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { } // Keep a strong ref as we need to init authVC early to preload its view private let authenticationCoordinator: AuthenticationCoordinatorProtocol + /// A boolean to prevent authentication being shown when already in progress. private var isShowingAuthentication = false // MARK: Screen results private var splashScreenResult: OnboardingSplashScreenViewModelResult? private var useCaseResult: OnboardingUseCaseViewModelResult? + private var authenticationType: MXKAuthenticationType? + private var session: MXSession? + + /// Whether all of the onboarding steps have been completed or not. `false` if there are more screens to be shown. + private var onboardingFinished = false + /// Whether authentication is complete. `true` once authenticated, verified and the app is ready to be shown. + private var authenticationFinished = false // MARK: Public @@ -74,7 +82,7 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { self.parameters = parameters // Preload the authVC (it is *really* slow to load in realtime) - let authenticationParameters = AuthenticationCoordinatorParameters(navigationRouter: parameters.router) + let authenticationParameters = AuthenticationCoordinatorParameters(navigationRouter: parameters.router, canPresentAdditionalScreens: false) authenticationCoordinator = AuthenticationCoordinator(parameters: authenticationParameters) super.init() @@ -115,11 +123,13 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { return authenticationCoordinator.continueSSOLogin(withToken: loginToken, transactionID: transactionID) } - // MARK: - Private + // MARK: - Pre-Authentication @available(iOS 14.0, *) /// Show the onboarding splash screen as the root module in the flow. private func showSplashScreen() { + MXLog.debug("[OnboardingCoordinator] showSplashScreen") + let coordinator = OnboardingSplashScreenCoordinator() coordinator.completion = { [weak self, weak coordinator] result in guard let self = self, let coordinator = coordinator else { return } @@ -129,7 +139,7 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { coordinator.start() add(childCoordinator: coordinator) - self.navigationRouter.setRootModule(coordinator, popCompletion: nil) + navigationRouter.setRootModule(coordinator, popCompletion: nil) } @available(iOS 14.0, *) @@ -138,8 +148,7 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { splashScreenResult = result // Set the auth type early to allow network requests to finish during display of the use case screen. - let mxkAuthenticationType = splashScreenResult == .register ? MXKAuthenticationTypeRegister : MXKAuthenticationTypeLogin - authenticationCoordinator.update(authenticationType: mxkAuthenticationType) + authenticationCoordinator.update(authenticationType: result.mxkAuthenticationType) switch result { case .register: @@ -152,6 +161,8 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { @available(iOS 14.0, *) /// Show the use case screen for new users. private func showUseCaseSelectionScreen() { + MXLog.debug("[OnboardingCoordinator] showUseCaseSelectionScreen") + let coordinator = OnboardingUseCaseSelectionCoordinator() coordinator.completion = { [weak self, weak coordinator] result in guard let self = self, let coordinator = coordinator else { return } @@ -161,10 +172,10 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { coordinator.start() add(childCoordinator: coordinator) - if self.navigationRouter.modules.isEmpty { - self.navigationRouter.setRootModule(coordinator, popCompletion: nil) + if navigationRouter.modules.isEmpty { + navigationRouter.setRootModule(coordinator, popCompletion: nil) } else { - self.navigationRouter.push(coordinator, animated: true) { [weak self] in + navigationRouter.push(coordinator, animated: true) { [weak self] in self?.remove(childCoordinator: coordinator) } } @@ -176,6 +187,8 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { showAuthenticationScreen() } + // MARK: - Authentication + /// Show the authentication screen. Any parameters that have been set in previous screens are be applied. private func showAuthenticationScreen() { guard !isShowingAuthentication else { return } @@ -187,10 +200,10 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { guard let self = self, let coordinator = coordinator else { return } switch result { - case .didLogin(let session): - self.authenticationCoordinator(coordinator, didLoginWith: session) - case .didComplete(let authenticationType): - self.authenticationCoordinator(coordinator, didCompleteWith: authenticationType) + case .didLogin(let session, let authenticationType): + self.authenticationCoordinator(coordinator, didLoginWith: session, and: authenticationType) + case .didComplete: + self.authenticationCoordinatorDidComplete(coordinator) } } @@ -217,10 +230,10 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { coordinator.updateHomeserver(customHomeserver, andIdentityServer: customIdentityServer) } - if self.navigationRouter.modules.isEmpty { - self.navigationRouter.setRootModule(coordinator, popCompletion: nil) + if navigationRouter.modules.isEmpty { + navigationRouter.setRootModule(coordinator, popCompletion: nil) } else { - self.navigationRouter.push(coordinator, animated: true) { [weak self] in + navigationRouter.push(coordinator, animated: true) { [weak self] in self?.remove(childCoordinator: coordinator) self?.isShowingAuthentication = false } @@ -228,18 +241,38 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { isShowingAuthentication = true } - private func authenticationCoordinator(_ coordinator: AuthenticationCoordinatorProtocol, didLoginWith session: MXSession) { - // TODO: Show next screens whilst waiting for the everything to load. + /// Displays the next view in the flow after the authentication screen, + /// whilst crypto and the rest of the app is launching in the background. + private func authenticationCoordinator(_ coordinator: AuthenticationCoordinatorProtocol, + didLoginWith session: MXSession, + and authenticationType: MXKAuthenticationType) { + self.session = session + self.authenticationType = authenticationType + // May need to move the spinner and key verification up to here in order to coordinate properly. + + // Check whether another screen should be shown. + if #available(iOS 14.0, *) { + if authenticationType == .register, let userId = session.credentials.userId, BuildSettings.onboardingShowAccountPersonalisation { + showCongratulationsScreen(userId: userId) + return + } else if Analytics.shared.shouldShowAnalyticsPrompt { + showAnalyticsPrompt(for: session) + return + } + } + + // Otherwise onboarding is finished. + onboardingFinished = true + completeIfReady() } /// Displays the next view in the flow after the authentication screen. - private func authenticationCoordinator(_ coordinator: AuthenticationCoordinatorProtocol, didCompleteWith authenticationType: MXKAuthenticationType) { - completion?() + private func authenticationCoordinatorDidComplete(_ coordinator: AuthenticationCoordinatorProtocol) { isShowingAuthentication = false // Handle the chosen use case where applicable - if authenticationType == MXKAuthenticationTypeRegister, + if authenticationType == .register, let useCase = useCaseResult?.userSessionPropertyValue, let userSession = UserSessionsService.shared.mainUserSession { // Store the value in the user's session @@ -248,6 +281,112 @@ final class OnboardingCoordinator: NSObject, OnboardingCoordinatorProtocol { // Update the analytics user properties with the use case Analytics.shared.updateUserProperties(ftueUseCase: useCase) } + + // This method is only called when the app is ready so we can complete if finished + authenticationFinished = true + completeIfReady() + } + + // MARK: - Post-Authentication + + @available(iOS 14.0, *) + private func showCongratulationsScreen(userId: String) { + MXLog.debug("[OnboardingCoordinator] showCongratulationsScreen") + + let parameters = OnboardingCongratulationsCoordinatorParameters(userId: userId) + let coordinator = OnboardingCongratulationsCoordinator(parameters: parameters) + + coordinator.completion = { [weak self, weak coordinator] result in + guard let self = self, let coordinator = coordinator else { return } + self.congratulationsCoordinator(coordinator, didCompleteWith: result) + } + + add(childCoordinator: coordinator) + coordinator.start() + + // Navigating back doesn't make any sense now, so replace the whole stack. + navigationRouter.setRootModule(coordinator, hideNavigationBar: true, animated: true) { [weak self] in + self?.remove(childCoordinator: coordinator) + } + } + + @available(iOS 14.0, *) + private func congratulationsCoordinator(_ coordinator: OnboardingCongratulationsCoordinator, didCompleteWith result: OnboardingCongratulationsViewModelResult) { + if let session = session { + switch result { + case .personaliseProfile: + // TODO: Profile screens here instead. + if Analytics.shared.shouldShowAnalyticsPrompt { + showAnalyticsPrompt(for: session) + return + } + case .takeMeHome: + if Analytics.shared.shouldShowAnalyticsPrompt { + showAnalyticsPrompt(for: session) + return + } + } + } + + onboardingFinished = true + completeIfReady() + } + + @available(iOS 14.0, *) + private func showAnalyticsPrompt(for session: MXSession) { + MXLog.debug("[OnboardingCoordinator]: Invite the user to send analytics") + + let parameters = AnalyticsPromptCoordinatorParameters(session: session) + let coordinator = AnalyticsPromptCoordinator(parameters: parameters) + + coordinator.completion = { [weak self, weak coordinator] in + guard let self = self, let coordinator = coordinator else { return } + self.analyticsPromptCoordinatorDidComplete(coordinator) + } + + add(childCoordinator: coordinator) + coordinator.start() + + // TODO: Re-asses replacing the stack based on the previous screen once the whole flow is implemented + navigationRouter.setRootModule(coordinator, hideNavigationBar: true, animated: true) { [weak self] in + self?.remove(childCoordinator: coordinator) + } + } + + private func analyticsPromptCoordinatorDidComplete(_ coordinator: AnalyticsPromptCoordinator) { + onboardingFinished = true + completeIfReady() + } + + // MARK: - Finished + + private func completeIfReady() { + guard onboardingFinished else { + MXLog.debug("[OnboardingCoordinator] Delaying onboarding completion until all screens have been shown.") + return + } + + guard authenticationFinished else { + MXLog.debug("[OnboardingCoordinator] Allowing AuthenticationCoordinator to display any remaining screens.") + authenticationCoordinator.presentPendingScreensIfNecessary() + return + } + + completion?() + } +} + +// MARK: - Helpers + +extension OnboardingSplashScreenViewModelResult { + /// The result converted into the MatrixKit authentication type to use. + var mxkAuthenticationType: MXKAuthenticationType { + switch self { + case .login: + return .login + case .register: + return .register + } } } diff --git a/Riot/Modules/People/InviteFriendsPresenter.swift b/Riot/Modules/People/InviteFriendsPresenter.swift index 8f6f9f8b6..e86c57aae 100644 --- a/Riot/Modules/People/InviteFriendsPresenter.swift +++ b/Riot/Modules/People/InviteFriendsPresenter.swift @@ -74,6 +74,6 @@ final class InviteFriendsPresenter: NSObject { self.presentingViewController?.present(viewController, animated: animated, completion: nil) - Analytics.shared.trackScreen(.inviteFriends, duration: nil) + AnalyticsScreenTracker.trackScreen(.inviteFriends) } } diff --git a/Riot/Modules/People/PeopleViewController.m b/Riot/Modules/People/PeopleViewController.m index 028ec8eef..0411cc9f1 100644 --- a/Riot/Modules/People/PeopleViewController.m +++ b/Riot/Modules/People/PeopleViewController.m @@ -26,7 +26,7 @@ #import "GeneratedInterface-Swift.h" -@interface PeopleViewController () +@interface PeopleViewController () { NSInteger directRoomsSectionNumber; RecentsDataSource *recentsDataSource; @@ -52,7 +52,7 @@ directRoomsSectionNumber = 0; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenPeople]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenPeople]; self.tableViewPaginationThrottler = [[MXThrottler alloc] initWithMinimumDelay:0.1]; } @@ -83,31 +83,18 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - - [AppDelegate theDelegate].masterTabBarController.navigationItem.title = [VectorL10n titlePeople]; [AppDelegate theDelegate].masterTabBarController.tabBar.tintColor = ThemeService.shared.theme.tintColor; if ([self.dataSource isKindOfClass:RecentsDataSource.class]) { // Take the lead on the shared data source. recentsDataSource = (RecentsDataSource*)self.dataSource; - recentsDataSource.areSectionsShrinkable = NO; [recentsDataSource setDelegate:self andRecentsDataSourceMode:RecentsDataSourceModePeople]; } } #pragma mark - UITableView delegate -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section -{ - return 0.0; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section -{ - return nil; -} - - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if ([super respondsToSelector:@selector(tableView:willDisplayCell:forRowAtIndexPath:)]) @@ -194,4 +181,11 @@ }]; } +#pragma mark - MasterTabBarItemDisplayProtocol + +- (NSString *)masterTabBarItemTitle +{ + return [VectorL10n titlePeople]; +} + @end diff --git a/Riot/Modules/People/Views/InviteRecentTableViewCell.h b/Riot/Modules/People/Views/InviteRecentTableViewCell.h index f3fe96891..bd45d4364 100644 --- a/Riot/Modules/People/Views/InviteRecentTableViewCell.h +++ b/Riot/Modules/People/Views/InviteRecentTableViewCell.h @@ -53,7 +53,4 @@ extern NSString *const kInviteRecentTableViewCellRoomKey; @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *leftButtonActivityIndicator; @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *rightButtonActivityIndicator; -@property (weak, nonatomic) IBOutlet UIView *noticeBadgeView; - - @end diff --git a/Riot/Modules/People/Views/InviteRecentTableViewCell.m b/Riot/Modules/People/Views/InviteRecentTableViewCell.m index d0ab6a9e3..ea71c2513 100644 --- a/Riot/Modules/People/Views/InviteRecentTableViewCell.m +++ b/Riot/Modules/People/Views/InviteRecentTableViewCell.m @@ -49,9 +49,7 @@ NSString *const kInviteRecentTableViewCellRoomKey = @"kInviteRecentTableViewCell self.rightButton.clipsToBounds = YES; [self.rightButton setTitle:[VectorL10n accept] forState:UIControlStateNormal]; [self.rightButton addTarget:self action:@selector(onRightButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; - - [self.noticeBadgeView.layer setCornerRadius:10]; - + self.selectionStyle = UITableViewCellSelectionStyleNone; } @@ -61,8 +59,6 @@ NSString *const kInviteRecentTableViewCellRoomKey = @"kInviteRecentTableViewCell self.leftButton.backgroundColor = ThemeService.shared.theme.tintColor; self.rightButton.backgroundColor = ThemeService.shared.theme.tintColor; - - self.noticeBadgeView.backgroundColor = ThemeService.shared.theme.noticeColor; } - (void)prepareForReuse diff --git a/Riot/Modules/People/Views/InviteRecentTableViewCell.xib b/Riot/Modules/People/Views/InviteRecentTableViewCell.xib index 45a40d9e0..5911b2ba0 100644 --- a/Riot/Modules/People/Views/InviteRecentTableViewCell.xib +++ b/Riot/Modules/People/Views/InviteRecentTableViewCell.xib @@ -1,9 +1,9 @@ - + - + @@ -89,25 +89,6 @@ - - - - - - - - - - - - - - - + diff --git a/Riot/Modules/Room/RoomViewController.h b/Riot/Modules/Room/RoomViewController.h index d55354979..1513bafb5 100644 --- a/Riot/Modules/Room/RoomViewController.h +++ b/Riot/Modules/Room/RoomViewController.h @@ -234,6 +234,30 @@ canEditPollWithEventIdentifier:(NSString *)eventIdentifier; - (void)roomViewController:(RoomViewController *)roomViewController didRequestEditForPollWithStartEvent:(MXEvent *)startEvent; +/** + Checks whether the delegate supports handling of activity indicators + + Note: This is a transition API whilst `RoomViewController` contains legacy activity indicators + as well as using a newer user interaction presenters. + */ +- (BOOL)roomViewControllerCanDelegateUserIndicators:(RoomViewController *)roomViewController; + +/** + Indicate to the delegate that loading should start + + Note: Only called if the controller can delegate user indicators rather than managing + loading indicators internally + */ +- (void)roomViewControllerDidStartLoading:(RoomViewController *)roomViewController; + +/** + Indicate to the delegate that loading should stop + + Note: Only called if the controller can delegate user indicators rather than managing + loading indicators internally + */ +- (void)roomViewControllerDidStopLoading:(RoomViewController *)roomViewController; + @end NS_ASSUME_NONNULL_END diff --git a/Riot/Modules/Room/RoomViewController.m b/Riot/Modules/Room/RoomViewController.m index 331c07ba4..8288c6f81 100644 --- a/Riot/Modules/Room/RoomViewController.m +++ b/Riot/Modules/Room/RoomViewController.m @@ -216,7 +216,6 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; @property (nonatomic, weak) IBOutlet UIView *userSuggestionContainerView; @property (nonatomic, readwrite) RoomDisplayConfiguration *displayConfiguration; -@property (nonatomic) AnalyticsScreenTimer *screenTimer; // When layout of the screen changes (e.g. height), we no longer know whether // to autoscroll to the bottom again or not. Instead we need to capture the @@ -321,8 +320,6 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; _voiceMessageController = [[VoiceMessageController alloc] initWithThemeService:ThemeService.shared mediaServiceProvider:VoiceMessageMediaServiceProvider.sharedProvider]; self.voiceMessageController.delegate = self; - - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenRoom]; } - (void)viewDidLoad @@ -570,12 +567,24 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; isAppeared = NO; [VoiceMessageMediaServiceProvider.sharedProvider pauseAllServices]; + [self stopActivityIndicator]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; + // Screen tracking + MXRoomSummary *summary = [self.mainSession roomWithRoomId:self.roomDataSource.roomId].summary; + if (!summary || !summary.isJoined) + { + [AnalyticsScreenTracker trackScreen: AnalyticsScreenRoomPreview]; + } + else + { + [AnalyticsScreenTracker trackScreen: AnalyticsScreenRoom]; + } + isAppeared = YES; [self checkReadMarkerVisibility]; @@ -620,9 +629,6 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; hasJitsiCall = NO; [self reloadBubblesTable:YES]; } - - // Screen tracking - [self.screenTimer start]; } - (void)viewDidDisappear:(BOOL)animated @@ -658,8 +664,6 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; hasJitsiCall = YES; [self reloadBubblesTable:YES]; } - - [self.screenTimer stop]; } - (void)viewWillLayoutSubviews { @@ -931,6 +935,18 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; self.updateRoomReadMarker = NO; } +- (BOOL)providesCustomActivityIndicator { + return [self.delegate roomViewControllerCanDelegateUserIndicators:self]; +} + +- (void)startActivityIndicator { + if ([self providesCustomActivityIndicator]) { + [self.delegate roomViewControllerDidStartLoading:self]; + } else { + [super startActivityIndicator]; + } +} + - (void)stopActivityIndicator { if (notificationTaskProfile) @@ -939,8 +955,13 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; [MXSDKOptions.sharedInstance.profiler stopMeasuringTaskWithProfile:notificationTaskProfile]; notificationTaskProfile = nil; } - - [super stopActivityIndicator]; + if ([self providesCustomActivityIndicator]) { + if ([self canStopActivityIndicator]) { + [self.delegate roomViewControllerDidStopLoading:self]; + } + } else { + [super stopActivityIndicator]; + } } - (void)displayRoom:(MXKRoomDataSource *)dataSource @@ -1066,15 +1087,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; self.jumpToLastUnreadBannerContainer.hidden = YES; [super leaveRoomOnEvent:event]; - - if (self.delegate) - { - [self.delegate roomViewControllerDidLeaveRoom:self]; - } - else - { - [[AppDelegate theDelegate] restoreInitialDisplay:nil]; - } + [self notifyDelegateOnLeaveRoomIfNecessary]; } // Set the input toolbar according to the current display @@ -1254,33 +1267,69 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; - (void)sendTextMessage:(NSString*)msgTxt { - if (self.inputToolBarSendMode == RoomInputToolbarViewSendModeReply && customizedRoomDataSource.selectedEventId) + // The event modified is always fetch from the actual data source + MXEvent *eventModified = [self.roomDataSource eventWithEventId:customizedRoomDataSource.selectedEventId]; + + // In the case the event is a reply or and edit, and it's done on a non-live timeline + // we have to fetch live timeline in order to display the event properly + [self setupRoomDataSourceToResolveEvent:^(MXKRoomDataSource *roomDataSource) { + if (self.inputToolBarSendMode == RoomInputToolbarViewSendModeReply && eventModified) + { + [roomDataSource sendReplyToEvent:eventModified withTextMessage:msgTxt success:nil failure:^(NSError *error) { + // Just log the error. The message will be displayed in red in the room history + MXLogDebug(@"[MXKRoomViewController] sendTextMessage failed."); + }]; + } + else if (self.inputToolBarSendMode == RoomInputToolbarViewSendModeEdit && eventModified) + { + [roomDataSource replaceTextMessageForEvent:eventModified withTextMessage:msgTxt success:nil failure:^(NSError *error) { + // Just log the error. The message will be displayed in red + MXLogDebug(@"[MXKRoomViewController] sendTextMessage failed."); + }]; + } + else + { + // Let the datasource send it and manage the local echo + [roomDataSource sendTextMessage:msgTxt success:nil failure:^(NSError *error) + { + // Just log the error. The message will be displayed in red in the room history + MXLogDebug(@"[MXKRoomViewController] sendTextMessage failed."); + }]; + } + + if (self->customizedRoomDataSource.selectedEventId) + { + [self cancelEventSelection]; + } + }]; +} + +- (void)setupRoomDataSourceToResolveEvent: (void (^)(MXKRoomDataSource *roomDataSource))onComplete +{ + // If the event occur on timeline not live, use the live data source to resolve event + BOOL isLive = self.roomDataSource.isLive; + if (!isLive) { - [self.roomDataSource sendReplyToEventWithId:customizedRoomDataSource.selectedEventId withTextMessage:msgTxt success:nil failure:^(NSError *error) { - // Just log the error. The message will be displayed in red in the room history - MXLogDebug(@"[MXKRoomViewController] sendTextMessage failed."); - }]; - } - else if (self.inputToolBarSendMode == RoomInputToolbarViewSendModeEdit && customizedRoomDataSource.selectedEventId) - { - [self.roomDataSource replaceTextMessageForEventWithId:customizedRoomDataSource.selectedEventId withTextMessage:msgTxt success:nil failure:^(NSError *error) { - // Just log the error. The message will be displayed in red - MXLogDebug(@"[MXKRoomViewController] sendTextMessage failed."); - }]; + if (self.roomDataSourceLive == nil) + { + MXKRoomDataSourceManager *roomDataSourceManager = [MXKRoomDataSourceManager sharedManagerForMatrixSession:self.mainSession]; + + [roomDataSourceManager roomDataSourceForRoom:self.roomDataSource.roomId + create:YES + onComplete:^(MXKRoomDataSource *roomDataSource) { + self.roomDataSourceLive = roomDataSource; + [self.roomDataSourceLive finalizeInitialization]; + onComplete(self.roomDataSourceLive); + }]; + } + else + { + onComplete(self.roomDataSourceLive); + } } else { - // Let the datasource send it and manage the local echo - [self.roomDataSource sendTextMessage:msgTxt success:nil failure:^(NSError *error) - { - // Just log the error. The message will be displayed in red in the room history - MXLogDebug(@"[MXKRoomViewController] sendTextMessage failed."); - }]; - } - - if (customizedRoomDataSource.selectedEventId) - { - [self cancelEventSelection]; + onComplete(self.roomDataSource); } } @@ -2088,7 +2137,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; message:alertMessage preferredStyle:UIAlertControllerStyleAlert]; - [installPrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n no] + [installPrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n no] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -2097,7 +2146,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; }]]; - [installPrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n yes] + [installPrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n yes] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -2192,16 +2241,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; [self.roomDataSource.room leave:^{ [self stopActivityIndicator]; - - // We remove the current view controller. - if (self.delegate) - { - [self.delegate roomViewControllerDidLeaveRoom:self]; - } - else - { - [[AppDelegate theDelegate] restoreInitialDisplay:^{}]; - } + [self notifyDelegateOnLeaveRoomIfNecessary]; } failure:^(NSError *error) { @@ -2211,6 +2251,22 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; }]; } +- (void)notifyDelegateOnLeaveRoomIfNecessary { + if (self.delegate) + { + // Leaving room often triggers multiple events, incl local delegate callbacks as well as global notifications, + // which may lead to multiple identical UI changes (navigating to home, displaying notification etc). + // To avoid this, as soon as we notify the delegate the first time, we nilify it, preventing future messages + // from being passed along, assuming that after leaving a room there is nothing else to communicate to the delegate. + [self.delegate roomViewControllerDidLeaveRoom:self]; + self.delegate = nil; + } + else + { + [[AppDelegate theDelegate] restoreInitialDisplay:^{}]; + } +} + - (void)roomPreviewDidTapCancelAction { // Decline this invitation = leave this page @@ -3225,14 +3281,14 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; [self showReactionHistoryForEventId:tappedEventId animated:YES]; } } - else if ([actionIdentifier isEqualToString:RoomDirectCallStatusBubbleCell.callBackAction]) + else if ([actionIdentifier isEqualToString:RoomDirectCallStatusCell.callBackAction]) { MXEvent *callInviteEvent = userInfo[kMXKRoomBubbleCellEventKey]; MXCallInviteEventContent *eventContent = [MXCallInviteEventContent modelFromJSON:callInviteEvent.content]; [self placeCallWithVideo2:eventContent.isVideoCall]; } - else if ([actionIdentifier isEqualToString:RoomDirectCallStatusBubbleCell.declineAction]) + else if ([actionIdentifier isEqualToString:RoomDirectCallStatusCell.declineAction]) { MXEvent *callInviteEvent = userInfo[kMXKRoomBubbleCellEventKey]; MXCallInviteEventContent *eventContent = [MXCallInviteEventContent modelFromJSON:callInviteEvent.content]; @@ -3240,7 +3296,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; MXCall *call = [self.mainSession.callManager callWithCallId:eventContent.callId]; [call hangup]; } - else if ([actionIdentifier isEqualToString:RoomDirectCallStatusBubbleCell.answerAction]) + else if ([actionIdentifier isEqualToString:RoomDirectCallStatusCell.answerAction]) { MXEvent *callInviteEvent = userInfo[kMXKRoomBubbleCellEventKey]; MXCallInviteEventContent *eventContent = [MXCallInviteEventContent modelFromJSON:callInviteEvent.content]; @@ -3248,7 +3304,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; MXCall *call = [self.mainSession.callManager callWithCallId:eventContent.callId]; [call answer]; } - else if ([actionIdentifier isEqualToString:RoomDirectCallStatusBubbleCell.endCallAction]) + else if ([actionIdentifier isEqualToString:RoomDirectCallStatusCell.endCallAction]) { MXEvent *callInviteEvent = userInfo[kMXKRoomBubbleCellEventKey]; MXCallInviteEventContent *eventContent = [MXCallInviteEventContent modelFromJSON:callInviteEvent.content]; @@ -3256,15 +3312,15 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; MXCall *call = [self.mainSession.callManager callWithCallId:eventContent.callId]; [call hangup]; } - else if ([actionIdentifier isEqualToString:RoomGroupCallStatusBubbleCell.joinAction] || - [actionIdentifier isEqualToString:RoomGroupCallStatusBubbleCell.answerAction]) + else if ([actionIdentifier isEqualToString:RoomGroupCallStatusCell.joinAction] || + [actionIdentifier isEqualToString:RoomGroupCallStatusCell.answerAction]) { MXWeakify(self); // Check app permissions first [MXKTools checkAccessForCall:YES - manualChangeMessageForAudio:[MatrixKitL10n microphoneAccessNotGrantedForCall:AppInfo.current.displayName] - manualChangeMessageForVideo:[MatrixKitL10n cameraAccessNotGrantedForCall:AppInfo.current.displayName] + manualChangeMessageForAudio:[VectorL10n microphoneAccessNotGrantedForCall:AppInfo.current.displayName] + manualChangeMessageForVideo:[VectorL10n cameraAccessNotGrantedForCall:AppInfo.current.displayName] showPopUpInViewController:self completionHandler:^(BOOL granted) { MXStrongifyAndReturnIfNil(self); @@ -3288,12 +3344,12 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; inMatrixSession:customizedRoomDataSource.mxSession]; [[JitsiService shared] resetDeclineForWidgetWithId:widget.widgetId]; } - else if ([actionIdentifier isEqualToString:RoomGroupCallStatusBubbleCell.leaveAction]) + else if ([actionIdentifier isEqualToString:RoomGroupCallStatusCell.leaveAction]) { [self endActiveJitsiCall]; [self reloadBubblesTable:YES]; } - else if ([actionIdentifier isEqualToString:RoomGroupCallStatusBubbleCell.declineAction]) + else if ([actionIdentifier isEqualToString:RoomGroupCallStatusCell.declineAction]) { MXEvent *widgetEvent = userInfo[kMXKRoomBubbleCellEventKey]; Widget *widget = [[Widget alloc] initWithWidgetEvent:widgetEvent @@ -3858,7 +3914,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; }]; MXWeakify(self); - [reportReasonAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [reportReasonAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); NSString *text = [self->currentAlert textFields].firstObject.text; @@ -3878,7 +3934,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; preferredStyle:UIAlertControllerStyleAlert]; MXWeakify(self); - [ignoreUserAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n yes] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [ignoreUserAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n yes] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); self->currentAlert = nil; @@ -3900,7 +3956,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; }]; }]]; - [ignoreUserAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n no] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [ignoreUserAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n no] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); self->currentAlert = nil; }]]; @@ -3919,7 +3975,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; }]; }]]; - [reportReasonAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { + [reportReasonAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); self->currentAlert = nil; }]]; @@ -4232,7 +4288,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; - (void)showUnableToOpenLinkErrorAlert { - [self showAlertWithTitle:[MatrixKitL10n error] + [self showAlertWithTitle:[VectorL10n error] message:[VectorL10n roomMessageUnableOpenLinkErrorMessage]]; } @@ -4286,6 +4342,8 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; - (void)roomDataSource:(RoomDataSource *)roomDataSource didTapThread:(id)thread { [self openThreadWithId:thread.id]; + + [Analytics.shared trackInteraction:AnalyticsUIElementRoomThreadSummaryItem]; } #pragma mark - Segues @@ -4340,8 +4398,8 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; // Check app permissions first [MXKTools checkAccessForCall:video - manualChangeMessageForAudio:[MatrixKitL10n microphoneAccessNotGrantedForCall:AppInfo.current.displayName] - manualChangeMessageForVideo:[MatrixKitL10n cameraAccessNotGrantedForCall:AppInfo.current.displayName] + manualChangeMessageForAudio:[VectorL10n microphoneAccessNotGrantedForCall:AppInfo.current.displayName] + manualChangeMessageForVideo:[VectorL10n cameraAccessNotGrantedForCall:AppInfo.current.displayName] showPopUpInViewController:self completionHandler:^(BOOL granted) { if (weakSelf) @@ -4407,7 +4465,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; }]]; - [callActionSheet addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [callActionSheet addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -4478,7 +4536,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; message:nil preferredStyle:UIAlertControllerStyleAlert]; - [unprivilegedAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [unprivilegedAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -4611,6 +4669,8 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; threadId:nil]; self.threadsBridgePresenter.delegate = self; [self.threadsBridgePresenter pushFrom:self.navigationController animated:YES]; + + [Analytics.shared trackInteraction:AnalyticsUIElementRoomThreadListButton]; } - (IBAction)onIntegrationsPressed:(id)sender @@ -5694,12 +5754,12 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; preferredStyle:UIAlertControllerStyleAlert]; MXWeakify(self); - [cancelAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { + [cancelAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); self->currentAlert = nil; }]]; - [cancelAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n delete] style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) { + [cancelAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n delete] style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); // Remove unsent event ids for (NSUInteger index = 0; index < self.roomDataSource.room.outgoingMessages.count;) @@ -5940,7 +6000,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; message:promptMsg preferredStyle:UIAlertControllerStyleAlert]; - [invitePrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [invitePrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -6094,7 +6154,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; message:[VectorL10n e2eRoomKeyRequestMessage:AppInfo.current.displayName] preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -6389,10 +6449,10 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; message:[VectorL10n roomEventActionDeleteConfirmationMessage] preferredStyle:UIAlertControllerStyleAlert]; - [deleteConfirmation addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [deleteConfirmation addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }]]; - [deleteConfirmation addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n delete] style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) { + [deleteConfirmation addAction:[UIAlertAction actionWithTitle:[VectorL10n delete] style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) { [self.roomDataSource removeEventWithEventId:event.eventId]; }]]; @@ -7031,14 +7091,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; - (void)roomInfoCoordinatorBridgePresenterDelegateDidLeaveRoom:(RoomInfoCoordinatorBridgePresenter *)coordinatorBridgePresenter { - if (self.delegate) - { - [self.delegate roomViewControllerDidLeaveRoom:self]; - } - else - { - [[AppDelegate theDelegate] restoreInitialDisplay:nil]; - } + [self notifyDelegateOnLeaveRoomIfNecessary]; } #pragma mark - RemoveJitsiWidgetViewDelegate @@ -7078,7 +7131,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; - (void)voiceMessageControllerDidRequestMicrophonePermission:(VoiceMessageController *)voiceMessageController { - NSString *message = [MatrixKitL10n microphoneAccessNotGrantedForVoiceMessage:AppInfo.current.displayName]; + NSString *message = [VectorL10n microphoneAccessNotGrantedForVoiceMessage:AppInfo.current.displayName]; [MXKTools checkAccessForMediaType:AVMediaTypeAudio manualChangeMessage: message diff --git a/Riot/Modules/Room/RoomViewController.xib b/Riot/Modules/Room/RoomViewController.xib index b1f933efe..e8b8bfd6e 100644 --- a/Riot/Modules/Room/RoomViewController.xib +++ b/Riot/Modules/Room/RoomViewController.xib @@ -1,9 +1,9 @@ - + - + @@ -189,7 +189,7 @@ - + diff --git a/Riot/Modules/Room/Search/DataSources/RoomSearchDataSource.m b/Riot/Modules/Room/Search/DataSources/RoomSearchDataSource.m index 8be145b51..9c0530a7b 100644 --- a/Riot/Modules/Room/Search/DataSources/RoomSearchDataSource.m +++ b/Riot/Modules/Room/Search/DataSources/RoomSearchDataSource.m @@ -33,12 +33,12 @@ @implementation RoomSearchDataSource -- (instancetype)initWithRoomDataSource:(MXKRoomDataSource *)roomDataSource2 +- (instancetype)initWithRoomDataSource:(MXKRoomDataSource *)roomDataSource { - self = [super initWithMatrixSession:roomDataSource2.mxSession]; + self = [super initWithMatrixSession:roomDataSource.mxSession]; if (self) { - roomDataSource = roomDataSource2; + self->roomDataSource = roomDataSource; // The messages search is limited to the room data. self.roomEventFilter.rooms = @[roomDataSource.roomId]; diff --git a/Riot/Modules/Room/Search/RoomSearchViewController.m b/Riot/Modules/Room/Search/RoomSearchViewController.m index 8a16c463d..eba0ee508 100644 --- a/Riot/Modules/Room/Search/RoomSearchViewController.m +++ b/Riot/Modules/Room/Search/RoomSearchViewController.m @@ -33,7 +33,7 @@ MXKSearchDataSource *filesSearchDataSource; } -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end @@ -52,7 +52,7 @@ // The navigation bar tint color and the rageShake Manager are handled by super (see SegmentedViewController). - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenRoomSearch]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenRoomSearch]; } - (void)viewDidLoad @@ -97,6 +97,8 @@ { [super viewWillAppear:animated]; + [self.screenTracker trackScreen]; + // Let's child display the loading not this view controller if (self.activityIndicator) { @@ -118,8 +120,6 @@ // Refresh the search results. // Note: We wait for 'viewDidAppear' call to consider the actual view size during this update. [self updateSearch]; - - [self.screenTimer start]; } - (void)viewWillDisappear:(BOOL)animated @@ -134,12 +134,6 @@ [super viewWillDisappear:animated]; } -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; -} - - (UIStatusBarStyle)preferredStatusBarStyle { return ThemeService.shared.theme.statusBarStyle; diff --git a/Riot/Modules/Room/Settings/RoomSettingsViewController.h b/Riot/Modules/Room/Settings/RoomSettingsViewController.h index 1882a38cb..02ec6a815 100644 --- a/Riot/Modules/Room/Settings/RoomSettingsViewController.h +++ b/Riot/Modules/Room/Settings/RoomSettingsViewController.h @@ -19,7 +19,7 @@ #import "MediaPickerViewController.h" #import "TableViewCellWithCheckBoxes.h" -@class AnalyticsScreenTimer; +@class AnalyticsScreenTracker; /** List the settings fields. Used to preselect/edit a field @@ -57,7 +57,7 @@ typedef enum : NSUInteger { /** The screen timer used for analytics if they've been enabled. The default value is nil. */ -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end diff --git a/Riot/Modules/Room/Settings/RoomSettingsViewController.m b/Riot/Modules/Room/Settings/RoomSettingsViewController.m index ff018f732..b1743d734 100644 --- a/Riot/Modules/Room/Settings/RoomSettingsViewController.m +++ b/Riot/Modules/Room/Settings/RoomSettingsViewController.m @@ -309,6 +309,8 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti { [super viewWillAppear:animated]; + [self.screenTracker trackScreen]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didUpdateRules:) name:kMXNotificationCenterDidUpdateRules object:nil]; // Observe appDelegateDidTapStatusBarNotificationObserver. @@ -328,8 +330,6 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti { self.selectedRoomSettingsField = _selectedRoomSettingsField; } - - [self.screenTimer start]; } - (void)viewWillDisappear:(BOOL)animated @@ -347,12 +347,6 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti } } -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; -} - // Those methods are called when the viewcontroller is added or removed from a container view controller. - (void)willMoveToParentViewController:(nullable UIViewController *)parent { @@ -851,7 +845,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti message:[VectorL10n roomDetailsSaveChangesPrompt] preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n no] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n no] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -867,7 +861,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n yes] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n yes] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -918,7 +912,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -1059,7 +1053,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti // The user can only delete alias they has created, even if the Admin has set it as canonical. // So, let the server answer if it's possible to delete an alias. - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n delete] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n delete] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -1073,7 +1067,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -1403,7 +1397,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti currentAlert = [UIAlertController alertControllerWithTitle:nil message:message preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -3317,7 +3311,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti message:[VectorL10n roomDetailsHistorySectionPromptMsg] preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -3329,7 +3323,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n continue] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n continue] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -3405,7 +3399,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti message:[VectorL10n roomDetailsAddressesDisableMainAddressPromptMsg] preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -3417,7 +3411,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n continue] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n continue] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -3484,7 +3478,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti message:message preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -3868,7 +3862,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti message:alertMsg preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -3933,7 +3927,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti message:alertMsg preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/Room/TimelineCells/BaseRoomCell/RoomCellContentView.swift b/Riot/Modules/Room/TimelineCells/BaseRoomCell/RoomCellContentView.swift index e8cc17639..4f8996725 100644 --- a/Riot/Modules/Room/TimelineCells/BaseRoomCell/RoomCellContentView.swift +++ b/Riot/Modules/Room/TimelineCells/BaseRoomCell/RoomCellContentView.swift @@ -212,9 +212,9 @@ extension RoomCellContentView: RoomCellReactionsDisplayable { self.reactionsContentView.vc_removeAllSubviews() // Update reactions alignment according to current decoration alignment - if let bubbleReactionsView = reactionsView as? BubbleReactionsView { + if let reactionsView = reactionsView as? RoomReactionsView { - let reactionsAlignment: BubbleReactionsViewAlignment + let reactionsAlignment: RoomReactionsViewAlignment switch self.decorationViewsAlignment { case .left: @@ -223,7 +223,7 @@ extension RoomCellContentView: RoomCellReactionsDisplayable { reactionsAlignment = .right } - bubbleReactionsView.alignment = reactionsAlignment + reactionsView.alignment = reactionsAlignment } self.reactionsContentView.vc_addSubViewMatchingParent(reactionsView) diff --git a/Riot/Modules/Room/TimelineCells/Call/CallBubbleCellBaseContentView.swift b/Riot/Modules/Room/TimelineCells/Call/CallCellContentView.swift similarity index 94% rename from Riot/Modules/Room/TimelineCells/Call/CallBubbleCellBaseContentView.swift rename to Riot/Modules/Room/TimelineCells/Call/CallCellContentView.swift index e150ac729..c98ba5717 100644 --- a/Riot/Modules/Room/TimelineCells/Call/CallBubbleCellBaseContentView.swift +++ b/Riot/Modules/Room/TimelineCells/Call/CallCellContentView.swift @@ -17,7 +17,7 @@ import UIKit import Reusable -class CallBubbleCellBaseContentView: UIView { +class CallCellContentView: UIView { private enum Constants { static let callSummaryWithBottomViewHeight: CGFloat = 20 @@ -88,11 +88,11 @@ class CallBubbleCellBaseContentView: UIView { } -extension CallBubbleCellBaseContentView: NibLoadable { +extension CallCellContentView: NibLoadable { } -extension CallBubbleCellBaseContentView: Themable { +extension CallCellContentView: Themable { func update(theme: Theme) { self.theme = theme @@ -114,7 +114,7 @@ extension CallBubbleCellBaseContentView: Themable { // MARK: - RoomCellReadReceiptsDisplayable -extension CallBubbleCellBaseContentView: RoomCellReadReceiptsDisplayable { +extension CallCellContentView: RoomCellReadReceiptsDisplayable { func addReadReceiptsView(_ readReceiptsView: UIView) { self.readReceiptsContentView.vc_removeAllSubviews() diff --git a/Riot/Modules/Room/TimelineCells/Call/CallBubbleCellBaseContentView.xib b/Riot/Modules/Room/TimelineCells/Call/CallCellContentView.xib similarity index 98% rename from Riot/Modules/Room/TimelineCells/Call/CallBubbleCellBaseContentView.xib rename to Riot/Modules/Room/TimelineCells/Call/CallCellContentView.xib index 09df8b2e6..4f838a8ef 100644 --- a/Riot/Modules/Room/TimelineCells/Call/CallBubbleCellBaseContentView.xib +++ b/Riot/Modules/Room/TimelineCells/Call/CallCellContentView.xib @@ -1,15 +1,15 @@ - + - + - + diff --git a/Riot/Modules/Room/TimelineCells/Call/Direct/RoomDirectCallStatusBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Call/Direct/RoomDirectCallStatusCell.swift similarity index 99% rename from Riot/Modules/Room/TimelineCells/Call/Direct/RoomDirectCallStatusBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Call/Direct/RoomDirectCallStatusCell.swift index 103296014..20f732556 100644 --- a/Riot/Modules/Room/TimelineCells/Call/Direct/RoomDirectCallStatusBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Call/Direct/RoomDirectCallStatusCell.swift @@ -20,7 +20,7 @@ import UIKit private let MSEC_PER_SEC: TimeInterval = 1000 @objcMembers -class RoomDirectCallStatusBubbleCell: RoomBaseCallBubbleCell { +class RoomDirectCallStatusCell: RoomCallBaseCell { private static var className: String { return String(describing: self) @@ -446,7 +446,7 @@ class RoomDirectCallStatusBubbleCell: RoomBaseCallBubbleCell { return "" } - return RoomDirectCallStatusBubbleCell.callDurationFormatter.string(from: duration) ?? "" + return RoomDirectCallStatusCell.callDurationFormatter.string(from: duration) ?? "" } } diff --git a/Riot/Modules/Room/TimelineCells/Call/Group/RoomGroupCallStatusBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Call/Group/RoomGroupCallStatusCell.swift similarity index 98% rename from Riot/Modules/Room/TimelineCells/Call/Group/RoomGroupCallStatusBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Call/Group/RoomGroupCallStatusCell.swift index 2a37dccf6..30b444829 100644 --- a/Riot/Modules/Room/TimelineCells/Call/Group/RoomGroupCallStatusBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Call/Group/RoomGroupCallStatusCell.swift @@ -20,7 +20,7 @@ import UIKit private let MSEC_PER_SEC: TimeInterval = 1000 @objcMembers -class RoomGroupCallStatusBubbleCell: RoomBaseCallBubbleCell { +class RoomGroupCallStatusCell: RoomCallBaseCell { private static var className: String { return String(describing: self) @@ -335,7 +335,7 @@ class RoomGroupCallStatusBubbleCell: RoomBaseCallBubbleCell { return "" } - return RoomGroupCallStatusBubbleCell.callDurationFormatter.string(from: duration) ?? "" + return RoomGroupCallStatusCell.callDurationFormatter.string(from: duration) ?? "" } } diff --git a/Riot/Modules/Room/TimelineCells/Call/RoomBaseCallBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Call/RoomCallBaseCell.swift similarity index 92% rename from Riot/Modules/Room/TimelineCells/Call/RoomBaseCallBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Call/RoomCallBaseCell.swift index b7efc965b..c886634a8 100644 --- a/Riot/Modules/Room/TimelineCells/Call/RoomBaseCallBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Call/RoomCallBaseCell.swift @@ -17,10 +17,10 @@ import UIKit import Reusable -class RoomBaseCallBubbleCell: MXKRoomBubbleTableViewCell { +class RoomCallBaseCell: MXKRoomBubbleTableViewCell { - lazy var innerContentView: CallBubbleCellBaseContentView = { - return CallBubbleCellBaseContentView.loadFromNib() + lazy var innerContentView: CallCellContentView = { + return CallCellContentView.loadFromNib() }() override required init!(style: UITableViewCell.CellStyle, reuseIdentifier: String!) { @@ -65,7 +65,7 @@ class RoomBaseCallBubbleCell: MXKRoomBubbleTableViewCell { innerContentView.bottomContainerView.vc_addSubViewMatchingParent(bottomContentView) } - class func createSizingView() -> RoomBaseCallBubbleCell { + class func createSizingView() -> RoomCallBaseCell { return self.init(style: .default, reuseIdentifier: self.defaultReuseIdentifier()) } @@ -144,7 +144,7 @@ class RoomBaseCallBubbleCell: MXKRoomBubbleTableViewCell { } -extension RoomBaseCallBubbleCell: RoomCellReadReceiptsDisplayable { +extension RoomCallBaseCell: RoomCellReadReceiptsDisplayable { func addReadReceiptsView(_ readReceiptsView: UIView) { innerContentView.addReadReceiptsView(readReceiptsView) @@ -156,7 +156,7 @@ extension RoomBaseCallBubbleCell: RoomCellReadReceiptsDisplayable { } -extension RoomBaseCallBubbleCell: Themable { +extension RoomCallBaseCell: Themable { func update(theme: Theme) { innerContentView.update(theme: theme) @@ -167,6 +167,6 @@ extension RoomBaseCallBubbleCell: Themable { } -extension RoomBaseCallBubbleCell: NibReusable { +extension RoomCallBaseCell: NibReusable { } diff --git a/Riot/Modules/Room/TimelineCells/Call/RoomBaseCallBubbleCell.xib b/Riot/Modules/Room/TimelineCells/Call/RoomCallBaseCell.xib similarity index 88% rename from Riot/Modules/Room/TimelineCells/Call/RoomBaseCallBubbleCell.xib rename to Riot/Modules/Room/TimelineCells/Call/RoomCallBaseCell.xib index 052188b08..0f31ca016 100644 --- a/Riot/Modules/Room/TimelineCells/Call/RoomBaseCallBubbleCell.xib +++ b/Riot/Modules/Room/TimelineCells/Call/RoomCallBaseCell.xib @@ -1,16 +1,16 @@ - + - + - + diff --git a/Riot/Modules/Room/TimelineCells/Common/MXKRoomOutgoingBubbleTableViewCell.m b/Riot/Modules/Room/TimelineCells/Common/MXKRoomOutgoingBubbleTableViewCell.m index 9c74f6aff..2263c2aa0 100644 --- a/Riot/Modules/Room/TimelineCells/Common/MXKRoomOutgoingBubbleTableViewCell.m +++ b/Riot/Modules/Room/TimelineCells/Common/MXKRoomOutgoingBubbleTableViewCell.m @@ -41,8 +41,8 @@ { UIButton *unsentButton = [[UIButton alloc] initWithFrame:CGRectMake(0, component.position.y, 58 , 20)]; - [unsentButton setTitle:[MatrixKitL10n unsent] forState:UIControlStateNormal]; - [unsentButton setTitle:[MatrixKitL10n unsent] forState:UIControlStateSelected]; + [unsentButton setTitle:[VectorL10n unsent] forState:UIControlStateNormal]; + [unsentButton setTitle:[VectorL10n unsent] forState:UIControlStateSelected]; [unsentButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; [unsentButton setTitleColor:[UIColor redColor] forState:UIControlStateSelected]; diff --git a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationBaseBubbleCell.swift b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationBaseCell.swift similarity index 97% rename from Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationBaseBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationBaseCell.swift index 81b3d851a..8205bf69b 100644 --- a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationBaseBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationBaseCell.swift @@ -17,7 +17,7 @@ import Foundation @objcMembers -class KeyVerificationBaseBubbleCell: MXKRoomBubbleTableViewCell { +class KeyVerificationBaseCell: MXKRoomBubbleTableViewCell { // MARK: - Constants @@ -121,7 +121,7 @@ class KeyVerificationBaseBubbleCell: MXKRoomBubbleTableViewCell { return senderDisplayName } - class func sizingView() -> KeyVerificationBaseBubbleCell { + class func sizingView() -> KeyVerificationBaseCell { fatalError("[KeyVerificationBaseBubbleCell] Subclass should implement this method") } @@ -249,7 +249,7 @@ class KeyVerificationBaseBubbleCell: MXKRoomBubbleTableViewCell { } // MARK: - RoomCellReadReceiptsDisplayable -extension KeyVerificationBaseBubbleCell: RoomCellReadReceiptsDisplayable { +extension KeyVerificationBaseCell: RoomCellReadReceiptsDisplayable { func addReadReceiptsView(_ readReceiptsView: UIView) { self.roomCellContentView?.addReadReceiptsView(readReceiptsView) diff --git a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionBubbleCell.swift b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionCell.swift similarity index 93% rename from Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionCell.swift index 17fada772..0bc8b87a9 100644 --- a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionCell.swift @@ -17,12 +17,12 @@ import UIKit @objcMembers -class KeyVerificationConclusionBubbleCell: KeyVerificationBaseBubbleCell { +class KeyVerificationConclusionCell: KeyVerificationBaseCell { // MARK: - Constants private enum Sizing { - static let view = KeyVerificationConclusionBubbleCell(style: .default, reuseIdentifier: nil) + static let view = KeyVerificationConclusionCell(style: .default, reuseIdentifier: nil) } // MARK: - Setup @@ -58,7 +58,7 @@ class KeyVerificationConclusionBubbleCell: KeyVerificationBaseBubbleCell { keyVerificationCellInnerContentView.updateSenderInfo(with: viewData.senderId, userDisplayName: viewData.senderDisplayName) } - override class func sizingView() -> KeyVerificationBaseBubbleCell { + override class func sizingView() -> KeyVerificationBaseCell { return self.Sizing.view } diff --git a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionWithPaginationTitleBubbleCell.swift b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionWithPaginationTitleCell.swift similarity index 82% rename from Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionWithPaginationTitleBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionWithPaginationTitleCell.swift index 386d12e81..c8529c779 100644 --- a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionWithPaginationTitleBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationConclusionWithPaginationTitleCell.swift @@ -17,12 +17,12 @@ import UIKit @objcMembers -final class KeyVerificationConclusionWithPaginationTitleBubbleCell: KeyVerificationConclusionBubbleCell { +final class KeyVerificationConclusionWithPaginationTitleCell: KeyVerificationConclusionCell { // MARK: - Constants private enum Sizing { - static let view = KeyVerificationConclusionWithPaginationTitleBubbleCell(style: .default, reuseIdentifier: nil) + static let view = KeyVerificationConclusionWithPaginationTitleCell(style: .default, reuseIdentifier: nil) } // MARK: - Setup @@ -38,7 +38,7 @@ final class KeyVerificationConclusionWithPaginationTitleBubbleCell: KeyVerificat private func commonInit() { guard let roomCellContentView = self.roomCellContentView else { - fatalError("[KeyVerificationConclusionWithPaginationTitleBubbleCell] bubbleCellContentView should not be nil") + fatalError("[KeyVerificationConclusionWithPaginationTitleCell] bubbleCellContentView should not be nil") } roomCellContentView.showPaginationTitle = true @@ -46,7 +46,7 @@ final class KeyVerificationConclusionWithPaginationTitleBubbleCell: KeyVerificat // MARK: - Overrides - override class func sizingView() -> KeyVerificationBaseBubbleCell { + override class func sizingView() -> KeyVerificationBaseCell { return self.Sizing.view } } diff --git a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalBubbleCell.swift b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalCell.swift similarity index 95% rename from Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalCell.swift index f1a5fbac4..766bd7c95 100644 --- a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalCell.swift @@ -17,12 +17,12 @@ import UIKit @objcMembers -class KeyVerificationIncomingRequestApprovalBubbleCell: KeyVerificationBaseBubbleCell { +class KeyVerificationIncomingRequestApprovalCell: KeyVerificationBaseCell { // MARK: - Constants private enum Sizing { - static let view = KeyVerificationIncomingRequestApprovalBubbleCell(style: .default, reuseIdentifier: nil) + static let view = KeyVerificationIncomingRequestApprovalCell(style: .default, reuseIdentifier: nil) } // MARK: - Setup @@ -85,7 +85,7 @@ class KeyVerificationIncomingRequestApprovalBubbleCell: KeyVerificationBaseBubbl } } - override class func sizingView() -> KeyVerificationBaseBubbleCell { + override class func sizingView() -> KeyVerificationBaseCell { return self.Sizing.view } diff --git a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.swift b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalWithPaginationTitleCell.swift similarity index 84% rename from Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalWithPaginationTitleCell.swift index 8a13a24c7..46ec4fba0 100644 --- a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationIncomingRequestApprovalWithPaginationTitleCell.swift @@ -17,12 +17,12 @@ import UIKit @objcMembers -final class KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell: KeyVerificationIncomingRequestApprovalBubbleCell { +final class KeyVerificationIncomingRequestApprovalWithPaginationTitleCell: KeyVerificationIncomingRequestApprovalCell { // MARK: - Constants private enum Sizing { - static let view = KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell(style: .default, reuseIdentifier: nil) + static let view = KeyVerificationIncomingRequestApprovalWithPaginationTitleCell(style: .default, reuseIdentifier: nil) } // MARK: - Setup @@ -38,7 +38,7 @@ final class KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell: private func commonInit() { guard let roomCellContentView = self.roomCellContentView else { - fatalError("[KeyVerificationRequestStatusWithPaginationTitleBubbleCell] bubbleCellContentView should not be nil") + fatalError("[KeyVerificationRequestStatusWithPaginationTitleCell] roomCellContentView should not be nil") } roomCellContentView.showPaginationTitle = true @@ -46,7 +46,7 @@ final class KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell: // MARK: - Overrides - override class func sizingView() -> KeyVerificationBaseBubbleCell { + override class func sizingView() -> KeyVerificationBaseCell { return self.Sizing.view } } diff --git a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusBubbleCell.swift b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusCell.swift similarity index 95% rename from Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusCell.swift index 6221bb0e9..42d1c029d 100644 --- a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusCell.swift @@ -17,12 +17,12 @@ import UIKit @objcMembers -class KeyVerificationRequestStatusBubbleCell: KeyVerificationBaseBubbleCell { +class KeyVerificationRequestStatusCell: KeyVerificationBaseCell { // MARK: - Constants private enum Sizing { - static let view = KeyVerificationRequestStatusBubbleCell(style: .default, reuseIdentifier: nil) + static let view = KeyVerificationRequestStatusCell(style: .default, reuseIdentifier: nil) } // MARK: - Setup @@ -63,7 +63,7 @@ class KeyVerificationRequestStatusBubbleCell: KeyVerificationBaseBubbleCell { keyVerificationCellInnerContentView.requestStatusText = viewData.statusText } - override class func sizingView() -> KeyVerificationBaseBubbleCell { + override class func sizingView() -> KeyVerificationBaseCell { return self.Sizing.view } diff --git a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusWithPaginationTitleBubbleCell.swift b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusWithPaginationTitleCell.swift similarity index 81% rename from Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusWithPaginationTitleBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusWithPaginationTitleCell.swift index 1e2b7f5b6..882191b13 100644 --- a/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusWithPaginationTitleBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/KeyVerification/KeyVerificationRequestStatusWithPaginationTitleCell.swift @@ -17,12 +17,12 @@ import UIKit @objcMembers -final class KeyVerificationRequestStatusWithPaginationTitleBubbleCell: KeyVerificationRequestStatusBubbleCell { +final class KeyVerificationRequestStatusWithPaginationTitleCell: KeyVerificationRequestStatusCell { // MARK: - Constants private enum Sizing { - static let view = KeyVerificationRequestStatusWithPaginationTitleBubbleCell(style: .default, reuseIdentifier: nil) + static let view = KeyVerificationRequestStatusWithPaginationTitleCell(style: .default, reuseIdentifier: nil) } // MARK: - Setup @@ -38,7 +38,7 @@ final class KeyVerificationRequestStatusWithPaginationTitleBubbleCell: KeyVerifi private func commonInit() { guard let roomCellContentView = self.roomCellContentView else { - fatalError("[KeyVerificationRequestStatusWithPaginationTitleBubbleCell] bubbleCellContentView should not be nil") + fatalError("[KeyVerificationRequestStatusWithPaginationTitleCell] roomCellContentView should not be nil") } roomCellContentView.showPaginationTitle = true @@ -46,7 +46,7 @@ final class KeyVerificationRequestStatusWithPaginationTitleBubbleCell: KeyVerifi // MARK: - Overrides - override class func sizingView() -> KeyVerificationBaseBubbleCell { + override class func sizingView() -> KeyVerificationBaseCell { return self.Sizing.view } } diff --git a/Riot/Modules/Room/TimelineCells/MessageTyping/RoomTypingBubbleCell.swift b/Riot/Modules/Room/TimelineCells/MessageTyping/MessageTypingCell.swift similarity index 98% rename from Riot/Modules/Room/TimelineCells/MessageTyping/RoomTypingBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/MessageTyping/MessageTypingCell.swift index f0eba07b2..dfe6fc7b0 100644 --- a/Riot/Modules/Room/TimelineCells/MessageTyping/RoomTypingBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/MessageTyping/MessageTypingCell.swift @@ -17,7 +17,7 @@ import UIKit @objcMembers -class RoomTypingBubbleCell: MXKTableViewCell, Themable { +class MessageTypingCell: MXKTableViewCell, Themable { // MARK: - Constants private enum Constants { diff --git a/Riot/Modules/Room/TimelineCells/MessageTyping/RoomTypingBubbleCell.xib b/Riot/Modules/Room/TimelineCells/MessageTyping/MessageTypingCell.xib similarity index 94% rename from Riot/Modules/Room/TimelineCells/MessageTyping/RoomTypingBubbleCell.xib rename to Riot/Modules/Room/TimelineCells/MessageTyping/MessageTypingCell.xib index 5cd15a92d..b326a955f 100644 --- a/Riot/Modules/Room/TimelineCells/MessageTyping/RoomTypingBubbleCell.xib +++ b/Riot/Modules/Room/TimelineCells/MessageTyping/MessageTypingCell.xib @@ -1,15 +1,15 @@ - + - + - + diff --git a/Riot/Modules/Room/TimelineCells/SizableCell/SizableBaseRoomCell.swift b/Riot/Modules/Room/TimelineCells/SizableCell/SizableBaseRoomCell.swift index 98eb9caa3..5aa5f10e5 100644 --- a/Riot/Modules/Room/TimelineCells/SizableCell/SizableBaseRoomCell.swift +++ b/Riot/Modules/Room/TimelineCells/SizableCell/SizableBaseRoomCell.swift @@ -29,10 +29,10 @@ class SizableBaseRoomCell: BaseRoomCell, SizableBaseRoomCellType { private static let sizingViewHeightStore = SizingViewHeightStore() private static var sizingViews: [String: SizableBaseRoomCell] = [:] - private static let sizingReactionsView = BubbleReactionsView() + private static let sizingReactionsView = RoomReactionsView() - private static let reactionsViewSizer = BubbleReactionsViewSizer() - private static let reactionsViewModelBuilder = BubbleReactionsViewModelBuilder() + private static let reactionsViewSizer = RoomReactionsViewSizer() + private static let reactionsViewModelBuilder = RoomReactionsViewModelBuilder() private static let urlPreviewViewSizer = URLPreviewViewSizer() @@ -126,11 +126,11 @@ class SizableBaseRoomCell: BaseRoomCell, SizableBaseRoomCellType { // Add reactions view height if needed if sizingView is RoomCellReactionsDisplayable, let roomBubbleCellData = cellData as? RoomBubbleCellData, - let bubbleReactionsViewModel = self.reactionsViewModelBuilder.buildForFirstVisibleComponent(of: roomBubbleCellData) { + let reactionsViewModel = self.reactionsViewModelBuilder.buildForFirstVisibleComponent(of: roomBubbleCellData) { let reactionWidth = sizingView.roomCellContentView?.reactionsContentView.frame.width ?? roomBubbleCellData.maxTextViewWidth - let reactionsHeight = self.reactionsViewSizer.height(for: bubbleReactionsViewModel, fittingWidth: reactionWidth) + let reactionsHeight = self.reactionsViewSizer.height(for: reactionsViewModel, fittingWidth: reactionWidth) height+=reactionsHeight } diff --git a/Riot/Modules/Room/TimelineCells/Styles/Bubble/BubbleRoomTimelineCellDecorator.swift b/Riot/Modules/Room/TimelineCells/Styles/Bubble/BubbleRoomTimelineCellDecorator.swift index f3d80259f..df25796d1 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Bubble/BubbleRoomTimelineCellDecorator.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Bubble/BubbleRoomTimelineCellDecorator.swift @@ -67,7 +67,7 @@ class BubbleRoomTimelineCellDecorator: PlainRoomTimelineCellDecorator { } else { super.addTimestampLabel(toCell: cell, cellData: cellData) } - } else if let voiceMessageCell = cell as? VoiceMessageBubbleCell, let playbackView = voiceMessageCell.playbackController?.playbackView { + } else if let voiceMessageCell = cell as? VoiceMessagePlainCell, let playbackView = voiceMessageCell.playbackController?.playbackView { // Add timestamp on cell inherting from VoiceMessageBubbleCell @@ -90,7 +90,7 @@ class BubbleRoomTimelineCellDecorator: PlainRoomTimelineCellDecorator { } } - override func addReactionView(_ reactionsView: BubbleReactionsView, + override func addReactionView(_ reactionsView: RoomReactionsView, toCell cell: MXKRoomBubbleTableViewCell, cellData: RoomBubbleCellData, contentViewPositionY: CGFloat, upperDecorationView: UIView?) { if let reactionsDisplayable = cell as? RoomCellReactionsDisplayable { diff --git a/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Location/Incoming/LocationIncomingBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Location/Incoming/LocationIncomingBubbleCell.swift index 769b2b555..886337a5e 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Location/Incoming/LocationIncomingBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Location/Incoming/LocationIncomingBubbleCell.swift @@ -16,7 +16,7 @@ import Foundation -class LocationIncomingBubbleCell: LocationBubbleCell, BubbleIncomingRoomCellProtocol { +class LocationIncomingBubbleCell: LocationPlainCell, BubbleIncomingRoomCellProtocol { override func setupViews() { super.setupViews() diff --git a/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Location/Outgoing/LocationOutgoingWithoutSenderInfoBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Location/Outgoing/LocationOutgoingWithoutSenderInfoBubbleCell.swift index 831a11a94..dd16e475d 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Location/Outgoing/LocationOutgoingWithoutSenderInfoBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Location/Outgoing/LocationOutgoingWithoutSenderInfoBubbleCell.swift @@ -16,7 +16,7 @@ import Foundation -class LocationOutgoingWithoutSenderInfoBubbleCell: LocationBubbleCell, BubbleOutgoingRoomCellProtocol { +class LocationOutgoingWithoutSenderInfoBubbleCell: LocationPlainCell, BubbleOutgoingRoomCellProtocol { override func setupViews() { super.setupViews() diff --git a/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Poll/PollBaseBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Poll/PollBaseBubbleCell.swift index 769eb82e5..b69abdcd4 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Poll/PollBaseBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/Poll/PollBaseBubbleCell.swift @@ -16,7 +16,7 @@ import UIKit -class PollBaseBubbleCell: PollBubbleCell { +class PollBaseBubbleCell: PollPlainCell { // MARK: - Properties diff --git a/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/VoiceMessage/Incoming/VoiceMessageIncomingBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/VoiceMessage/Incoming/VoiceMessageIncomingBubbleCell.swift index c1f2e477c..bd4334168 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/VoiceMessage/Incoming/VoiceMessageIncomingBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/VoiceMessage/Incoming/VoiceMessageIncomingBubbleCell.swift @@ -16,7 +16,7 @@ import Foundation -class VoiceMessageIncomingBubbleCell: VoiceMessageBubbleCell, BubbleIncomingRoomCellProtocol { +class VoiceMessageIncomingBubbleCell: VoiceMessagePlainCell, BubbleIncomingRoomCellProtocol { override func setupViews() { super.setupViews() diff --git a/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/VoiceMessage/Outgoing/VoiceMessageOutgoingWithoutSenderInfoBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/VoiceMessage/Outgoing/VoiceMessageOutgoingWithoutSenderInfoBubbleCell.swift index 2b76d0188..6abd8a8a7 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/VoiceMessage/Outgoing/VoiceMessageOutgoingWithoutSenderInfoBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Bubble/Cells/VoiceMessage/Outgoing/VoiceMessageOutgoingWithoutSenderInfoBubbleCell.swift @@ -16,7 +16,7 @@ import Foundation -class VoiceMessageOutgoingWithoutSenderInfoBubbleCell: VoiceMessageBubbleCell, BubbleOutgoingRoomCellProtocol { +class VoiceMessageOutgoingWithoutSenderInfoBubbleCell: VoiceMessagePlainCell, BubbleOutgoingRoomCellProtocol { override func setupViews() { super.setupViews() diff --git a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationPlainCell.swift similarity index 96% rename from Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationPlainCell.swift index 1e0afe211..4b86e4209 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationPlainCell.swift @@ -16,7 +16,7 @@ import Foundation -class LocationBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable, RoomCellReadMarkerDisplayable { +class LocationPlainCell: SizableBaseRoomCell, RoomCellReactionsDisplayable, RoomCellReadMarkerDisplayable { private var locationView: RoomTimelineLocationView! diff --git a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithPaginationTitleBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithPaginationTitlePlainCell.swift similarity index 91% rename from Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithPaginationTitleBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithPaginationTitlePlainCell.swift index 690bf10e1..46c8c06a2 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithPaginationTitleBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithPaginationTitlePlainCell.swift @@ -16,7 +16,7 @@ import Foundation -class LocationWithPaginationTitleBubbleCell: LocationBubbleCell { +class LocationWithPaginationTitlePlainCell: LocationPlainCell { override func setupViews() { super.setupViews() diff --git a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithoutSenderInfoBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithoutSenderInfoPlainCell.swift similarity index 92% rename from Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithoutSenderInfoBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithoutSenderInfoPlainCell.swift index cda0d9899..e39937069 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithoutSenderInfoBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Location/LocationWithoutSenderInfoPlainCell.swift @@ -16,7 +16,7 @@ import Foundation -class LocationWithoutSenderInfoBubbleCell: LocationBubbleCell { +class LocationWithoutSenderInfoPlainCell: LocationPlainCell { override func setupViews() { super.setupViews() diff --git a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollPlainCell.swift similarity index 92% rename from Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollPlainCell.swift index 51dd798d8..65a356f9d 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollPlainCell.swift @@ -16,7 +16,7 @@ import Foundation -class PollBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable, RoomCellReadMarkerDisplayable { +class PollPlainCell: SizableBaseRoomCell, RoomCellReactionsDisplayable, RoomCellReadMarkerDisplayable { private var pollView: UIView? private var event: MXEvent? @@ -62,4 +62,4 @@ class PollBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable, RoomCel } } -extension PollBubbleCell: RoomCellThreadSummaryDisplayable {} +extension PollPlainCell: RoomCellThreadSummaryDisplayable {} diff --git a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithPaginationTitleBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithPaginationTitlePlainCell.swift similarity index 92% rename from Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithPaginationTitleBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithPaginationTitlePlainCell.swift index 969c7864d..8862ef42b 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithPaginationTitleBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithPaginationTitlePlainCell.swift @@ -16,7 +16,7 @@ import Foundation -class PollWithPaginationTitleBubbleCell: PollBubbleCell { +class PollWithPaginationTitlePlainCell: PollPlainCell { override func setupViews() { super.setupViews() diff --git a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithoutSenderInfoBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithoutSenderInfoPlainCell.swift similarity index 93% rename from Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithoutSenderInfoBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithoutSenderInfoPlainCell.swift index 2663996a8..a7b4db95c 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithoutSenderInfoBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/Poll/PollWithoutSenderInfoPlainCell.swift @@ -16,7 +16,7 @@ import Foundation -class PollWithoutSenderInfoBubbleCell: PollBubbleCell { +class PollWithoutSenderInfoPlainCell: PollPlainCell { override func setupViews() { super.setupViews() diff --git a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessagePlainCell.swift similarity index 95% rename from Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessagePlainCell.swift index d11c0787d..b84a3d741 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessagePlainCell.swift @@ -16,7 +16,7 @@ import Foundation -class VoiceMessageBubbleCell: SizableBaseRoomCell, RoomCellReactionsDisplayable, RoomCellReadMarkerDisplayable { +class VoiceMessagePlainCell: SizableBaseRoomCell, RoomCellReactionsDisplayable, RoomCellReadMarkerDisplayable { private(set) var playbackController: VoiceMessagePlaybackController! diff --git a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithPaginationTitleBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithPaginationTitlePlainCell.swift similarity index 90% rename from Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithPaginationTitleBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithPaginationTitlePlainCell.swift index f4640031e..b775e559c 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithPaginationTitleBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithPaginationTitlePlainCell.swift @@ -16,7 +16,7 @@ import Foundation -class VoiceMessageWithPaginationTitleBubbleCell: VoiceMessageBubbleCell { +class VoiceMessageWithPaginationTitlePlainCell: VoiceMessagePlainCell { override func setupViews() { super.setupViews() diff --git a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithoutSenderInfoBubbleCell.swift b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithoutSenderInfoPlainCell.swift similarity index 91% rename from Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithoutSenderInfoBubbleCell.swift rename to Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithoutSenderInfoPlainCell.swift index 84a302d5d..27000436f 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithoutSenderInfoBubbleCell.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Plain/Cells/VoiceMessage/VoiceMessageWithoutSenderInfoPlainCell.swift @@ -16,7 +16,7 @@ import Foundation -class VoiceMessageWithoutSenderInfoBubbleCell: VoiceMessageBubbleCell { +class VoiceMessageWithoutSenderInfoPlainCell: VoiceMessagePlainCell { override func setupViews() { super.setupViews() diff --git a/Riot/Modules/Room/TimelineCells/Styles/Plain/PlainRoomTimelineCellDecorator.swift b/Riot/Modules/Room/TimelineCells/Styles/Plain/PlainRoomTimelineCellDecorator.swift index d081a24fa..0dd54623a 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Plain/PlainRoomTimelineCellDecorator.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/Plain/PlainRoomTimelineCellDecorator.swift @@ -68,7 +68,7 @@ class PlainRoomTimelineCellDecorator: RoomTimelineCellDecorator { ]) } - func addReactionView(_ reactionsView: BubbleReactionsView, + func addReactionView(_ reactionsView: RoomReactionsView, toCell cell: MXKRoomBubbleTableViewCell, cellData: RoomBubbleCellData, contentViewPositionY: CGFloat, diff --git a/Riot/Modules/Room/TimelineCells/Styles/Plain/PlainRoomTimelineCellProvider.m b/Riot/Modules/Room/TimelineCells/Styles/Plain/PlainRoomTimelineCellProvider.m index 0a68e6609..466a1d665 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/Plain/PlainRoomTimelineCellProvider.m +++ b/Riot/Modules/Room/TimelineCells/Styles/Plain/PlainRoomTimelineCellProvider.m @@ -119,7 +119,7 @@ [tableView registerClass:RoomCreationIntroCell.class forCellReuseIdentifier:RoomCreationIntroCell.defaultReuseIdentifier]; - [tableView registerNib:RoomTypingBubbleCell.nib forCellReuseIdentifier:RoomTypingBubbleCell.defaultReuseIdentifier]; + [tableView registerNib:MessageTypingCell.nib forCellReuseIdentifier:MessageTypingCell.defaultReuseIdentifier]; } - (Class)cellViewClassForCellIdentifier:(RoomTimelineCellIdentifier)identifier @@ -220,12 +220,12 @@ - (void)registerKeyVerificationCellsForTableView:(UITableView*)tableView { - [tableView registerClass:KeyVerificationIncomingRequestApprovalBubbleCell.class forCellReuseIdentifier:KeyVerificationIncomingRequestApprovalBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.class forCellReuseIdentifier:KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:KeyVerificationRequestStatusBubbleCell.class forCellReuseIdentifier:KeyVerificationRequestStatusBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:KeyVerificationRequestStatusWithPaginationTitleBubbleCell.class forCellReuseIdentifier:KeyVerificationRequestStatusWithPaginationTitleBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:KeyVerificationConclusionBubbleCell.class forCellReuseIdentifier:KeyVerificationConclusionBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:KeyVerificationConclusionWithPaginationTitleBubbleCell.class forCellReuseIdentifier:KeyVerificationConclusionWithPaginationTitleBubbleCell.defaultReuseIdentifier]; + [tableView registerClass:KeyVerificationIncomingRequestApprovalCell.class forCellReuseIdentifier:KeyVerificationIncomingRequestApprovalCell.defaultReuseIdentifier]; + [tableView registerClass:KeyVerificationIncomingRequestApprovalWithPaginationTitleCell.class forCellReuseIdentifier:KeyVerificationIncomingRequestApprovalWithPaginationTitleCell.defaultReuseIdentifier]; + [tableView registerClass:KeyVerificationRequestStatusCell.class forCellReuseIdentifier:KeyVerificationRequestStatusCell.defaultReuseIdentifier]; + [tableView registerClass:KeyVerificationRequestStatusWithPaginationTitleCell.class forCellReuseIdentifier:KeyVerificationRequestStatusWithPaginationTitleCell.defaultReuseIdentifier]; + [tableView registerClass:KeyVerificationConclusionCell.class forCellReuseIdentifier:KeyVerificationConclusionCell.defaultReuseIdentifier]; + [tableView registerClass:KeyVerificationConclusionWithPaginationTitleCell.class forCellReuseIdentifier:KeyVerificationConclusionWithPaginationTitleCell.defaultReuseIdentifier]; } - (void)registerRoomCreationCellsForTableView:(UITableView*)tableView @@ -236,29 +236,29 @@ - (void)registerCallCellsForTableView:(UITableView*)tableView { - [tableView registerClass:RoomDirectCallStatusBubbleCell.class forCellReuseIdentifier:RoomDirectCallStatusBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:RoomGroupCallStatusBubbleCell.class forCellReuseIdentifier:RoomGroupCallStatusBubbleCell.defaultReuseIdentifier]; + [tableView registerClass:RoomDirectCallStatusCell.class forCellReuseIdentifier:RoomDirectCallStatusCell.defaultReuseIdentifier]; + [tableView registerClass:RoomGroupCallStatusCell.class forCellReuseIdentifier:RoomGroupCallStatusCell.defaultReuseIdentifier]; } - (void)registerVoiceMessageCellsForTableView:(UITableView*)tableView { - [tableView registerClass:VoiceMessageBubbleCell.class forCellReuseIdentifier:VoiceMessageBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:VoiceMessageWithoutSenderInfoBubbleCell.class forCellReuseIdentifier:VoiceMessageWithoutSenderInfoBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:VoiceMessageWithPaginationTitleBubbleCell.class forCellReuseIdentifier:VoiceMessageWithPaginationTitleBubbleCell.defaultReuseIdentifier]; + [tableView registerClass:VoiceMessagePlainCell.class forCellReuseIdentifier:VoiceMessagePlainCell.defaultReuseIdentifier]; + [tableView registerClass:VoiceMessageWithoutSenderInfoPlainCell.class forCellReuseIdentifier:VoiceMessageWithoutSenderInfoPlainCell.defaultReuseIdentifier]; + [tableView registerClass:VoiceMessageWithPaginationTitlePlainCell.class forCellReuseIdentifier:VoiceMessageWithPaginationTitlePlainCell.defaultReuseIdentifier]; } - (void)registerPollCellsForTableView:(UITableView*)tableView { - [tableView registerClass:PollBubbleCell.class forCellReuseIdentifier:PollBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:PollWithoutSenderInfoBubbleCell.class forCellReuseIdentifier:PollWithoutSenderInfoBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:PollWithPaginationTitleBubbleCell.class forCellReuseIdentifier:PollWithPaginationTitleBubbleCell.defaultReuseIdentifier]; + [tableView registerClass:PollPlainCell.class forCellReuseIdentifier:PollPlainCell.defaultReuseIdentifier]; + [tableView registerClass:PollWithoutSenderInfoPlainCell.class forCellReuseIdentifier:PollWithoutSenderInfoPlainCell.defaultReuseIdentifier]; + [tableView registerClass:PollWithPaginationTitlePlainCell.class forCellReuseIdentifier:PollWithPaginationTitlePlainCell.defaultReuseIdentifier]; } - (void)registerLocationCellsForTableView:(UITableView*)tableView { - [tableView registerClass:LocationBubbleCell.class forCellReuseIdentifier:LocationBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:LocationWithoutSenderInfoBubbleCell.class forCellReuseIdentifier:LocationWithoutSenderInfoBubbleCell.defaultReuseIdentifier]; - [tableView registerClass:LocationWithPaginationTitleBubbleCell.class forCellReuseIdentifier:LocationWithPaginationTitleBubbleCell.defaultReuseIdentifier]; + [tableView registerClass:LocationPlainCell.class forCellReuseIdentifier:LocationPlainCell.defaultReuseIdentifier]; + [tableView registerClass:LocationWithoutSenderInfoPlainCell.class forCellReuseIdentifier:LocationWithoutSenderInfoPlainCell.defaultReuseIdentifier]; + [tableView registerClass:LocationWithPaginationTitlePlainCell.class forCellReuseIdentifier:LocationWithPaginationTitlePlainCell.defaultReuseIdentifier]; } #pragma mark Cell class association @@ -324,7 +324,7 @@ @(RoomTimelineCellIdentifierSelectedSticker) : RoomSelectedStickerBubbleCell.class, @(RoomTimelineCellIdentifierRoomPredecessor) : RoomPredecessorBubbleCell.class, @(RoomTimelineCellIdentifierRoomCreationIntro) : RoomCreationIntroCell.class, - @(RoomTimelineCellIdentifierTyping) : RoomTypingBubbleCell.class, + @(RoomTimelineCellIdentifierTyping) : MessageTypingCell.class, }; [cellClasses addEntriesFromDictionary:othersCells]; @@ -474,12 +474,12 @@ - (NSDictionary*)keyVerificationCellsMapping { return @{ - @(RoomTimelineCellIdentifierKeyVerificationIncomingRequestApproval) : KeyVerificationIncomingRequestApprovalBubbleCell.class, - @(RoomTimelineCellIdentifierKeyVerificationIncomingRequestApprovalWithPaginationTitle) : KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.class, - @(RoomTimelineCellIdentifierKeyVerificationRequestStatus) : KeyVerificationRequestStatusBubbleCell.class, - @(RoomTimelineCellIdentifierKeyVerificationRequestStatusWithPaginationTitle) : KeyVerificationRequestStatusWithPaginationTitleBubbleCell.class, - @(RoomTimelineCellIdentifierKeyVerificationConclusion) : KeyVerificationConclusionBubbleCell.class, - @(RoomTimelineCellIdentifierKeyVerificationConclusionWithPaginationTitle) : KeyVerificationConclusionWithPaginationTitleBubbleCell.class, + @(RoomTimelineCellIdentifierKeyVerificationIncomingRequestApproval) : KeyVerificationIncomingRequestApprovalCell.class, + @(RoomTimelineCellIdentifierKeyVerificationIncomingRequestApprovalWithPaginationTitle) : KeyVerificationIncomingRequestApprovalWithPaginationTitleCell.class, + @(RoomTimelineCellIdentifierKeyVerificationRequestStatus) : KeyVerificationRequestStatusCell.class, + @(RoomTimelineCellIdentifierKeyVerificationRequestStatusWithPaginationTitle) : KeyVerificationRequestStatusWithPaginationTitleCell.class, + @(RoomTimelineCellIdentifierKeyVerificationConclusion) : KeyVerificationConclusionCell.class, + @(RoomTimelineCellIdentifierKeyVerificationConclusionWithPaginationTitle) : KeyVerificationConclusionWithPaginationTitleCell.class, }; } @@ -494,8 +494,8 @@ - (NSDictionary*)callCellsMapping { return @{ - @(RoomTimelineCellIdentifierDirectCallStatus) : RoomDirectCallStatusBubbleCell.class, - @(RoomTimelineCellIdentifierGroupCallStatus) : RoomGroupCallStatusBubbleCell.class, + @(RoomTimelineCellIdentifierDirectCallStatus) : RoomDirectCallStatusCell.class, + @(RoomTimelineCellIdentifierGroupCallStatus) : RoomGroupCallStatusCell.class, }; } @@ -503,13 +503,13 @@ { return @{ // Incoming - @(RoomTimelineCellIdentifierIncomingVoiceMessage) : VoiceMessageBubbleCell.class, - @(RoomTimelineCellIdentifierIncomingVoiceMessageWithoutSenderInfo) : VoiceMessageWithoutSenderInfoBubbleCell.class, - @(RoomTimelineCellIdentifierIncomingVoiceMessageWithPaginationTitle) : VoiceMessageWithPaginationTitleBubbleCell.class, + @(RoomTimelineCellIdentifierIncomingVoiceMessage) : VoiceMessagePlainCell.class, + @(RoomTimelineCellIdentifierIncomingVoiceMessageWithoutSenderInfo) : VoiceMessageWithoutSenderInfoPlainCell.class, + @(RoomTimelineCellIdentifierIncomingVoiceMessageWithPaginationTitle) : VoiceMessageWithPaginationTitlePlainCell.class, // Outoing - @(RoomTimelineCellIdentifierOutgoingVoiceMessage) : VoiceMessageBubbleCell.class, - @(RoomTimelineCellIdentifierOutgoingVoiceMessageWithoutSenderInfo) : VoiceMessageWithoutSenderInfoBubbleCell.class, - @(RoomTimelineCellIdentifierOutgoingVoiceMessageWithPaginationTitle) : VoiceMessageWithPaginationTitleBubbleCell.class + @(RoomTimelineCellIdentifierOutgoingVoiceMessage) : VoiceMessagePlainCell.class, + @(RoomTimelineCellIdentifierOutgoingVoiceMessageWithoutSenderInfo) : VoiceMessageWithoutSenderInfoPlainCell.class, + @(RoomTimelineCellIdentifierOutgoingVoiceMessageWithPaginationTitle) : VoiceMessageWithPaginationTitlePlainCell.class }; } @@ -517,13 +517,13 @@ { return @{ // Incoming - @(RoomTimelineCellIdentifierIncomingPoll) : PollBubbleCell.class, - @(RoomTimelineCellIdentifierIncomingPollWithoutSenderInfo) : PollWithoutSenderInfoBubbleCell.class, - @(RoomTimelineCellIdentifierIncomingPollWithPaginationTitle) : PollWithPaginationTitleBubbleCell.class, + @(RoomTimelineCellIdentifierIncomingPoll) : PollPlainCell.class, + @(RoomTimelineCellIdentifierIncomingPollWithoutSenderInfo) : PollWithoutSenderInfoPlainCell.class, + @(RoomTimelineCellIdentifierIncomingPollWithPaginationTitle) : PollWithPaginationTitlePlainCell.class, // Outoing - @(RoomTimelineCellIdentifierOutgoingPoll) : PollBubbleCell.class, - @(RoomTimelineCellIdentifierOutgoingPollWithoutSenderInfo) : PollWithoutSenderInfoBubbleCell.class, - @(RoomTimelineCellIdentifierOutgoingPollWithPaginationTitle) : PollWithPaginationTitleBubbleCell.class + @(RoomTimelineCellIdentifierOutgoingPoll) : PollPlainCell.class, + @(RoomTimelineCellIdentifierOutgoingPollWithoutSenderInfo) : PollWithoutSenderInfoPlainCell.class, + @(RoomTimelineCellIdentifierOutgoingPollWithPaginationTitle) : PollWithPaginationTitlePlainCell.class }; } @@ -531,13 +531,13 @@ { return @{ // Incoming - @(RoomTimelineCellIdentifierIncomingLocation) : LocationBubbleCell.class, - @(RoomTimelineCellIdentifierIncomingLocationWithoutSenderInfo) : LocationWithoutSenderInfoBubbleCell.class, - @(RoomTimelineCellIdentifierIncomingLocationWithPaginationTitle) : LocationWithPaginationTitleBubbleCell.class, + @(RoomTimelineCellIdentifierIncomingLocation) : LocationPlainCell.class, + @(RoomTimelineCellIdentifierIncomingLocationWithoutSenderInfo) : LocationWithoutSenderInfoPlainCell.class, + @(RoomTimelineCellIdentifierIncomingLocationWithPaginationTitle) : LocationWithPaginationTitlePlainCell.class, // Outgoing - @(RoomTimelineCellIdentifierOutgoingLocation) : LocationBubbleCell.class, - @(RoomTimelineCellIdentifierOutgoingLocationWithoutSenderInfo) : LocationWithoutSenderInfoBubbleCell.class, - @(RoomTimelineCellIdentifierOutgoingLocationWithPaginationTitle) : LocationWithPaginationTitleBubbleCell.class + @(RoomTimelineCellIdentifierOutgoingLocation) : LocationPlainCell.class, + @(RoomTimelineCellIdentifierOutgoingLocationWithoutSenderInfo) : LocationWithoutSenderInfoPlainCell.class, + @(RoomTimelineCellIdentifierOutgoingLocationWithPaginationTitle) : LocationWithPaginationTitlePlainCell.class }; } diff --git a/Riot/Modules/Room/TimelineCells/Styles/RoomTimelineCellDecorator.swift b/Riot/Modules/Room/TimelineCells/Styles/RoomTimelineCellDecorator.swift index 5e383dc94..fd488294c 100644 --- a/Riot/Modules/Room/TimelineCells/Styles/RoomTimelineCellDecorator.swift +++ b/Riot/Modules/Room/TimelineCells/Styles/RoomTimelineCellDecorator.swift @@ -30,7 +30,7 @@ protocol RoomTimelineCellDecorator { cellData: RoomBubbleCellData, contentViewPositionY: CGFloat) - func addReactionView(_ reactionsView: BubbleReactionsView, + func addReactionView(_ reactionsView: RoomReactionsView, toCell cell: MXKRoomBubbleTableViewCell, cellData: RoomBubbleCellData, contentViewPositionY: CGFloat, diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewModelType.swift b/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewModelType.swift deleted file mode 100644 index 77cab862e..000000000 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewModelType.swift +++ /dev/null @@ -1,59 +0,0 @@ -/* - Copyright 2019 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 Foundation - -enum BubbleReactionsViewAction { - case loadData - case tapReaction(index: Int) - case addNewReaction - case tapShowAction(action: ShowAction) - case longPress - - enum ShowAction { - case showAll - case showLess - } -} - -enum BubbleReactionsViewState { - case loaded(reactionsViewData: [BubbleReactionViewData], showAllButtonState: ShowAllButtonState) - - enum ShowAllButtonState { - case none - case showAll - case showLess - } -} - -@objc protocol BubbleReactionsViewModelDelegate: AnyObject { - func bubbleReactionsViewModel(_ viewModel: BubbleReactionsViewModel, didAddReaction reactionCount: MXReactionCount, forEventId eventId: String) - func bubbleReactionsViewModel(_ viewModel: BubbleReactionsViewModel, didRemoveReaction reactionCount: MXReactionCount, forEventId eventId: String) - func bubbleReactionsViewModel(_ viewModel: BubbleReactionsViewModel, didShowAllTappedForEventId eventId: String) - func bubbleReactionsViewModel(_ viewModel: BubbleReactionsViewModel, didShowLessTappedForEventId eventId: String) - func bubbleReactionsViewModel(_ viewModel: BubbleReactionsViewModel, didLongPressForEventId eventId: String) -} - -protocol BubbleReactionsViewModelViewDelegate: AnyObject { - func bubbleReactionsViewModel(_ viewModel: BubbleReactionsViewModel, didUpdateViewState viewState: BubbleReactionsViewState) -} - -protocol BubbleReactionsViewModelType { - var viewModelDelegate: BubbleReactionsViewModelDelegate? { get set } - var viewDelegate: BubbleReactionsViewModelViewDelegate? { get set } - - func process(viewAction: BubbleReactionsViewAction) -} diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionActionViewCell.swift b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionActionViewCell.swift similarity index 96% rename from Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionActionViewCell.swift rename to Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionActionViewCell.swift index 27e387913..b8d12de13 100644 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionActionViewCell.swift +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionActionViewCell.swift @@ -17,7 +17,7 @@ import UIKit import Reusable -final class BubbleReactionActionViewCell: UICollectionViewCell, NibReusable, Themable { +final class RoomReactionActionViewCell: UICollectionViewCell, NibReusable, Themable { // MARK: - Constants diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionActionViewCell.xib b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionActionViewCell.xib similarity index 91% rename from Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionActionViewCell.xib rename to Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionActionViewCell.xib index fa3e5bdb7..806ba5586 100644 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionActionViewCell.xib +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionActionViewCell.xib @@ -1,18 +1,16 @@ - - - - + + - + - + @@ -39,13 +37,13 @@ + - diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionViewCell.swift b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionViewCell.swift similarity index 96% rename from Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionViewCell.swift rename to Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionViewCell.swift index da84b002b..7e509e923 100644 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionViewCell.swift +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionViewCell.swift @@ -17,7 +17,7 @@ import UIKit import Reusable -final class BubbleReactionViewCell: UICollectionViewCell, NibReusable, Themable { +final class RoomReactionViewCell: UICollectionViewCell, NibReusable, Themable { // MARK: - Constants @@ -70,7 +70,7 @@ final class BubbleReactionViewCell: UICollectionViewCell, NibReusable, Themable // MARK: - Public - func fill(viewData: BubbleReactionViewData) { + func fill(viewData: RoomReactionViewData) { self.emojiLabel.text = viewData.emoji self.countLabel.text = viewData.countString self.isReactionSelected = viewData.isCurrentUserReacted diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionViewCell.xib b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionViewCell.xib similarity index 93% rename from Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionViewCell.xib rename to Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionViewCell.xib index 17552af69..3b5fc34ec 100644 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionViewCell.xib +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionViewCell.xib @@ -1,18 +1,16 @@ - - - - + + - + - + @@ -53,13 +51,13 @@ + - diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionViewData.swift b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionViewData.swift similarity index 95% rename from Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionViewData.swift rename to Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionViewData.swift index 316f9c34b..e5f859254 100644 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionViewData.swift +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionViewData.swift @@ -16,7 +16,7 @@ import Foundation -struct BubbleReactionViewData { +struct RoomReactionViewData { let emoji: String let countString: String let isCurrentUserReacted: Bool diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsView.swift b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsView.swift similarity index 80% rename from Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsView.swift rename to Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsView.swift index 362f9b71c..3f926e29f 100644 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsView.swift +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsView.swift @@ -21,14 +21,14 @@ import DGCollectionViewLeftAlignFlowLayout import UIKit import UICollectionViewRightAlignedLayout -/// BubbleReactionsView items alignment -enum BubbleReactionsViewAlignment { +/// RoomReactionsView items alignment +enum RoomReactionsViewAlignment { case left case right } @objcMembers -final class BubbleReactionsView: UIView, NibOwnerLoadable { +final class RoomReactionsView: UIView, NibOwnerLoadable { // MARK: - Constants @@ -45,21 +45,21 @@ final class BubbleReactionsView: UIView, NibOwnerLoadable { // MARK: Private - private var reactionsViewData: [BubbleReactionViewData] = [] - private var showAllButtonState: BubbleReactionsViewState.ShowAllButtonState = .none + private var reactionsViewData: [RoomReactionViewData] = [] + private var showAllButtonState: RoomReactionsViewState.ShowAllButtonState = .none private var theme: Theme? // MARK: Public - // Do not use `BubbleReactionsViewModelType` here due to Objective-C incompatibily - var viewModel: BubbleReactionsViewModel? { + // Do not use `RoomReactionsViewModelType` here due to Objective-C incompatibily + var viewModel: RoomReactionsViewModel? { didSet { self.viewModel?.viewDelegate = self self.viewModel?.process(viewAction: .loadData) } } - var alignment: BubbleReactionsViewAlignment = .left { + var alignment: RoomReactionsViewAlignment = .left { didSet { self.updateCollectionViewLayout(for: alignment) } @@ -103,12 +103,12 @@ final class BubbleReactionsView: UIView, NibOwnerLoadable { self.collectionView.dataSource = self self.alignment = .left - self.collectionView.register(cellType: BubbleReactionViewCell.self) - self.collectionView.register(cellType: BubbleReactionActionViewCell.self) + self.collectionView.register(cellType: RoomReactionViewCell.self) + self.collectionView.register(cellType: RoomReactionActionViewCell.self) self.collectionView.reloadData() } - private func updateCollectionViewLayout(for alignment: BubbleReactionsViewAlignment) { + private func updateCollectionViewLayout(for alignment: RoomReactionsViewAlignment) { let collectionViewLayout = self.collectionViewLayout(for: alignment) @@ -124,7 +124,7 @@ final class BubbleReactionsView: UIView, NibOwnerLoadable { self.collectionView.collectionViewLayout.invalidateLayout() } - private func collectionViewLayout(for alignment: BubbleReactionsViewAlignment) -> UICollectionViewLayout { + private func collectionViewLayout(for alignment: RoomReactionsViewAlignment) -> UICollectionViewLayout { let collectionViewLayout: UICollectionViewLayout @@ -151,7 +151,7 @@ final class BubbleReactionsView: UIView, NibOwnerLoadable { self.viewModel?.process(viewAction: .longPress) } - private func fill(reactionsViewData: [BubbleReactionViewData], showAllButtonState: BubbleReactionsViewState.ShowAllButtonState) { + private func fill(reactionsViewData: [RoomReactionViewData], showAllButtonState: RoomReactionsViewState.ShowAllButtonState) { self.reactionsViewData = reactionsViewData self.showAllButtonState = showAllButtonState self.collectionView.reloadData() @@ -174,7 +174,7 @@ final class BubbleReactionsView: UIView, NibOwnerLoadable { } // MARK: - UICollectionViewDataSource -extension BubbleReactionsView: UICollectionViewDataSource { +extension RoomReactionsView: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { // "Show all" or "Show less" is a cell in the same section as reactions cells @@ -185,7 +185,7 @@ extension BubbleReactionsView: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { if indexPath.row < self.reactionsViewData.count { - let cell: BubbleReactionViewCell = collectionView.dequeueReusableCell(for: indexPath) + let cell: RoomReactionViewCell = collectionView.dequeueReusableCell(for: indexPath) if let theme = self.theme { cell.update(theme: theme) @@ -196,7 +196,7 @@ extension BubbleReactionsView: UICollectionViewDataSource { return cell } else { - let cell: BubbleReactionActionViewCell = collectionView.dequeueReusableCell(for: indexPath) + let cell: RoomReactionActionViewCell = collectionView.dequeueReusableCell(for: indexPath) if let theme = self.theme { cell.update(theme: theme) @@ -211,7 +211,7 @@ extension BubbleReactionsView: UICollectionViewDataSource { } // MARK: - UICollectionViewDelegate -extension BubbleReactionsView: UICollectionViewDelegate { +extension RoomReactionsView: UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { if indexPath.row < self.reactionsViewData.count { @@ -229,10 +229,10 @@ extension BubbleReactionsView: UICollectionViewDelegate { } } -// MARK: - BubbleReactionsViewModelViewDelegate -extension BubbleReactionsView: BubbleReactionsViewModelViewDelegate { +// MARK: - RoomReactionsViewModelViewDelegate +extension RoomReactionsView: RoomReactionsViewModelViewDelegate { - func bubbleReactionsViewModel(_ viewModel: BubbleReactionsViewModel, didUpdateViewState viewState: BubbleReactionsViewState) { + func roomReactionsViewModel(_ viewModel: RoomReactionsViewModel, didUpdateViewState viewState: RoomReactionsViewState) { switch viewState { case .loaded(reactionsViewData: let reactionsViewData, showAllButtonState: let showAllButtonState): self.fill(reactionsViewData: reactionsViewData, showAllButtonState: showAllButtonState) diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsView.xib b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsView.xib similarity index 88% rename from Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsView.xib rename to Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsView.xib index 7c5cedb2a..f7ec783fb 100644 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsView.xib +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsView.xib @@ -1,15 +1,13 @@ - - - - + + - + - + diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewModel.swift b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewModel.swift similarity index 66% rename from Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewModel.swift rename to Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewModel.swift index 1c7418133..dec9db080 100644 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewModel.swift +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewModel.swift @@ -16,7 +16,7 @@ import Foundation -@objc final class BubbleReactionsViewModel: NSObject, BubbleReactionsViewModelType { +@objc final class RoomReactionsViewModel: NSObject, RoomReactionsViewModelType { // MARK: - Constants @@ -34,8 +34,8 @@ import Foundation // MARK: Public - @objc weak var viewModelDelegate: BubbleReactionsViewModelDelegate? - weak var viewDelegate: BubbleReactionsViewModelViewDelegate? + @objc weak var viewModelDelegate: RoomReactionsViewModelDelegate? + weak var viewDelegate: RoomReactionsViewModelViewDelegate? // MARK: - Setup @@ -49,7 +49,7 @@ import Foundation // MARK: - Public - func process(viewAction: BubbleReactionsViewAction) { + func process(viewAction: RoomReactionsViewAction) { switch viewAction { case .loadData: self.loadData() @@ -59,24 +59,24 @@ import Foundation } let reactionCount = self.aggregatedReactions.reactions[index] if reactionCount.myUserHasReacted { - self.viewModelDelegate?.bubbleReactionsViewModel(self, didRemoveReaction: reactionCount, forEventId: self.eventId) + self.viewModelDelegate?.roomReactionsViewModel(self, didRemoveReaction: reactionCount, forEventId: self.eventId) } else { - self.viewModelDelegate?.bubbleReactionsViewModel(self, didAddReaction: reactionCount, forEventId: self.eventId) + self.viewModelDelegate?.roomReactionsViewModel(self, didAddReaction: reactionCount, forEventId: self.eventId) } case .addNewReaction: break case .tapShowAction(.showAll): - self.viewModelDelegate?.bubbleReactionsViewModel(self, didShowAllTappedForEventId: self.eventId) + self.viewModelDelegate?.roomReactionsViewModel(self, didShowAllTappedForEventId: self.eventId) case .tapShowAction(.showLess): - self.viewModelDelegate?.bubbleReactionsViewModel(self, didShowLessTappedForEventId: self.eventId) + self.viewModelDelegate?.roomReactionsViewModel(self, didShowLessTappedForEventId: self.eventId) case .longPress: - self.viewModelDelegate?.bubbleReactionsViewModel(self, didLongPressForEventId: self.eventId) + self.viewModelDelegate?.roomReactionsViewModel(self, didLongPressForEventId: self.eventId) } } func loadData() { var reactions = self.aggregatedReactions.reactions - var showAllButtonState: BubbleReactionsViewState.ShowAllButtonState = .none + var showAllButtonState: RoomReactionsViewState.ShowAllButtonState = .none // Limit displayed reactions if required if reactions.count > Constants.maxItemsWhenLimited { @@ -88,11 +88,11 @@ import Foundation } } - let reactionsViewData = reactions.map { (reactionCount) -> BubbleReactionViewData in - return BubbleReactionViewData(emoji: reactionCount.reaction, countString: "\(reactionCount.count)", isCurrentUserReacted: reactionCount.myUserHasReacted) + let reactionsViewData = reactions.map { (reactionCount) -> RoomReactionViewData in + return RoomReactionViewData(emoji: reactionCount.reaction, countString: "\(reactionCount.count)", isCurrentUserReacted: reactionCount.myUserHasReacted) } - self.viewDelegate?.bubbleReactionsViewModel(self, didUpdateViewState: .loaded(reactionsViewData: reactionsViewData, showAllButtonState: showAllButtonState)) + self.viewDelegate?.roomReactionsViewModel(self, didUpdateViewState: .loaded(reactionsViewData: reactionsViewData, showAllButtonState: showAllButtonState)) } // MARK: - Hashable diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewModelBuilder.swift b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewModelBuilder.swift similarity index 85% rename from Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewModelBuilder.swift rename to Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewModelBuilder.swift index 46b244e06..ac48286fd 100644 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewModelBuilder.swift +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewModelBuilder.swift @@ -16,11 +16,11 @@ limitations under the License. import Foundation -/// `BubbleReactionsViewModelBuilder` enables to build a BubbleReactionsViewModel for a given `RoomBubbleCellData` and `MXKRoomBubbleComponent` index. +/// `RoomReactionsViewModelBuilder` enables to build a RoomReactionsViewModel for a given `RoomBubbleCellData` and `MXKRoomBubbleComponent` index. @objcMembers -final class BubbleReactionsViewModelBuilder: NSObject { +final class RoomReactionsViewModelBuilder: NSObject { - func buildForFirstVisibleComponent(of roomBubbleCellData: RoomBubbleCellData) -> BubbleReactionsViewModel? { + func buildForFirstVisibleComponent(of roomBubbleCellData: RoomBubbleCellData) -> RoomReactionsViewModel? { guard roomBubbleCellData.firstVisibleComponentIndex() != NSNotFound else { return nil @@ -29,7 +29,7 @@ final class BubbleReactionsViewModelBuilder: NSObject { return self.build(from: roomBubbleCellData, componentIndex: roomBubbleCellData.firstVisibleComponentIndex()) } - func build(from roomBubbleCellData: RoomBubbleCellData, componentIndex: Int) -> BubbleReactionsViewModel? { + func build(from roomBubbleCellData: RoomBubbleCellData, componentIndex: Int) -> RoomReactionsViewModel? { let isCollapsableCellCollapsed = roomBubbleCellData.collapsable && roomBubbleCellData.collapsed @@ -53,7 +53,7 @@ final class BubbleReactionsViewModelBuilder: NSObject { } let showAllReactions = roomBubbleCellData.showAllReactions(forEvent: componentEventId) - return BubbleReactionsViewModel(aggregatedReactions: aggregatedReactions, + return RoomReactionsViewModel(aggregatedReactions: aggregatedReactions, eventId: componentEventId, showAll: showAllReactions) } diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewModelType.swift b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewModelType.swift new file mode 100644 index 000000000..441ce3eb0 --- /dev/null +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewModelType.swift @@ -0,0 +1,59 @@ +/* + Copyright 2019 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 Foundation + +enum RoomReactionsViewAction { + case loadData + case tapReaction(index: Int) + case addNewReaction + case tapShowAction(action: ShowAction) + case longPress + + enum ShowAction { + case showAll + case showLess + } +} + +enum RoomReactionsViewState { + case loaded(reactionsViewData: [RoomReactionViewData], showAllButtonState: ShowAllButtonState) + + enum ShowAllButtonState { + case none + case showAll + case showLess + } +} + +@objc protocol RoomReactionsViewModelDelegate: AnyObject { + func roomReactionsViewModel(_ viewModel: RoomReactionsViewModel, didAddReaction reactionCount: MXReactionCount, forEventId eventId: String) + func roomReactionsViewModel(_ viewModel: RoomReactionsViewModel, didRemoveReaction reactionCount: MXReactionCount, forEventId eventId: String) + func roomReactionsViewModel(_ viewModel: RoomReactionsViewModel, didShowAllTappedForEventId eventId: String) + func roomReactionsViewModel(_ viewModel: RoomReactionsViewModel, didShowLessTappedForEventId eventId: String) + func roomReactionsViewModel(_ viewModel: RoomReactionsViewModel, didLongPressForEventId eventId: String) +} + +protocol RoomReactionsViewModelViewDelegate: AnyObject { + func roomReactionsViewModel(_ viewModel: RoomReactionsViewModel, didUpdateViewState viewState: RoomReactionsViewState) +} + +protocol RoomReactionsViewModelType { + var viewModelDelegate: RoomReactionsViewModelDelegate? { get set } + var viewDelegate: RoomReactionsViewModelViewDelegate? { get set } + + func process(viewAction: RoomReactionsViewAction) +} diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewSizer.h b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewSizer.h similarity index 77% rename from Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewSizer.h rename to Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewSizer.h index 5234e4ba2..677feda90 100644 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewSizer.h +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewSizer.h @@ -17,15 +17,15 @@ limitations under the License. #import #import -@class BubbleReactionsViewModel; +@class RoomReactionsViewModel; NS_ASSUME_NONNULL_BEGIN -// `BubbleReactionsViewSizer` allows to determine reactions view height for a given viewModel and width. -@interface BubbleReactionsViewSizer : NSObject +// `RoomReactionsViewSizer` allows to determine reactions view height for a given viewModel and width. +@interface RoomReactionsViewSizer : NSObject // Use Objective-C as workaround as there is an issue affecting UICollectionView sizing. See https://developer.apple.com/forums/thread/105523 for more information. -- (CGFloat)heightForViewModel:(BubbleReactionsViewModel*)viewModel +- (CGFloat)heightForViewModel:(RoomReactionsViewModel*)viewModel fittingWidth:(CGFloat)fittingWidth; @end diff --git a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewSizer.m b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewSizer.m similarity index 58% rename from Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewSizer.m rename to Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewSizer.m index a2c40fd6d..8cb2ad3e0 100644 --- a/Riot/Modules/Room/TimelineDecorations/Reactions/BubbleReactionsViewSizer.m +++ b/Riot/Modules/Room/TimelineDecorations/Reactions/RoomReactionsViewSizer.m @@ -14,33 +14,33 @@ See the License for the specific language governing permissions and limitations under the License. */ -#import "BubbleReactionsViewSizer.h" +#import "RoomReactionsViewSizer.h" #import #import "GeneratedInterface-Swift.h" -@implementation BubbleReactionsViewSizer +@implementation RoomReactionsViewSizer -- (CGFloat)heightForViewModel:(BubbleReactionsViewModel*)viewModel +- (CGFloat)heightForViewModel:(RoomReactionsViewModel*)viewModel fittingWidth:(CGFloat)fittingWidth { CGSize fittingSize = UILayoutFittingCompressedSize; fittingSize.width = fittingWidth; - static BubbleReactionsView *bubbleReactionsView; + static RoomReactionsView *reactionsView; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - bubbleReactionsView = [BubbleReactionsView new]; + reactionsView = [RoomReactionsView new]; }); - bubbleReactionsView.frame = CGRectMake(0, 0, fittingWidth, 1.0); - bubbleReactionsView.viewModel = viewModel; - [bubbleReactionsView setNeedsLayout]; - [bubbleReactionsView layoutIfNeeded]; + reactionsView.frame = CGRectMake(0, 0, fittingWidth, 1.0); + reactionsView.viewModel = viewModel; + [reactionsView setNeedsLayout]; + [reactionsView layoutIfNeeded]; - return [bubbleReactionsView systemLayoutSizeFittingSize:fittingSize withHorizontalFittingPriority:UILayoutPriorityRequired verticalFittingPriority:UILayoutPriorityFittingSizeLevel].height; + return [reactionsView systemLayoutSizeFittingSize:fittingSize withHorizontalFittingPriority:UILayoutPriorityRequired verticalFittingPriority:UILayoutPriorityFittingSizeLevel].height; } @end diff --git a/Riot/Modules/Room/Views/Activities/RoomActivitiesView.m b/Riot/Modules/Room/Views/Activities/RoomActivitiesView.m index 6acd41443..07d4988a0 100644 --- a/Riot/Modules/Room/Views/Activities/RoomActivitiesView.m +++ b/Riot/Modules/Room/Views/Activities/RoomActivitiesView.m @@ -352,11 +352,11 @@ // Reuse MatrixKit as is for the beginning of hardLimit if ([limitType isEqualToString:kMXErrorResourceLimitExceededLimitTypeMonthlyActiveUserValue]) { - [message appendString:[MatrixKitL10n loginErrorResourceLimitExceededMessageMonthlyActiveUser]]; + [message appendString:[VectorL10n loginErrorResourceLimitExceededMessageMonthlyActiveUser]]; } else { - [message appendString:[MatrixKitL10n loginErrorResourceLimitExceededMessageDefault]]; + [message appendString:[VectorL10n loginErrorResourceLimitExceededMessageDefault]]; } } else diff --git a/Riot/Modules/Room/Views/Title/RoomTitleView.m b/Riot/Modules/Room/Views/Title/RoomTitleView.m index a34543c28..e71e8db3b 100644 --- a/Riot/Modules/Room/Views/Title/RoomTitleView.m +++ b/Riot/Modules/Room/Views/Title/RoomTitleView.m @@ -112,7 +112,7 @@ self.displayNameTextField.text = self.mxRoom.summary.displayname; if (!self.displayNameTextField.text.length) { - self.displayNameTextField.text = [MatrixKitL10n roomDisplaynameEmptyRoom]; + self.displayNameTextField.text = [VectorL10n roomDisplaynameEmptyRoom]; self.displayNameTextField.textColor = ThemeService.shared.theme.textSecondaryColor; } else diff --git a/Riot/Modules/Rooms/DirectoryPicker/DirectoryServerPickerViewController.m b/Riot/Modules/Rooms/DirectoryPicker/DirectoryServerPickerViewController.m index 5064dcb15..a8c724ae8 100644 --- a/Riot/Modules/Rooms/DirectoryPicker/DirectoryServerPickerViewController.m +++ b/Riot/Modules/Rooms/DirectoryPicker/DirectoryServerPickerViewController.m @@ -39,7 +39,7 @@ id kThemeServiceDidChangeThemeNotificationObserver; } -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end @@ -53,7 +53,7 @@ self.enableBarTintColorStatusChange = NO; self.rageShakeManager = [RageShakeManager sharedManager]; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenSwitchDirectory]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenSwitchDirectory]; } - (void)destroy @@ -158,12 +158,7 @@ }]; [dataSource loadData]; -} - -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; - [self.screenTimer start]; + [self.screenTracker trackScreen]; } - (void)viewWillDisappear:(BOOL)animated @@ -177,12 +172,6 @@ [super viewWillDisappear:animated]; } -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; -} - - (void)displayWithDataSource:(MXKDirectoryServersDataSource*)theDataSource onComplete:(void (^)(id cellData))onComplete; { @@ -308,7 +297,7 @@ textField.keyboardType = UIKeyboardTypeDefault; }]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -320,7 +309,7 @@ }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { diff --git a/Riot/Modules/Rooms/RoomsViewController.m b/Riot/Modules/Rooms/RoomsViewController.m index 6e2adfc62..6e4e066d5 100644 --- a/Riot/Modules/Rooms/RoomsViewController.m +++ b/Riot/Modules/Rooms/RoomsViewController.m @@ -20,7 +20,7 @@ #import "GeneratedInterface-Swift.h" -@interface RoomsViewController () +@interface RoomsViewController () { RecentsDataSource *recentsDataSource; } @@ -42,7 +42,7 @@ { [super finalizeInit]; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenRooms]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenRooms]; self.tableViewPaginationThrottler = [[MXThrottler alloc] initWithMinimumDelay:0.1]; } @@ -66,15 +66,12 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - - [AppDelegate theDelegate].masterTabBarController.navigationItem.title = [VectorL10n titleRooms]; [AppDelegate theDelegate].masterTabBarController.tabBar.tintColor = ThemeService.shared.theme.tintColor; if ([self.dataSource isKindOfClass:RecentsDataSource.class]) { // Take the lead on the shared data source. recentsDataSource = (RecentsDataSource*)self.dataSource; - recentsDataSource.areSectionsShrinkable = NO; [recentsDataSource setDelegate:self andRecentsDataSourceMode:RecentsDataSourceModeRooms]; } } @@ -104,17 +101,6 @@ #pragma mark - UITableView delegate -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section -{ - if ([tableView numberOfSections] <= 1) - { - // Hide the header to merge Invites and Rooms into a single list. - return 0.0; - } - - return [super tableView:tableView heightForHeaderInSection:section]; -} - - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if ([super respondsToSelector:@selector(tableView:willDisplayCell:forRowAtIndexPath:)]) @@ -165,4 +151,11 @@ } } +#pragma mark - MasterTabBarItemDisplayProtocol + +- (NSString *)masterTabBarItemTitle +{ + return [VectorL10n titleRooms]; +} + @end diff --git a/Riot/Modules/Rooms/ShowDirectory/ShowDirectoryViewController.swift b/Riot/Modules/Rooms/ShowDirectory/ShowDirectoryViewController.swift index ce22a3440..7b689c6eb 100644 --- a/Riot/Modules/Rooms/ShowDirectory/ShowDirectoryViewController.swift +++ b/Riot/Modules/Rooms/ShowDirectory/ShowDirectoryViewController.swift @@ -69,7 +69,7 @@ final class ShowDirectoryViewController: UIViewController { private var sections: [ShowDirectorySection] = [] - private let screenTimer = AnalyticsScreenTimer(screen: .roomDirectory) + private let screenTracker = AnalyticsScreenTracker(screen: .roomDirectory) // MARK: - Setup @@ -104,11 +104,7 @@ final class ShowDirectoryViewController: UIViewController { super.viewWillAppear(animated) self.keyboardAvoider?.startAvoiding() - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - screenTimer.start() + screenTracker.trackScreen() } override func viewDidDisappear(_ animated: Bool) { @@ -116,7 +112,6 @@ final class ShowDirectoryViewController: UIViewController { self.keyboardAvoider?.stopAvoiding() - screenTimer.stop() } override var preferredStatusBarStyle: UIStatusBarStyle { diff --git a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift index a1bbb053b..316242432 100644 --- a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift +++ b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift @@ -313,7 +313,7 @@ extension ServiceTermsModalScreenViewController: ServiceTermsModalTableHeaderVie } let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) - alertController.addAction(UIAlertAction(title: Bundle.mxk_localizedString(forKey: "ok"), style: .default)) + alertController.addAction(UIAlertAction(title: VectorL10n.ok, style: .default)) present(alertController, animated: true) } diff --git a/Riot/Modules/Settings/DeactivateAccount/DeactivateAccountViewController.m b/Riot/Modules/Settings/DeactivateAccount/DeactivateAccountViewController.m index 0efbe7bdc..76f04616c 100644 --- a/Riot/Modules/Settings/DeactivateAccount/DeactivateAccountViewController.m +++ b/Riot/Modules/Settings/DeactivateAccount/DeactivateAccountViewController.m @@ -47,7 +47,7 @@ static CGFloat const kTextFontSize = 15.0; @property (weak, nonatomic) id themeDidChangeNotificationObserver; -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end @@ -67,7 +67,7 @@ static CGFloat const kTextFontSize = 15.0; - (void)finalizeInit { [super finalizeInit]; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenDeactivateAccount]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenDeactivateAccount]; } - (void)destroy @@ -103,12 +103,7 @@ static CGFloat const kTextFontSize = 15.0; [super viewWillAppear:animated]; [self userInterfaceThemeDidChange]; -} - -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; - [self.screenTimer start]; + [self.screenTracker trackScreen]; } - (void)viewDidLayoutSubviews @@ -118,12 +113,6 @@ static CGFloat const kTextFontSize = 15.0; [self.deactivateAcccountButton.layer setCornerRadius:kButtonCornerRadius]; } -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; -} - - (UIStatusBarStyle)preferredStatusBarStyle { return ThemeService.shared.theme.statusBarStyle; @@ -245,7 +234,7 @@ static CGFloat const kTextFontSize = 15.0; textField.keyboardType = UIKeyboardTypeDefault; }]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { if (cancelHandler) @@ -256,7 +245,7 @@ static CGFloat const kTextFontSize = 15.0; __weak typeof(self) weakSelf = self; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n submit] + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n submit] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { UITextField *textField = alert.textFields.firstObject; diff --git a/Riot/Modules/Settings/Discovery/ThreePidDetails/SettingsDiscoveryThreePidDetailsViewController.swift b/Riot/Modules/Settings/Discovery/ThreePidDetails/SettingsDiscoveryThreePidDetailsViewController.swift index 44e49b07c..95efbdf9b 100644 --- a/Riot/Modules/Settings/Discovery/ThreePidDetails/SettingsDiscoveryThreePidDetailsViewController.swift +++ b/Riot/Modules/Settings/Discovery/ThreePidDetails/SettingsDiscoveryThreePidDetailsViewController.swift @@ -226,15 +226,15 @@ final class SettingsDiscoveryThreePidDetailsViewController: UIViewController { private func presentPendingEmailVerificationAlert() { - let alert = UIAlertController(title: MatrixKitL10n.accountEmailValidationTitle, - message: MatrixKitL10n.accountEmailValidationMessage, + let alert = UIAlertController(title: VectorL10n.accountEmailValidationTitle, + message: VectorL10n.accountEmailValidationMessage, preferredStyle: .alert) alert.addAction(UIAlertAction(title: VectorL10n.continue, style: .default, handler: { _ in self.viewModel.process(viewAction: .confirmEmailValidation) })) - alert.addAction(UIAlertAction(title: MatrixKitL10n.cancel, style: .cancel, handler: { _ in + alert.addAction(UIAlertAction(title: VectorL10n.cancel, style: .cancel, handler: { _ in self.viewModel.process(viewAction: .cancelThreePidValidation) })) @@ -244,8 +244,8 @@ final class SettingsDiscoveryThreePidDetailsViewController: UIViewController { private func presentPendingMSISDNVerificationAlert() { - let alert = UIAlertController(title: MatrixKitL10n.accountMsisdnValidationTitle, - message: MatrixKitL10n.accountMsisdnValidationMessage, + let alert = UIAlertController(title: VectorL10n.accountMsisdnValidationTitle, + message: VectorL10n.accountMsisdnValidationMessage, preferredStyle: .alert) alert.addTextField { (textField) in @@ -260,7 +260,7 @@ final class SettingsDiscoveryThreePidDetailsViewController: UIViewController { self.viewModel.process(viewAction: .confirmMSISDNValidation(code: smsCode)) })) - alert.addAction(UIAlertAction(title: MatrixKitL10n.cancel, style: .cancel, handler: { _ in + alert.addAction(UIAlertAction(title: VectorL10n.cancel, style: .cancel, handler: { _ in self.viewModel.process(viewAction: .cancelThreePidValidation) })) diff --git a/Riot/Modules/Settings/Security/ManageSession/ManageSessionViewController.m b/Riot/Modules/Settings/Security/ManageSession/ManageSessionViewController.m index ab7edff15..20ee325ad 100644 --- a/Riot/Modules/Settings/Security/ManageSession/ManageSessionViewController.m +++ b/Riot/Modules/Settings/Security/ManageSession/ManageSessionViewController.m @@ -594,8 +594,8 @@ enum { [currentAlert dismissViewControllerAnimated:NO completion:nil]; MXWeakify(self); - currentAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n deviceDetailsRenamePromptTitle] - message:[MatrixKitL10n deviceDetailsRenamePromptMessage] + currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n deviceDetailsRenamePromptTitle] + message:[VectorL10n deviceDetailsRenamePromptMessage] preferredStyle:UIAlertControllerStyleAlert]; [currentAlert addTextFieldWithConfigurationHandler:^(UITextField *textField) { @@ -606,7 +606,7 @@ enum { textField.text = self->device.displayName; }]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -614,7 +614,7 @@ enum { self->currentAlert = nil; }]]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -674,8 +674,8 @@ enum { self.reauthenticationCoordinatorBridgePresenter = nil; }; - NSString *title = [MatrixKitL10n deviceDetailsDeletePromptTitle]; - NSString *message = [MatrixKitL10n deviceDetailsDeletePromptMessage]; + NSString *title = [VectorL10n deviceDetailsDeletePromptTitle]; + NSString *message = [VectorL10n deviceDetailsDeletePromptMessage]; AuthenticatedEndpointRequest *deleteDeviceRequest = [[AuthenticatedEndpointRequest alloc] initWithPath:[NSString stringWithFormat:@"%@/devices/%@", kMXAPIPrefixPathR0, [MXTools encodeURIComponent:device.deviceId]] httpMethod:@"DELETE"]; diff --git a/Riot/Modules/Settings/Security/SecurityViewController.m b/Riot/Modules/Settings/Security/SecurityViewController.m index 7082ba3bf..280413786 100644 --- a/Riot/Modules/Settings/Security/SecurityViewController.m +++ b/Riot/Modules/Settings/Security/SecurityViewController.m @@ -119,7 +119,7 @@ TableViewSectionsDelegate> @property (nonatomic, strong) SetPinCoordinatorBridgePresenter *setPinCoordinatorBridgePresenter; @property (nonatomic, strong) CrossSigningSetupCoordinatorBridgePresenter *crossSigningSetupCoordinatorBridgePresenter; -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end @@ -145,7 +145,7 @@ TableViewSectionsDelegate> self.enableBarTintColorStatusChange = NO; self.rageShakeManager = [RageShakeManager sharedManager]; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenSettingsSecurity]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenSettingsSecurity]; } - (void)viewDidLoad @@ -254,6 +254,8 @@ TableViewSectionsDelegate> { [super viewWillAppear:animated]; + [self.screenTracker trackScreen]; + // Release the potential pushed view controller [self releasePushedViewController]; @@ -269,12 +271,6 @@ TableViewSectionsDelegate> [self loadCrossSigning]; } -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; - [self.screenTimer start]; -} - - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; @@ -286,12 +282,6 @@ TableViewSectionsDelegate> } } -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; -} - #pragma mark - Internal methods - (void)updateSections @@ -829,7 +819,7 @@ TableViewSectionsDelegate> [self setupCrossSigning:nil]; }]]; - [alertController addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:nil]]; @@ -1416,7 +1406,7 @@ TableViewSectionsDelegate> message:[VectorL10n securitySettingsCompleteSecurityAlertMessage] preferredStyle:UIAlertControllerStyleAlert]; - [alertController addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [self presentCompleteSecurity]; @@ -1612,7 +1602,7 @@ TableViewSectionsDelegate> message:[VectorL10n settingsKeyBackupDeleteConfirmationPromptMsg] preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); @@ -1741,7 +1731,7 @@ TableViewSectionsDelegate> message:[VectorL10n settingsKeyBackupDeleteConfirmationPromptMsg] preferredStyle:UIAlertControllerStyleAlert]; - [currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index 00088a4f7..0d72d2803 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -159,7 +159,8 @@ typedef NS_ENUM(NSUInteger, LABS_ENABLE) { LABS_ENABLE_RINGING_FOR_GROUP_CALLS_INDEX = 0, LABS_ENABLE_THREADS_INDEX, - LABS_ENABLE_MESSAGE_BUBBLES_INDEX + LABS_ENABLE_MESSAGE_BUBBLES_INDEX, + LABS_USE_ONLY_LATEST_USER_AVATAR_AND_NAME_INDEX }; typedef NS_ENUM(NSUInteger, SECURITY) @@ -288,7 +289,7 @@ TableViewSectionsDelegate> @property (nonatomic) BOOL isPreparingIdentityService; @property (nonatomic, strong) ServiceTermsModalCoordinatorBridgePresenter *serviceTermsModalCoordinatorBridgePresenter; -@property (nonatomic) AnalyticsScreenTimer *screenTimer; +@property (nonatomic) AnalyticsScreenTracker *screenTracker; @end @@ -323,7 +324,7 @@ TableViewSectionsDelegate> isResetPwdInProgress = NO; is3PIDBindingInProgress = NO; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenSettings]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenSettings]; } - (void)updateSections @@ -572,6 +573,7 @@ TableViewSectionsDelegate> [sectionLabs addRowWithTag:LABS_ENABLE_RINGING_FOR_GROUP_CALLS_INDEX]; [sectionLabs addRowWithTag:LABS_ENABLE_THREADS_INDEX]; [sectionLabs addRowWithTag:LABS_ENABLE_MESSAGE_BUBBLES_INDEX]; + [sectionLabs addRowWithTag:LABS_USE_ONLY_LATEST_USER_AVATAR_AND_NAME_INDEX]; sectionLabs.headerTitle = [VectorL10n settingsLabs]; if (sectionLabs.hasAnyRows) { @@ -795,6 +797,8 @@ TableViewSectionsDelegate> { [super viewWillAppear:animated]; + [self.screenTracker trackScreen]; + // Refresh display [self refreshSettings]; @@ -823,8 +827,6 @@ TableViewSectionsDelegate> [self releasePushedViewController]; [self.settingsDiscoveryTableViewSection reload]; - - [self.screenTimer start]; } - (void)viewWillDisappear:(BOOL)animated @@ -868,12 +870,6 @@ TableViewSectionsDelegate> } } -- (void)viewDidDisappear:(BOOL)animated -{ - [super viewDidDisappear:animated]; - [self.screenTimer stop]; -} - #pragma mark - Internal methods - (void)pushViewController:(UIViewController*)viewController @@ -1012,11 +1008,11 @@ TableViewSectionsDelegate> { MXWeakify(self); [currentAlert dismissViewControllerAnimated:NO completion:nil]; - UIAlertController *validationAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n accountEmailValidationTitle] + UIAlertController *validationAlert = [UIAlertController alertControllerWithTitle:[VectorL10n accountEmailValidationTitle] message:message preferredStyle:UIAlertControllerStyleAlert]; - [validationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [validationAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); self->currentAlert = nil; [self stopActivityIndicator]; @@ -1025,7 +1021,7 @@ TableViewSectionsDelegate> self.newEmailEditingEnabled = NO; }]]; - [validationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n continue] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [validationAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n continue] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); [self tryFinaliseAddEmailSession:threePidAddSession withAuthenticationParameters:authenticationParameters threePidAddManager:threePidAddManager]; @@ -1110,7 +1106,7 @@ TableViewSectionsDelegate> MXError *mxError = [[MXError alloc] initWithNSError:error]; if (mxError && [mxError.errcode isEqualToString:kMXErrCodeStringThreePIDAuthFailed]) { - [self showValidationEmailDialogWithMessage:[MatrixKitL10n accountEmailValidationError] for3PidAddSession:threePidAddSession threePidAddManager:threePidAddManager authenticationParameters:authParams]; + [self showValidationEmailDialogWithMessage:[VectorL10n accountEmailValidationError] for3PidAddSession:threePidAddSession threePidAddManager:threePidAddManager authenticationParameters:authParams]; } else { @@ -1129,11 +1125,11 @@ TableViewSectionsDelegate> MXWeakify(self); [currentAlert dismissViewControllerAnimated:NO completion:nil]; - UIAlertController *validationAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n accountMsisdnValidationTitle] + UIAlertController *validationAlert = [UIAlertController alertControllerWithTitle:[VectorL10n accountMsisdnValidationTitle] message:message preferredStyle:UIAlertControllerStyleAlert]; - [validationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [validationAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); self->currentAlert = nil; @@ -1150,7 +1146,7 @@ TableViewSectionsDelegate> textField.keyboardType = UIKeyboardTypeDecimalPad; }]; - [validationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n submit] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [validationAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n submit] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); @@ -1260,7 +1256,7 @@ TableViewSectionsDelegate> } else { - title = [MatrixKitL10n error]; + title = [VectorL10n error]; } } @@ -1268,7 +1264,7 @@ TableViewSectionsDelegate> UIAlertController *errorAlert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert]; MXWeakify(self); - [errorAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { + [errorAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { MXStrongifyAndReturnIfNil(self); self->currentAlert = nil; @@ -1458,9 +1454,9 @@ TableViewSectionsDelegate> NSString *appVersionInfo = [NSString stringWithFormat:@"%@ %@ (%@)", appName, appVersion, buildVersion]; - NSString *loggedUserInfo = [MatrixKitL10n settingsConfigUserId:account.mxCredentials.userId]; + NSString *loggedUserInfo = [VectorL10n settingsConfigUserId:account.mxCredentials.userId]; - NSString *homeserverInfo = [MatrixKitL10n settingsConfigHomeServer:account.mxCredentials.homeServer]; + NSString *homeserverInfo = [VectorL10n settingsConfigHomeServer:account.mxCredentials.homeServer]; NSString *sdkVersionInfo = [NSString stringWithFormat:@"Matrix SDK %@", MatrixSDKVersion]; @@ -2462,6 +2458,18 @@ TableViewSectionsDelegate> { cell = [self buildMessageBubblesCellForTableView:tableView atIndexPath:indexPath]; } + else if (row == LABS_USE_ONLY_LATEST_USER_AVATAR_AND_NAME_INDEX) + { + MXKTableViewCellWithLabelAndSwitch *labelAndSwitchCell = [self getLabelAndSwitchCell:tableView forIndexPath:indexPath]; + + labelAndSwitchCell.mxkLabel.text = VectorL10n.settingsLabsUseOnlyLatestUserAvatarAndName; + labelAndSwitchCell.mxkSwitch.on = RiotSettings.shared.roomScreenUseOnlyLatestUserAvatarAndName; + labelAndSwitchCell.mxkSwitch.onTintColor = ThemeService.shared.theme.tintColor; + + [labelAndSwitchCell.mxkSwitch addTarget:self action:@selector(toggleUseOnlyLatestUserAvatarAndName:) forControlEvents:UIControlEventTouchUpInside]; + + cell = labelAndSwitchCell; + } } else if (section == SECTION_TAG_FLAIR) { @@ -2708,7 +2716,7 @@ TableViewSectionsDelegate> UIAlertController *unignorePrompt = [UIAlertController alertControllerWithTitle:[VectorL10n settingsUnignoreUser:ignoredUserId] message:nil preferredStyle:UIAlertControllerStyleAlert]; - [unignorePrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n yes] + [unignorePrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n yes] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -2739,7 +2747,7 @@ TableViewSectionsDelegate> }]]; - [unignorePrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n no] + [unignorePrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n no] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -2941,7 +2949,7 @@ TableViewSectionsDelegate> // Remove ? UIAlertController *removePrompt = [UIAlertController alertControllerWithTitle:[VectorL10n settingsRemovePromptTitle] message:promptMsg preferredStyle:UIAlertControllerStyleAlert]; - [removePrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [removePrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -3019,7 +3027,7 @@ TableViewSectionsDelegate> UIAlertController *showSettingsPrompt = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; - [showSettingsPrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [showSettingsPrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { @@ -3031,7 +3039,7 @@ TableViewSectionsDelegate> }]]; - UIAlertAction *settingsAction = [UIAlertAction actionWithTitle:[MatrixKitL10n settings] + UIAlertAction *settingsAction = [UIAlertAction actionWithTitle:[VectorL10n settings] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { if (weakSelf) @@ -3244,6 +3252,11 @@ TableViewSectionsDelegate> } } +- (void)toggleUseOnlyLatestUserAvatarAndName:(UISwitch *)sender +{ + RiotSettings.shared.roomScreenUseOnlyLatestUserAvatarAndName = sender.isOn; +} + - (void)markAllAsRead:(id)sender { // Feedback: disable button and run activity indicator @@ -3442,7 +3455,7 @@ TableViewSectionsDelegate> UIAlertController *errorAlert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert]; - [errorAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [errorAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -3465,7 +3478,7 @@ TableViewSectionsDelegate> }]]; - [errorAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n retry] + [errorAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n retry] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -3504,11 +3517,11 @@ TableViewSectionsDelegate> [currentAlert dismissViewControllerAnimated:NO completion:nil]; - UIAlertController *errorAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n accountErrorEmailWrongTitle] - message:[MatrixKitL10n accountErrorEmailWrongDescription] + UIAlertController *errorAlert = [UIAlertController alertControllerWithTitle:[VectorL10n accountErrorEmailWrongTitle] + message:[VectorL10n accountErrorEmailWrongDescription] preferredStyle:UIAlertControllerStyleAlert]; - [errorAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [errorAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -3539,7 +3552,7 @@ TableViewSectionsDelegate> __block MX3PidAddSession *thirdPidAddSession; thirdPidAddSession = [session.threePidAddManager startAddEmailSessionWithEmail:self->newEmailTextField.text nextLink:nil success:^{ - [self showValidationEmailDialogWithMessage:[MatrixKitL10n accountEmailValidationMessage] + [self showValidationEmailDialogWithMessage:[VectorL10n accountEmailValidationMessage] for3PidAddSession:thirdPidAddSession threePidAddManager:session.threePidAddManager authenticationParameters:authParams]; @@ -3615,11 +3628,11 @@ TableViewSectionsDelegate> [currentAlert dismissViewControllerAnimated:NO completion:nil]; __weak typeof(self) weakSelf = self; - UIAlertController *errorAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n accountErrorMsisdnWrongTitle] - message:[MatrixKitL10n accountErrorMsisdnWrongDescription] + UIAlertController *errorAlert = [UIAlertController alertControllerWithTitle:[VectorL10n accountErrorMsisdnWrongTitle] + message:[VectorL10n accountErrorMsisdnWrongDescription] preferredStyle:UIAlertControllerStyleAlert]; - [errorAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [errorAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -3660,7 +3673,7 @@ TableViewSectionsDelegate> __block MX3PidAddSession *new3Pid; new3Pid = [session.threePidAddManager startAddPhoneNumberSessionWithPhoneNumber:msisdn countryCode:nil success:^{ - [self showValidationMsisdnDialogWithMessage:[MatrixKitL10n accountMsisdnValidationMessage] for3PidAddSession:new3Pid threePidAddManager:session.threePidAddManager authenticationParameters:authParams]; + [self showValidationMsisdnDialogWithMessage:[VectorL10n accountMsisdnValidationMessage] for3PidAddSession:new3Pid threePidAddManager:session.threePidAddManager authenticationParameters:authParams]; } failure:^(NSError *error) { @@ -3844,7 +3857,7 @@ TableViewSectionsDelegate> [themePicker addAction:blackAction]; // Cancel button - [themePicker addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [themePicker addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:nil]]; @@ -4003,7 +4016,7 @@ TableViewSectionsDelegate> UIAlertController *successAlert = [UIAlertController alertControllerWithTitle:nil message:[VectorL10n settingsPasswordUpdated] preferredStyle:UIAlertControllerStyleAlert]; - [successAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [successAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -4052,7 +4065,7 @@ TableViewSectionsDelegate> UIAlertController *errorAlert = [UIAlertController alertControllerWithTitle:nil message:[VectorL10n settingsFailToUpdatePassword] preferredStyle:UIAlertControllerStyleAlert]; - [errorAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] + [errorAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -4562,7 +4575,7 @@ TableViewSectionsDelegate> message:nil preferredStyle:UIAlertControllerStyleAlert]; - [alertController addAction:[UIAlertAction actionWithTitle:MatrixKitL10n.ok + [alertController addAction:[UIAlertAction actionWithTitle:VectorL10n.ok style:UIAlertActionStyleDefault handler:nil]]; diff --git a/Riot/Modules/SideMenu/SideMenuViewController.swift b/Riot/Modules/SideMenu/SideMenuViewController.swift index cec36f497..f92be3bbd 100644 --- a/Riot/Modules/SideMenu/SideMenuViewController.swift +++ b/Riot/Modules/SideMenu/SideMenuViewController.swift @@ -48,7 +48,7 @@ final class SideMenuViewController: UIViewController { private var keyboardAvoider: KeyboardAvoider? private var errorPresenter: MXKErrorPresentation! private var activityPresenter: ActivityIndicatorPresenter! - private var screenTimer = AnalyticsScreenTimer(screen: .sidebar) + private var screenTracker = AnalyticsScreenTracker(screen: .sidebar) private var sideMenuActionViews: [SideMenuActionView] = [] private weak var sideMenuVersionView: SideMenuVersionView? @@ -85,16 +85,7 @@ final class SideMenuViewController: UIViewController { super.viewWillAppear(animated) navigationController?.setNavigationBarHidden(true, animated: animated) - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - screenTimer.start() - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - screenTimer.stop() + screenTracker.trackScreen() } override var preferredStatusBarStyle: UIStatusBarStyle { diff --git a/Riot/Modules/Spaces/SpaceFeatureUnavailablePresenter.swift b/Riot/Modules/Spaces/SpaceFeatureUnavailablePresenter.swift index 62b51f756..02c8f4e10 100644 --- a/Riot/Modules/Spaces/SpaceFeatureUnavailablePresenter.swift +++ b/Riot/Modules/Spaces/SpaceFeatureUnavailablePresenter.swift @@ -37,7 +37,7 @@ final class SpaceFeatureUnavailablePresenter: NSObject { let navigationVC = RiotNavigationController(rootViewController: spaceFeatureUnavailableVC) - spaceFeatureUnavailableVC.navigationItem.rightBarButtonItem = MXKBarButtonItem(title: MatrixKitL10n.ok, style: .plain, action: { [weak navigationVC] in + spaceFeatureUnavailableVC.navigationItem.rightBarButtonItem = MXKBarButtonItem(title: VectorL10n.ok, style: .plain, action: { [weak navigationVC] in navigationVC?.dismiss(animated: true) }) diff --git a/Riot/Modules/Spaces/SpaceMembers/MemberList/SpaceMemberListViewController.swift b/Riot/Modules/Spaces/SpaceMembers/MemberList/SpaceMemberListViewController.swift index 9356ee904..c46b572e6 100644 --- a/Riot/Modules/Spaces/SpaceMembers/MemberList/SpaceMemberListViewController.swift +++ b/Riot/Modules/Spaces/SpaceMembers/MemberList/SpaceMemberListViewController.swift @@ -72,6 +72,12 @@ final class SpaceMemberListViewController: RoomParticipantsViewController { self.title = "" } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + AnalyticsScreenTracker.trackScreen(.spaceMembers) + } override var preferredStatusBarStyle: UIStatusBarStyle { return self.theme.statusBarStyle diff --git a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuViewController.swift b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuViewController.swift index 7b9bebea4..c8525d9ca 100644 --- a/Riot/Modules/Spaces/SpaceMenu/SpaceMenuViewController.swift +++ b/Riot/Modules/Spaces/SpaceMenu/SpaceMenuViewController.swift @@ -71,6 +71,12 @@ class SpaceMenuViewController: UIViewController { self.viewModel.viewDelegate = self } + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + AnalyticsScreenTracker.trackScreen(.spaceMenu) + } + override var preferredStatusBarStyle: UIStatusBarStyle { return self.theme.statusBarStyle } diff --git a/Riot/Modules/Spaces/SpaceRoomList/ExploreRoom/SpaceExploreRoomViewController.swift b/Riot/Modules/Spaces/SpaceRoomList/ExploreRoom/SpaceExploreRoomViewController.swift index 5c13e08f8..d528b5548 100644 --- a/Riot/Modules/Spaces/SpaceRoomList/ExploreRoom/SpaceExploreRoomViewController.swift +++ b/Riot/Modules/Spaces/SpaceRoomList/ExploreRoom/SpaceExploreRoomViewController.swift @@ -96,6 +96,7 @@ final class SpaceExploreRoomViewController: UIViewController { super.viewWillAppear(animated) self.keyboardAvoider?.startAvoiding() + AnalyticsScreenTracker.trackScreen(.spaceExploreRooms) } override func viewDidDisappear(_ animated: Bool) { diff --git a/Riot/Modules/Spaces/SpaceRoomList/SpaceChildRoomDetail/SpaceChildRoomDetailViewController.swift b/Riot/Modules/Spaces/SpaceRoomList/SpaceChildRoomDetail/SpaceChildRoomDetailViewController.swift index d6edac90f..ea99c46a6 100644 --- a/Riot/Modules/Spaces/SpaceRoomList/SpaceChildRoomDetail/SpaceChildRoomDetailViewController.swift +++ b/Riot/Modules/Spaces/SpaceRoomList/SpaceChildRoomDetail/SpaceChildRoomDetailViewController.swift @@ -74,6 +74,12 @@ final class SpaceChildRoomDetailViewController: UIViewController { self.viewModel.process(viewAction: .loadData) } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + AnalyticsScreenTracker.trackScreen(.roomPreview) + } override var preferredStatusBarStyle: UIStatusBarStyle { return self.theme.statusBarStyle diff --git a/Riot/Modules/SplitView/SplitViewCoordinator.swift b/Riot/Modules/SplitView/SplitViewCoordinator.swift index 2157cbd31..6b18a0ded 100644 --- a/Riot/Modules/SplitView/SplitViewCoordinator.swift +++ b/Riot/Modules/SplitView/SplitViewCoordinator.swift @@ -15,6 +15,7 @@ */ import Foundation +import MatrixSDK /// SplitViewCoordinatorParameters input parameters class SplitViewCoordinatorParameters { @@ -40,7 +41,7 @@ final class SplitViewCoordinator: NSObject, SplitViewCoordinatorType { // MARK: - Properties - // MARK: Private + // MARK: Private private let parameters: SplitViewCoordinatorParameters @@ -61,6 +62,8 @@ final class SplitViewCoordinator: NSObject, SplitViewCoordinatorType { // MARK: Public + private(set) var detailUserIndicatorPresenter: UserIndicatorTypePresenterProtocol? + var childCoordinators: [Coordinator] = [] weak var delegate: SplitViewCoordinatorDelegate? @@ -100,6 +103,8 @@ final class SplitViewCoordinator: NSObject, SplitViewCoordinatorType { // Setup split view controller self.splitViewController.viewControllers = [tabBarCoordinator.toPresentable(), detailNavigationController] + + updateUserIndicatorPresenter() self.add(childCoordinator: tabBarCoordinator) @@ -120,12 +125,12 @@ final class SplitViewCoordinator: NSObject, SplitViewCoordinatorType { } } - func toPresentable() -> UIViewController { + func toPresentable() -> UIViewController { return self.splitViewController } // TODO: Do not expose publicly this method - func resetDetails(animated: Bool) { + func resetDetails(animated: Bool) { // Be sure that the primary is then visible too. if splitViewController.displayMode == .primaryHidden { splitViewController.preferredDisplayMode = .allVisible @@ -135,7 +140,7 @@ final class SplitViewCoordinator: NSObject, SplitViewCoordinatorType { // Release the current selected item (room/contact/group...). self.tabBarCoordinator?.releaseSelectedItems() - } + } func popToHome(animated: Bool, completion: (() -> Void)?) { self.resetDetails(animated: animated) @@ -172,17 +177,17 @@ final class SplitViewCoordinator: NSObject, SplitViewCoordinatorType { // Set placeholder screen as root controller of detail navigation controller let placeholderDetailsVC = self.createPlaceholderDetailsViewController() detailNavigationRouter.setRootModule(placeholderDetailsVC, hideNavigationBar: false, animated: animated, popCompletion: nil) - } + } private func resetDetailNavigationController(animated: Bool) { if self.splitViewController.isCollapsed { - if let topMostNavigationController = self.selectedNavigationRouter?.modules.last as? UINavigationController, topMostNavigationController == self.detailNavigationController { + if let topMostNavigationController = self.selectedNavigationRouter?.modules.last as? UINavigationController, topMostNavigationController == self.detailNavigationController { self.selectedNavigationRouter?.popModule(animated: animated) - } + } } else { self.resetDetailNavigationControllerWithPlaceholder(animated: animated) - } + } } private func isPlaceholderShown(from secondaryViewController: UIViewController) -> Bool { @@ -255,6 +260,16 @@ final class SplitViewCoordinator: NSObject, SplitViewCoordinatorType { } } } + + private func updateUserIndicatorPresenter() { + guard let tabBarCoordinator = tabBarCoordinator, let detailNavigationController = detailNavigationController else { + MXLog.debug("[SplitViewCoordinator]: Missing tab bar or detail coordinator, cannot update user indicator presenter") + return + } + + let presentingViewController = splitViewController.isCollapsed ? tabBarCoordinator.toPresentable() : detailNavigationController + detailUserIndicatorPresenter = UserIndicatorTypePresenter(presentingViewController: presentingViewController) + } } // MARK: - UISplitViewControllerDelegate @@ -284,6 +299,8 @@ extension SplitViewCoordinator: UISplitViewControllerDelegate { // Restore detail navigation controller with placeholder as root self.resetDetailNavigationController(animated: false) + updateUserIndicatorPresenter() + // Return up to date detail navigation controller // In any cases `detailNavigationController` will be used as secondary view of the split view controller. return self.detailNavigationController @@ -294,6 +311,7 @@ extension SplitViewCoordinator: UISplitViewControllerDelegate { /// or true to indicate that you do not want the split view controller to do anything with the secondary view controller. /// Sample case: large iPhone goes from landscape to portrait. func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool { + updateUserIndicatorPresenter() // If the secondary view is the placeholder screen do not merge the secondary into the primary. // Note: In this case, the secondaryViewController will be automatically discarded. @@ -324,7 +342,6 @@ extension SplitViewCoordinator: TabBarCoordinatorDelegate { // MARK: - SplitViewMasterPresentableDelegate extension SplitViewCoordinator: SplitViewMasterPresentableDelegate { - var detailModules: [Presentable] { return self.detailNavigationRouter?.modules ?? [] } diff --git a/Riot/Modules/SplitView/SplitViewPresentable.swift b/Riot/Modules/SplitView/SplitViewPresentable.swift index 4e63663f1..4f02ea027 100644 --- a/Riot/Modules/SplitView/SplitViewPresentable.swift +++ b/Riot/Modules/SplitView/SplitViewPresentable.swift @@ -21,6 +21,9 @@ protocol SplitViewMasterPresentableDelegate: AnyObject { /// Detail items from the split view var detailModules: [Presentable] { get } + /// Shared presenter of user indicators for detail views, such as rooms + var detailUserIndicatorPresenter: UserIndicatorTypePresenterProtocol? { get } + /// Replace split view detail with the given detailPresentable func splitViewMasterPresentable(_ presentable: Presentable, wantsToReplaceDetailWith detailPresentable: Presentable, popCompletion: (() -> Void)?) diff --git a/Riot/Modules/StartChat/StartChatViewController.m b/Riot/Modules/StartChat/StartChatViewController.m index 9d8da5e52..216de7b47 100644 --- a/Riot/Modules/StartChat/StartChatViewController.m +++ b/Riot/Modules/StartChat/StartChatViewController.m @@ -81,7 +81,7 @@ // Assign itself as delegate self.contactsTableViewControllerDelegate = self; - self.screenTimer = [[AnalyticsScreenTimer alloc] initWithScreen:AnalyticsScreenStartChat]; + self.screenTracker = [[AnalyticsScreenTracker alloc] initWithScreen:AnalyticsScreenStartChat]; } - (void)viewDidLoad @@ -752,10 +752,10 @@ [contactsTableViewController refreshCurrentSelectedCell:YES]; - UIAlertController *alert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] + UIAlertController *alert = [UIAlertController alertControllerWithTitle:[VectorL10n error] message:[VectorL10n roomCreationErrorInviteUserByEmailWithoutIdentityServer] preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:nil]]; + [alert addAction:[UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:nil]]; [self presentViewController:alert animated:YES completion:nil]; return; diff --git a/Riot/Modules/TabBar/MasterTabBarController.h b/Riot/Modules/TabBar/MasterTabBarController.h index 6734a1528..c9948baf9 100644 --- a/Riot/Modules/TabBar/MasterTabBarController.h +++ b/Riot/Modules/TabBar/MasterTabBarController.h @@ -194,6 +194,5 @@ typedef NS_ENUM(NSUInteger, MasterTabBarIndex) { - (void)masterTabBarController:(MasterTabBarController *)masterTabBarController didSelectRoomPreviewWithParameters:(RoomPreviewNavigationParameters*)roomPreviewNavigationParameters completion:(void (^)(void))completion; - (void)masterTabBarController:(MasterTabBarController *)masterTabBarController didSelectContact:(MXKContact*)contact withPresentationParameters:(ScreenPresentationParameters*)presentationParameters; - (void)masterTabBarController:(MasterTabBarController *)masterTabBarController didSelectGroup:(MXGroup*)group inMatrixSession:(MXSession*)matrixSession presentationParameters:(ScreenPresentationParameters*)presentationParameters; -- (void)masterTabBarController:(MasterTabBarController *)masterTabBarController shouldPresentAnalyticsPromptForMatrixSession:(MXSession*)matrixSession; @end diff --git a/Riot/Modules/TabBar/MasterTabBarController.m b/Riot/Modules/TabBar/MasterTabBarController.m index 65ed41122..bc306b757 100644 --- a/Riot/Modules/TabBar/MasterTabBarController.m +++ b/Riot/Modules/TabBar/MasterTabBarController.m @@ -73,11 +73,6 @@ @property (nonatomic) BOOL reviewSessionAlertHasBeenDisplayed; -/** - A flag to indicate that the analytics prompt should be shown during `-addMatrixSession:`. - */ -@property(nonatomic) BOOL presentAnalyticsPromptOnAddSession; - @end @implementation MasterTabBarController @@ -204,20 +199,6 @@ if (!authIsShown) { - // Check whether the user should be prompted to send analytics. - if (Analytics.shared.shouldShowAnalyticsPrompt) - { - MXSession *mxSession = self.mxSessions.firstObject; - if (mxSession) - { - [self promptUserBeforeUsingAnalyticsForSession:mxSession]; - } - else - { - self.presentAnalyticsPromptOnAddSession = YES; - } - } - [self refreshTabBarBadges]; // Release properly pushed and/or presented view controller @@ -316,7 +297,7 @@ } } - titleView.titleLabel.text = self.selectedViewController.accessibilityLabel; + titleView.titleLabel.text = [self getTitleForItemViewController:self.selectedViewController]; // Need to be called in case of the controllers have been replaced [self.selectedViewController viewDidAppear:NO]; @@ -336,6 +317,8 @@ { NSInteger index = [self indexOfTabItemWithTag:tabBarIndex]; self.selectedIndex = index; + + titleView.titleLabel.text = [self getTitleForItemViewController:self.selectedViewController]; } #pragma mark - @@ -420,12 +403,6 @@ return; } - if (self.presentAnalyticsPromptOnAddSession) - { - self.presentAnalyticsPromptOnAddSession = NO; - [self promptUserBeforeUsingAnalyticsForSession:mxSession]; - } - // Check whether the controller'€™s view is loaded into memory. if (self.homeViewController) { @@ -825,6 +802,17 @@ self.navigationController.navigationBar.hidden = hidden; } +- (NSString*)getTitleForItemViewController:(UIViewController*)itemViewController +{ + if ([itemViewController conformsToProtocol:@protocol(MasterTabBarItemDisplayProtocol)]) + { + UIViewController *masterTabBarItem = (UIViewController*)itemViewController; + return masterTabBarItem.masterTabBarItemTitle; + } + + return nil; +} + #pragma mark - - (void)refreshTabBarBadges @@ -952,18 +940,6 @@ return NSNotFound; } -#pragma mark - - -- (void)promptUserBeforeUsingAnalyticsForSession:(MXSession *)mxSession -{ - // Analytics aren't collected on iOS 12 & 13. - if (@available(iOS 14.0, *)) - { - MXLogDebug(@"[MasterTabBarController]: Invite the user to send analytics"); - [self.masterTabBarDelegate masterTabBarController:self shouldPresentAnalyticsPromptForMatrixSession:mxSession]; - } -} - #pragma mark - Review session - (void)presentVerifyCurrentSessionAlertIfNeededWithSession:(MXSession*)session @@ -1115,7 +1091,7 @@ - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { - titleView.titleLabel.text = viewController.accessibilityLabel; + titleView.titleLabel.text = [self getTitleForItemViewController:viewController]; } @end diff --git a/Riot/Modules/TabBar/MasterTabBarItemDisplayProtocol.swift b/Riot/Modules/TabBar/MasterTabBarItemDisplayProtocol.swift new file mode 100644 index 000000000..c71fbdfe6 --- /dev/null +++ b/Riot/Modules/TabBar/MasterTabBarItemDisplayProtocol.swift @@ -0,0 +1,21 @@ +// +// 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 Foundation + +@objc protocol MasterTabBarItemDisplayProtocol { + var masterTabBarItemTitle: String { get } +} diff --git a/Riot/Modules/TabBar/TabBarCoordinator.swift b/Riot/Modules/TabBar/TabBarCoordinator.swift index 30ce90bc0..3e43f7f41 100644 --- a/Riot/Modules/TabBar/TabBarCoordinator.swift +++ b/Riot/Modules/TabBar/TabBarCoordinator.swift @@ -17,6 +17,7 @@ */ import UIKit +import CommonKit @objcMembers final class TabBarCoordinator: NSObject, TabBarCoordinatorType { @@ -27,6 +28,7 @@ final class TabBarCoordinator: NSObject, TabBarCoordinatorType { private let parameters: TabBarCoordinatorParameters private let activityIndicatorPresenter: ActivityIndicatorPresenterType + private let indicatorPresenter: UserIndicatorTypePresenterProtocol // Indicate if the Coordinator has started once private var hasStartedOnce: Bool { @@ -53,6 +55,8 @@ final class TabBarCoordinator: NSObject, TabBarCoordinatorType { return self.navigationRouter.modules.last is MasterTabBarController } + private var indicators = [UserIndicator]() + // MARK: Public // Must be used only internally @@ -71,6 +75,7 @@ final class TabBarCoordinator: NSObject, TabBarCoordinatorType { self.navigationRouter = NavigationRouter(navigationController: masterNavigationController) self.masterNavigationController = masterNavigationController self.activityIndicatorPresenter = ActivityIndicatorPresenter() + self.indicatorPresenter = UserIndicatorTypePresenter(presentingViewController: masterNavigationController) } // MARK: - Public methods @@ -226,10 +231,7 @@ final class TabBarCoordinator: NSObject, TabBarCoordinatorType { homeViewController.tabBarItem.tag = Int(TABBAR_HOME_INDEX) homeViewController.tabBarItem.image = homeViewController.tabBarItem.image homeViewController.accessibilityLabel = VectorL10n.titleHome - - if BuildSettings.appActivityIndicators { - homeViewController.activityPresenter = AppActivityIndicatorPresenter(appNavigator: parameters.appNavigator) - } + homeViewController.indicatorPresenter = UserIndicatorPresenterWrapper(presenter: indicatorPresenter) let wrapperViewController = HomeViewControllerWithBannerWrapperViewController(viewController: homeViewController) return wrapperViewController @@ -239,6 +241,7 @@ final class TabBarCoordinator: NSObject, TabBarCoordinatorType { let favouritesViewController: FavouritesViewController = FavouritesViewController.instantiate() favouritesViewController.tabBarItem.tag = Int(TABBAR_FAVOURITES_INDEX) favouritesViewController.accessibilityLabel = VectorL10n.titleFavourites + favouritesViewController.indicatorPresenter = UserIndicatorPresenterWrapper(presenter: indicatorPresenter) return favouritesViewController } @@ -246,6 +249,7 @@ final class TabBarCoordinator: NSObject, TabBarCoordinatorType { let peopleViewController: PeopleViewController = PeopleViewController.instantiate() peopleViewController.tabBarItem.tag = Int(TABBAR_PEOPLE_INDEX) peopleViewController.accessibilityLabel = VectorL10n.titlePeople + peopleViewController.indicatorPresenter = UserIndicatorPresenterWrapper(presenter: indicatorPresenter) return peopleViewController } @@ -253,6 +257,7 @@ final class TabBarCoordinator: NSObject, TabBarCoordinatorType { let roomsViewController: RoomsViewController = RoomsViewController.instantiate() roomsViewController.tabBarItem.tag = Int(TABBAR_ROOMS_INDEX) roomsViewController.accessibilityLabel = VectorL10n.titleRooms + roomsViewController.indicatorPresenter = UserIndicatorPresenterWrapper(presenter: indicatorPresenter) return roomsViewController } @@ -409,7 +414,9 @@ final class TabBarCoordinator: NSObject, TabBarCoordinatorType { } else { displayConfig = .default } + let roomCoordinatorParameters = RoomCoordinatorParameters(navigationRouterStore: NavigationRouterStore.shared, + userIndicatorPresenter: splitViewMasterPresentableDelegate?.detailUserIndicatorPresenter, session: roomNavigationParameters.mxSession, roomId: roomNavigationParameters.roomId, eventId: roomNavigationParameters.eventId, @@ -575,24 +582,6 @@ final class TabBarCoordinator: NSObject, TabBarCoordinatorType { self.splitViewMasterPresentableDelegate?.splitViewMasterPresentableWantsToResetDetail(self) } - @available(iOS 14.0, *) - private func presentAnalyticsPrompt(with session: MXSession) { - let parameters = AnalyticsPromptCoordinatorParameters(session: session) - let coordinator = AnalyticsPromptCoordinator(parameters: parameters) - - coordinator.completion = { [weak self, weak coordinator] in - guard let self = self, let coordinator = coordinator else { return } - - self.navigationRouter.dismissModule(animated: true, completion: nil) - self.remove(childCoordinator: coordinator) - } - - add(childCoordinator: coordinator) - - navigationRouter.present(coordinator, animated: true) - coordinator.start() - } - // MARK: UserSessions management private func registerUserSessionsServiceNotifications() { @@ -684,12 +673,6 @@ extension TabBarCoordinator: MasterTabBarControllerDelegate { self.masterTabBarController.navigationItem.leftBarButtonItem = sideMenuBarButtonItem } - - func masterTabBarController(_ masterTabBarController: MasterTabBarController!, shouldPresentAnalyticsPromptForMatrixSession matrixSession: MXSession!) { - if #available(iOS 14.0, *) { - presentAnalyticsPrompt(with: matrixSession) - } - } } // MARK: - RoomCoordinatorDelegate @@ -702,6 +685,9 @@ extension TabBarCoordinator: RoomCoordinatorDelegate { func roomCoordinatorDidLeaveRoom(_ coordinator: RoomCoordinatorProtocol) { // For the moment when a room is left, reset the split detail with placeholder self.resetSplitViewDetails() + indicatorPresenter + .present(.success(label: VectorL10n.roomParticipantsLeaveSuccess)) + .store(in: &indicators) } func roomCoordinatorDidCancelRoomPreview(_ coordinator: RoomCoordinatorProtocol) { diff --git a/Riot/Modules/Threads/ThreadList/ThreadListViewController.swift b/Riot/Modules/Threads/ThreadList/ThreadListViewController.swift index 1a34664e0..f4075a0cf 100644 --- a/Riot/Modules/Threads/ThreadList/ThreadListViewController.swift +++ b/Riot/Modules/Threads/ThreadList/ThreadListViewController.swift @@ -69,6 +69,7 @@ final class ThreadListViewController: UIViewController { super.viewWillAppear(animated) self.keyboardAvoider?.startAvoiding() + AnalyticsScreenTracker.trackScreen(.threadList) } override func viewDidDisappear(_ animated: Bool) { @@ -290,6 +291,8 @@ final class ThreadListViewController: UIViewController { @objc private func filterButtonTapped(_ sender: UIBarButtonItem) { self.viewModel.process(viewAction: .showFilterTypes) + + Analytics.shared.trackInteraction(.threadListFilterItem) } @IBAction private func longPressed(_ sender: UILongPressGestureRecognizer) { @@ -355,6 +358,8 @@ extension ThreadListViewController: UITableViewDelegate { tableView.deselectRow(at: indexPath, animated: true) viewModel.process(viewAction: .selectThread(indexPath.row)) + + Analytics.shared.trackInteraction(.threadListThreadItem) } } diff --git a/Riot/Modules/UserDevices/Views/DeviceTableViewCell.m b/Riot/Modules/UserDevices/Views/DeviceTableViewCell.m index d2f3a045c..7d88e19ad 100644 --- a/Riot/Modules/UserDevices/Views/DeviceTableViewCell.m +++ b/Riot/Modules/UserDevices/Views/DeviceTableViewCell.m @@ -57,20 +57,20 @@ { self.deviceStatus.image = AssetImages.e2eWarning.image; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoVerify] forState:UIControlStateNormal]; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoVerify] forState:UIControlStateHighlighted]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoBlock] forState:UIControlStateNormal]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoBlock] forState:UIControlStateHighlighted]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoVerify] forState:UIControlStateNormal]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoVerify] forState:UIControlStateHighlighted]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoBlock] forState:UIControlStateNormal]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoBlock] forState:UIControlStateHighlighted]; break; } case MXDeviceVerified: { self.deviceStatus.image = AssetSharedImages.e2eVerified.image; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoUnverify] forState:UIControlStateNormal]; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoUnverify] forState:UIControlStateHighlighted]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoBlock] forState:UIControlStateNormal]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoBlock] forState:UIControlStateHighlighted]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoUnverify] forState:UIControlStateNormal]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoUnverify] forState:UIControlStateHighlighted]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoBlock] forState:UIControlStateNormal]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoBlock] forState:UIControlStateHighlighted]; break; } @@ -78,10 +78,10 @@ { self.deviceStatus.image = AssetImages.e2eBlocked.image; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoVerify] forState:UIControlStateNormal]; - [_verifyButton setTitle:[MatrixKitL10n roomEventEncryptionInfoVerify] forState:UIControlStateHighlighted]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoUnblock] forState:UIControlStateNormal]; - [_blockButton setTitle:[MatrixKitL10n roomEventEncryptionInfoUnblock] forState:UIControlStateHighlighted]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoVerify] forState:UIControlStateNormal]; + [_verifyButton setTitle:[VectorL10n roomEventEncryptionInfoVerify] forState:UIControlStateHighlighted]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoUnblock] forState:UIControlStateNormal]; + [_blockButton setTitle:[VectorL10n roomEventEncryptionInfoUnblock] forState:UIControlStateHighlighted]; break; } diff --git a/Riot/Modules/UserInteractiveAuthentication/UserInteractiveAuthenticationViewControllerFactory.swift b/Riot/Modules/UserInteractiveAuthentication/UserInteractiveAuthenticationViewControllerFactory.swift index 09ea9270e..335aeabce 100644 --- a/Riot/Modules/UserInteractiveAuthentication/UserInteractiveAuthenticationViewControllerFactory.swift +++ b/Riot/Modules/UserInteractiveAuthentication/UserInteractiveAuthenticationViewControllerFactory.swift @@ -43,11 +43,11 @@ final class UserInteractiveAuthenticationViewControllerFactory: NSObject { textField.keyboardType = .default } - alertController.addAction(UIAlertAction(title: MatrixKitL10n.cancel, style: .cancel, handler: { _ in + alertController.addAction(UIAlertAction(title: VectorL10n.cancel, style: .cancel, handler: { _ in onCancelled() })) - alertController.addAction(UIAlertAction(title: MatrixKitL10n.ok, style: .default, handler: { _ in + alertController.addAction(UIAlertAction(title: VectorL10n.ok, style: .default, handler: { _ in guard let password = alertController.textFields?.first?.text else { // Should not happen diff --git a/Riot/SupportingFiles/Riot-Bridging-Header.h b/Riot/SupportingFiles/Riot-Bridging-Header.h index 4b517a310..6530d005d 100644 --- a/Riot/SupportingFiles/Riot-Bridging-Header.h +++ b/Riot/SupportingFiles/Riot-Bridging-Header.h @@ -18,7 +18,7 @@ #import "RoomBubbleCellData.h" #import "MXKRoomBubbleTableViewCell+Riot.h" #import "UserEncryptionTrustLevel.h" -#import "BubbleReactionsViewSizer.h" +#import "RoomReactionsViewSizer.h" #import "RoomEncryptedDataBubbleCell.h" #import "LegacyAppDelegate.h" #import "DirectoryServerPickerViewController.h" diff --git a/Riot/Utils/EventFormatter.m b/Riot/Utils/EventFormatter.m index 88c504bf0..e1dbffbb6 100644 --- a/Riot/Utils/EventFormatter.m +++ b/Riot/Utils/EventFormatter.m @@ -64,6 +64,38 @@ static NSString *const kEventFormatterTimeFormat = @"HH:mm"; } - (NSAttributedString *)attributedStringFromEvent:(MXEvent *)event withRoomState:(MXRoomState *)roomState error:(MXKEventFormatterError *)error +{ + NSAttributedString *string = [self unsafeAttributedStringFromEvent:event withRoomState:roomState error:error]; + + // If we cannot create attributed string, but the message is nevertheless meant for display (e.g. not an edit event), show generic error + // instead of a missing message on a timeline. + if (!string && [self shouldDisplayEvent:event]) + { + MXLogError(@"[EventFormatter]: Cannot format string for displayable event: %@, type: %@, msgtype: %@, has room state: %d, members: %lu, error: %lu", + event.eventId, + event.type, + event.content[@"msgtype"], + roomState != nil, + roomState.membersCount.members, + *error); + string = [[NSAttributedString alloc] initWithString:[VectorL10n noticeErrorUnformattableEvent] attributes:@{ + NSFontAttributeName: [self encryptedMessagesTextFont] + }]; + } + return string; +} + +- (BOOL)shouldDisplayEvent:(MXEvent *)event { + return [self.eventTypesFilterForMessages containsObject:event.type] + && !event.isEditEvent + && !event.isRedactedEvent; +} + +// The attributed string can fail to be created for a number of reasons, and the size of the function (as well as super's implementation) makes +// it impossible to catch all the `return nil` and failure states. +// To make catching of missing strings reliable (and not place that burden on callers), we use private `unsafeAttributedStringFromEvent` method +// which is called by the public `attributedStringFromEvent`, and which also handles the catch-all missing message. +- (NSAttributedString *)unsafeAttributedStringFromEvent:(MXEvent *)event withRoomState:(MXRoomState *)roomState error:(MXKEventFormatterError *)error { if (event.isRedactedEvent) { @@ -425,10 +457,12 @@ static NSString *const kEventFormatterTimeFormat = @"HH:mm"; // Check whether this avatar url is updated by the current event (This happens in case of new joined member) NSString* membership = event.content[@"membership"]; - if (membership && [membership isEqualToString:@"join"] && [event.content[@"avatar_url"] length]) + NSString* eventAvatarUrl = event.content[@"avatar_url"]; + NSString* prevEventAvatarUrl = event.prevContent[@"avatar_url"]; + if (membership && [membership isEqualToString:@"join"] && [eventAvatarUrl length] && ![eventAvatarUrl isEqualToString:prevEventAvatarUrl]) { // Use the actual avatar - senderAvatarUrl = event.content[@"avatar_url"]; + senderAvatarUrl = eventAvatarUrl; } // We ignore non mxc avatar url (The identicons are removed here). diff --git a/Riot/target.yml b/Riot/target.yml index 1abcaae6c..8f2d95d2c 100644 --- a/Riot/target.yml +++ b/Riot/target.yml @@ -90,6 +90,7 @@ targets: - path: Assets/en.lproj/InfoPlist.strings - path: Assets/en.lproj/Localizable.strings - path: Assets/en.lproj/Vector.strings + - path: Assets/en.lproj/Untranslated.strings - path: Assets/eo.lproj/InfoPlist.strings - path: Assets/eo.lproj/Localizable.strings - path: Assets/eo.lproj/Vector.strings @@ -147,6 +148,9 @@ targets: - path: Assets/sv.lproj/InfoPlist.strings - path: Assets/sv.lproj/Localizable.strings - path: Assets/sv.lproj/Vector.strings + - path: Assets/uk.lproj/InfoPlist.strings + - path: Assets/uk.lproj/Localizable.strings + - path: Assets/uk.lproj/Vector.strings - path: Assets/vi.lproj/InfoPlist.strings - path: Assets/vi.lproj/Localizable.strings - path: Assets/vi.lproj/Vector.strings diff --git a/RiotNSE/target.yml b/RiotNSE/target.yml index 77e72852f..644b91c84 100644 --- a/RiotNSE/target.yml +++ b/RiotNSE/target.yml @@ -67,5 +67,4 @@ targets: - path: ../Riot/Managers/AppInfo/ excludes: - "**/*.md" # excludes all files with the .md extension - - path: ../Riot/Generated/MatrixKitStrings.swift - path: ../Riot/Modules/Room/TimelineCells/Styles/RoomTimelineStyleIdentifier.swift diff --git a/RiotShareExtension/Shared/ShareManager.m b/RiotShareExtension/Shared/ShareManager.m index d24289188..ad7a75ad3 100644 --- a/RiotShareExtension/Shared/ShareManager.m +++ b/RiotShareExtension/Shared/ShareManager.m @@ -137,7 +137,7 @@ UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:nil preferredStyle:UIAlertControllerStyleAlert]; MXWeakify(self); - UIAlertAction *okAction = [UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { + UIAlertAction *okAction = [UIAlertAction actionWithTitle:[VectorL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { MXStrongifyAndReturnIfNil(self); if (self.completionCallback) diff --git a/RiotShareExtension/Shared/View/RecentRoomTableViewCell.m b/RiotShareExtension/Shared/View/RecentRoomTableViewCell.m index b33952e20..e86a37a24 100644 --- a/RiotShareExtension/Shared/View/RecentRoomTableViewCell.m +++ b/RiotShareExtension/Shared/View/RecentRoomTableViewCell.m @@ -88,7 +88,7 @@ self.roomTitleLabel.text = roomCellData.roomDisplayname; if (!self.roomTitleLabel.text.length) { - self.roomTitleLabel.text = [MatrixKitL10n roomDisplaynameEmptyRoom]; + self.roomTitleLabel.text = [VectorL10n roomDisplaynameEmptyRoom]; } self.encryptedRoomIcon.hidden = YES; diff --git a/RiotShareExtension/Sources/ShareItemSender.m b/RiotShareExtension/Sources/ShareItemSender.m index fdc213033..1758622ec 100644 --- a/RiotShareExtension/Sources/ShareItemSender.m +++ b/RiotShareExtension/Sources/ShareItemSender.m @@ -315,13 +315,13 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode) return nil; } - UIAlertController *compressionPrompt = [UIAlertController alertControllerWithTitle:[MatrixKitL10n attachmentSizePromptTitle] - message:[MatrixKitL10n attachmentSizePromptMessage] + UIAlertController *compressionPrompt = [UIAlertController alertControllerWithTitle:[VectorL10n attachmentSizePromptTitle] + message:[VectorL10n attachmentSizePromptMessage] preferredStyle:UIAlertControllerStyleActionSheet]; if (compressionSizes.small.fileSize) { - NSString *title = [MatrixKitL10n attachmentSmall:[MXTools fileSizeToString:compressionSizes.small.fileSize]]; + NSString *title = [VectorL10n attachmentSmall:[MXTools fileSizeToString:compressionSizes.small.fileSize]]; MXWeakify(self); [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -336,7 +336,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode) if (compressionSizes.medium.fileSize) { - NSString *title = [MatrixKitL10n attachmentMedium:[MXTools fileSizeToString:compressionSizes.medium.fileSize]]; + NSString *title = [VectorL10n attachmentMedium:[MXTools fileSizeToString:compressionSizes.medium.fileSize]]; MXWeakify(self); [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -353,7 +353,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode) // TODO: Remove this condition when issue https://github.com/vector-im/riot-ios/issues/2341 will be fixed. if (compressionSizes.large.fileSize && (MAX(compressionSizes.large.imageSize.width, compressionSizes.large.imageSize.height) <= kLargeImageSizeMaxDimension)) { - NSString *title = [MatrixKitL10n attachmentLarge:[MXTools fileSizeToString:compressionSizes.large.fileSize]]; + NSString *title = [VectorL10n attachmentLarge:[MXTools fileSizeToString:compressionSizes.large.fileSize]]; MXWeakify(self); [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -373,7 +373,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode) { NSString *fileSizeString = [MXTools fileSizeToString:compressionSizes.original.fileSize]; - NSString *title = [MatrixKitL10n attachmentOriginal:fileSizeString]; + NSString *title = [VectorL10n attachmentOriginal:fileSizeString]; MXWeakify(self); [compressionPrompt addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { @@ -386,7 +386,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode) }]]; } - [compressionPrompt addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] + [compressionPrompt addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:nil]]; @@ -669,7 +669,7 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode) message:[VectorL10n shareExtensionLowQualityVideoMessage:AppInfo.current.displayName] preferredStyle:UIAlertControllerStyleAlert]; - UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:MatrixKitL10n.cancel style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { + UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:VectorL10n.cancel style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { // Do nothing }]; UIAlertAction *sendAction = [UIAlertAction actionWithTitle:VectorL10n.shareExtensionSendNow style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { diff --git a/RiotShareExtension/target.yml b/RiotShareExtension/target.yml index 44ebc5312..29813f2d1 100644 --- a/RiotShareExtension/target.yml +++ b/RiotShareExtension/target.yml @@ -74,5 +74,4 @@ targets: - path: ../Riot/Managers/UserSessions excludes: - "**/*.md" # excludes all files with the .md extension - - path: ../Riot/Generated/MatrixKitStrings.swift - path: ../Riot/Modules/Room/TimelineCells/Styles/RoomTimelineStyleIdentifier.swift diff --git a/RiotSwiftUI/Modules/AnalyticsPrompt/Coordinator/AnalyticsPromptCoordinator.swift b/RiotSwiftUI/Modules/AnalyticsPrompt/Coordinator/AnalyticsPromptCoordinator.swift index 32884fea0..f96fe3eb9 100644 --- a/RiotSwiftUI/Modules/AnalyticsPrompt/Coordinator/AnalyticsPromptCoordinator.swift +++ b/RiotSwiftUI/Modules/AnalyticsPrompt/Coordinator/AnalyticsPromptCoordinator.swift @@ -57,7 +57,7 @@ final class AnalyticsPromptCoordinator: Coordinator, Presentable { promptType = .newUser } - let viewModel = AnalyticsPromptViewModel(promptType: promptType, strings: strings, termsURL: BuildSettings.analyticsTermsURL) + let viewModel = AnalyticsPromptViewModel(promptType: promptType, strings: strings, termsURL: BuildSettings.analyticsConfiguration.termsURL) let view = AnalyticsPrompt(viewModel: viewModel.context) _analyticsPromptViewModel = viewModel diff --git a/RiotSwiftUI/Modules/AnalyticsPrompt/View/AnalyticsPrompt.swift b/RiotSwiftUI/Modules/AnalyticsPrompt/View/AnalyticsPrompt.swift index 178d1d215..816498006 100644 --- a/RiotSwiftUI/Modules/AnalyticsPrompt/View/AnalyticsPrompt.swift +++ b/RiotSwiftUI/Modules/AnalyticsPrompt/View/AnalyticsPrompt.swift @@ -125,6 +125,8 @@ struct AnalyticsPrompt: View { .background(theme.colors.background.ignoresSafeArea()) .accentColor(theme.colors.accent) } + .navigationBarHidden(true) + .navigationBarBackButtonHidden(true) } } diff --git a/RiotSwiftUI/Modules/Common/ErrorHandling/AlertInfo.swift b/RiotSwiftUI/Modules/Common/ErrorHandling/AlertInfo.swift new file mode 100644 index 000000000..509eb81d0 --- /dev/null +++ b/RiotSwiftUI/Modules/Common/ErrorHandling/AlertInfo.swift @@ -0,0 +1,79 @@ +// +// 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 SwiftUI + +/// A type that describes an alert to be shown to the user. +/// +/// The alert info can be added to the view state bindings and used as an alert's `item`: +/// ``` +/// MyView +/// .alert(item: $viewModel.alertInfo) { $0.alert } +/// ``` +struct AlertInfo: Identifiable { + /// An identifier that can be used to distinguish one error from another. + let id: T + /// The alert's title. + let title: String + /// The alert's message (optional). + var message: String? = nil + /// The alert's primary button title and action. Defaults to an Ok button with no action. + var primaryButton: (title: String, action: (() -> Void)?) = (VectorL10n.ok, nil) + /// The alert's secondary button title and action. + var secondaryButton: (title: String, action: (() -> Void)?)? = nil +} + +extension AlertInfo where T == Int { + /// Initialises the type with the title and message from an `NSError` along with the default Ok button. + init?(error: NSError? = nil) { + guard error?.domain != NSURLErrorDomain && error?.code != NSURLErrorCancelled else { return nil } + + id = error?.code ?? -1 + title = error?.userInfo[NSLocalizedFailureReasonErrorKey] as? String ?? VectorL10n.error + message = error?.userInfo[NSLocalizedDescriptionKey] as? String ?? VectorL10n.errorCommonMessage + } +} + +@available(iOS 13.0, *) +extension AlertInfo { + private var messageText: Text? { + guard let message = message else { return nil } + return Text(message) + } + + /// Returns a SwiftUI `Alert` created from this alert info, using default button + /// styles for both primary and (if set) secondary buttons. + var alert: Alert { + if let secondaryButton = secondaryButton { + return Alert(title: Text(title), + message: messageText, + primaryButton: alertButton(for: primaryButton), + secondaryButton: alertButton(for: secondaryButton)) + } else { + return Alert(title: Text(title), + message: messageText, + dismissButton: alertButton(for: primaryButton)) + } + } + + private func alertButton(for buttonParameters: (title: String, action: (() -> Void)?)) -> Alert.Button { + guard let action = buttonParameters.action else { + return .default(Text(buttonParameters.title)) + } + + return .default(Text(buttonParameters.title), action: action) + } +} diff --git a/RiotSwiftUI/Modules/Common/Mock/MockAppScreens.swift b/RiotSwiftUI/Modules/Common/Mock/MockAppScreens.swift index 242e4c088..73981575f 100644 --- a/RiotSwiftUI/Modules/Common/Mock/MockAppScreens.swift +++ b/RiotSwiftUI/Modules/Common/Mock/MockAppScreens.swift @@ -20,6 +20,7 @@ import Foundation @available(iOS 14.0, *) enum MockAppScreens { static let appScreens: [MockScreenState.Type] = [ + MockOnboardingCongratulationsScreenState.self, MockOnboardingUseCaseSelectionScreenState.self, MockOnboardingSplashScreenScreenState.self, MockLocationSharingScreenState.self, diff --git a/RiotSwiftUI/Modules/Common/Util/ScreenTrackerViewModifier.swift b/RiotSwiftUI/Modules/Common/Util/ScreenTrackerViewModifier.swift new file mode 100644 index 000000000..6e96348fc --- /dev/null +++ b/RiotSwiftUI/Modules/Common/Util/ScreenTrackerViewModifier.swift @@ -0,0 +1,40 @@ +// +// 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 SwiftUI + +@available(iOS 14.0, *) +/// `ScreenTrackerViewModifier` is a helper class used to track PostHog screen from SwiftUI screens. +struct ScreenTrackerViewModifier: ViewModifier { + let screen: AnalyticsScreen + + @ViewBuilder + func body(content: Content) -> some View { + content + .onAppear { + #if canImport(MatrixSDK) + Analytics.shared.trackScreen(screen) + #endif + } + } +} + +@available(iOS 14.0, *) +extension View { + func track(screen: AnalyticsScreen) -> some View { + return self.modifier(ScreenTrackerViewModifier(screen: screen)) + } +} diff --git a/RiotSwiftUI/Modules/Onboarding/Congratulations/Coordinator/OnboardingCongratulationsCoordinator.swift b/RiotSwiftUI/Modules/Onboarding/Congratulations/Coordinator/OnboardingCongratulationsCoordinator.swift new file mode 100644 index 000000000..6bed87cc2 --- /dev/null +++ b/RiotSwiftUI/Modules/Onboarding/Congratulations/Coordinator/OnboardingCongratulationsCoordinator.swift @@ -0,0 +1,64 @@ +// +// 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 SwiftUI + +struct OnboardingCongratulationsCoordinatorParameters { + let userId: String +} + +final class OnboardingCongratulationsCoordinator: Coordinator, Presentable { + + // MARK: - Properties + + // MARK: Private + + private let parameters: OnboardingCongratulationsCoordinatorParameters + private let onboardingCongratulationsHostingController: UIViewController + private var onboardingCongratulationsViewModel: OnboardingCongratulationsViewModelProtocol + + // MARK: Public + + // Must be used only internally + var childCoordinators: [Coordinator] = [] + var completion: ((OnboardingCongratulationsViewModelResult) -> Void)? + + // MARK: - Setup + + @available(iOS 14.0, *) + init(parameters: OnboardingCongratulationsCoordinatorParameters) { + self.parameters = parameters + + let viewModel = OnboardingCongratulationsViewModel(userId: parameters.userId) + let view = OnboardingCongratulationsScreen(viewModel: viewModel.context) + onboardingCongratulationsViewModel = viewModel + onboardingCongratulationsHostingController = VectorHostingController(rootView: view) + } + + // MARK: - Public + func start() { + MXLog.debug("[OnboardingCongratulationsCoordinator] did start.") + onboardingCongratulationsViewModel.completion = { [weak self] result in + guard let self = self else { return } + MXLog.debug("[OnboardingCongratulationsCoordinator] OnboardingCongratulationsViewModel did complete with result: \(result).") + self.completion?(result) + } + } + + func toPresentable() -> UIViewController { + return self.onboardingCongratulationsHostingController + } +} diff --git a/RiotSwiftUI/Modules/Onboarding/Congratulations/MockOnboardingCongratulationsScreenState.swift b/RiotSwiftUI/Modules/Onboarding/Congratulations/MockOnboardingCongratulationsScreenState.swift new file mode 100644 index 000000000..4aa617f1c --- /dev/null +++ b/RiotSwiftUI/Modules/Onboarding/Congratulations/MockOnboardingCongratulationsScreenState.swift @@ -0,0 +1,46 @@ +// +// 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 Foundation +import SwiftUI + +/// Using an enum for the screen allows you define the different state cases with +/// the relevant associated data for each case. +@available(iOS 14.0, *) +enum MockOnboardingCongratulationsScreenState: MockScreenState, CaseIterable { + // A case for each state you want to represent + // with specific, minimal associated data that will allow you + // mock that screen. + case congratulations + + /// The associated screen + var screenType: Any.Type { + OnboardingCongratulationsScreen.self + } + + /// Generate the view struct for the screen state. + var screenView: ([Any], AnyView) { + let viewModel = OnboardingCongratulationsViewModel(userId: "@testuser:example.com") + + // can simulate service and viewModel actions here if needs be. + + return ( + [self, viewModel], + AnyView(OnboardingCongratulationsScreen(viewModel: viewModel.context) + .addDependency(MockAvatarService.example)) + ) + } +} diff --git a/RiotSwiftUI/Modules/Onboarding/Congratulations/OnboardingCongratulationsModels.swift b/RiotSwiftUI/Modules/Onboarding/Congratulations/OnboardingCongratulationsModels.swift new file mode 100644 index 000000000..d8eb9e926 --- /dev/null +++ b/RiotSwiftUI/Modules/Onboarding/Congratulations/OnboardingCongratulationsModels.swift @@ -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 Foundation + +// MARK: - Coordinator + +// MARK: View model + +enum OnboardingCongratulationsViewModelResult { + case personaliseProfile + case takeMeHome +} + +// MARK: View + +struct OnboardingCongratulationsViewState: BindableState { + var userId: String +} + +enum OnboardingCongratulationsViewAction { + case personaliseProfile + case takeMeHome +} diff --git a/RiotSwiftUI/Modules/Onboarding/Congratulations/OnboardingCongratulationsViewModel.swift b/RiotSwiftUI/Modules/Onboarding/Congratulations/OnboardingCongratulationsViewModel.swift new file mode 100644 index 000000000..26a7ebfdd --- /dev/null +++ b/RiotSwiftUI/Modules/Onboarding/Congratulations/OnboardingCongratulationsViewModel.swift @@ -0,0 +1,50 @@ +// +// 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 SwiftUI + +@available(iOS 14, *) +typealias OnboardingCongratulationsViewModelType = StateStoreViewModel +@available(iOS 14, *) +class OnboardingCongratulationsViewModel: OnboardingCongratulationsViewModelType, OnboardingCongratulationsViewModelProtocol { + + // MARK: - Properties + + // MARK: Private + + // MARK: Public + + var completion: ((OnboardingCongratulationsViewModelResult) -> Void)? + + // MARK: - Setup + + init(userId: String, initialCount: Int = 0) { + super.init(initialViewState: OnboardingCongratulationsViewState(userId: userId)) + } + + // MARK: - Public + + override func process(viewAction: OnboardingCongratulationsViewAction) { + switch viewAction { + case .personaliseProfile: + completion?(.personaliseProfile) + case .takeMeHome: + completion?(.takeMeHome) + } + } +} diff --git a/RiotSwiftUI/Modules/Onboarding/Congratulations/OnboardingCongratulationsViewModelProtocol.swift b/RiotSwiftUI/Modules/Onboarding/Congratulations/OnboardingCongratulationsViewModelProtocol.swift new file mode 100644 index 000000000..72bde393e --- /dev/null +++ b/RiotSwiftUI/Modules/Onboarding/Congratulations/OnboardingCongratulationsViewModelProtocol.swift @@ -0,0 +1,24 @@ +// +// 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 Foundation + +protocol OnboardingCongratulationsViewModelProtocol { + + var completion: ((OnboardingCongratulationsViewModelResult) -> Void)? { get set } + @available(iOS 14, *) + var context: OnboardingCongratulationsViewModelType.Context { get } +} diff --git a/RiotSwiftUI/Modules/Onboarding/Congratulations/Test/UI/OnboardingCongratulationsUITests.swift b/RiotSwiftUI/Modules/Onboarding/Congratulations/Test/UI/OnboardingCongratulationsUITests.swift new file mode 100644 index 000000000..5b46e5c97 --- /dev/null +++ b/RiotSwiftUI/Modules/Onboarding/Congratulations/Test/UI/OnboardingCongratulationsUITests.swift @@ -0,0 +1,40 @@ +// +// 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 XCTest +import RiotSwiftUI + +@available(iOS 14.0, *) +class OnboardingCongratulationsUITests: MockScreenTest { + + override class var screenType: MockScreenState.Type { + return MockOnboardingCongratulationsScreenState.self + } + + override class func createTest() -> MockScreenTest { + return OnboardingCongratulationsUITests(selector: #selector(verifyOnboardingCongratulationsScreen)) + } + + func verifyOnboardingCongratulationsScreen() throws { + guard let screenState = screenState as? MockOnboardingCongratulationsScreenState else { fatalError("no screen") } + switch screenState { + case .congratulations: + // There isn't anything to test here + break + } + } + +} diff --git a/RiotSwiftUI/Modules/Onboarding/Congratulations/Test/Unit/OnboardingCongratulationsViewModelTests.swift b/RiotSwiftUI/Modules/Onboarding/Congratulations/Test/Unit/OnboardingCongratulationsViewModelTests.swift new file mode 100644 index 000000000..44352f799 --- /dev/null +++ b/RiotSwiftUI/Modules/Onboarding/Congratulations/Test/Unit/OnboardingCongratulationsViewModelTests.swift @@ -0,0 +1,24 @@ +// +// 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 XCTest + +@testable import RiotSwiftUI + +@available(iOS 14.0, *) +class OnboardingCongratulationsViewModelTests: XCTestCase { + // The view modal has minimal set up and no mutation so nothing to test. +} diff --git a/RiotSwiftUI/Modules/Onboarding/Congratulations/View/OnboardingCongratulationsScreen.swift b/RiotSwiftUI/Modules/Onboarding/Congratulations/View/OnboardingCongratulationsScreen.swift new file mode 100644 index 000000000..892f904fc --- /dev/null +++ b/RiotSwiftUI/Modules/Onboarding/Congratulations/View/OnboardingCongratulationsScreen.swift @@ -0,0 +1,109 @@ +// +// 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 SwiftUI + +@available(iOS 14.0, *) +struct OnboardingCongratulationsScreen: View { + + // MARK: - Properties + + // MARK: Private + + @Environment(\.theme) private var theme + @Environment(\.horizontalSizeClass) private var horizontalSizeClass + + private var horizontalPadding: CGFloat { + horizontalSizeClass == .regular ? 50 : 16 + } + + // MARK: Public + + @ObservedObject var viewModel: OnboardingCongratulationsViewModel.Context + + // MARK: Views + + var body: some View { + GeometryReader { geometry in + VStack { + mainContent + .padding(.top, 60) + .padding(.horizontal, horizontalPadding) + + Spacer() + + buttons + .padding(.horizontal, horizontalPadding) + .padding(.bottom, 24) + .padding(.bottom, geometry.safeAreaInsets.bottom > 0 ? 0 : 16) + } + .frame(maxWidth: OnboardingConstants.maxContentWidth, + maxHeight: OnboardingConstants.maxContentHeight) + .frame(maxWidth: .infinity, maxHeight: .infinity) + } + .background(theme.colors.accent.ignoresSafeArea()) + .accentColor(.white) + .navigationBarHidden(true) + .preferredColorScheme(.dark) // make the status bar white + } + + /// The main content of the view to be shown in a scroll view. + var mainContent: some View { + VStack(spacing: 62) { + Image(Asset.Images.onboardingCongratulationsIcon.name) + .accessibilityHidden(true) + + VStack(spacing: 8) { + Text(VectorL10n.onboardingCongratulationsTitle) + .font(theme.fonts.title2B) + .foregroundColor(.white) + + Text(VectorL10n.onboardingCongratulationsMessage(viewModel.viewState.userId)) + .font(theme.fonts.body) + .foregroundColor(.white) + .multilineTextAlignment(.center) + } + } + } + + /// The action buttons shown at the bottom of the view. + var buttons: some View { + VStack(spacing: 12) { + Button { viewModel.send(viewAction: .personaliseProfile) } label: { + Text(VectorL10n.onboardingCongratulationsPersonaliseButton) + .font(theme.fonts.bodySB) + .foregroundColor(theme.colors.accent) + } + .buttonStyle(PrimaryActionButtonStyle(customColor: .white)) + + Button { viewModel.send(viewAction: .takeMeHome) } label: { + Text(VectorL10n.onboardingCongratulationsHomeButton) + .font(theme.fonts.body) + .padding(.vertical, 12) + } + } + } +} + +// MARK: - Previews + +@available(iOS 14.0, *) +struct OnboardingCongratulationsScreen_Previews: PreviewProvider { + static let stateRenderer = MockOnboardingCongratulationsScreenState.stateRenderer + static var previews: some View { + stateRenderer.screenGroup() + } +} diff --git a/RiotSwiftUI/Modules/Onboarding/SplashScreen/View/OnboardingSplashScreen.swift b/RiotSwiftUI/Modules/Onboarding/SplashScreen/View/OnboardingSplashScreen.swift index d8c13982a..1bda362d6 100644 --- a/RiotSwiftUI/Modules/Onboarding/SplashScreen/View/OnboardingSplashScreen.swift +++ b/RiotSwiftUI/Modules/Onboarding/SplashScreen/View/OnboardingSplashScreen.swift @@ -112,8 +112,11 @@ struct OnboardingSplashScreen: View { .background(theme.colors.background.ignoresSafeArea()) .accentColor(theme.colors.accent) .navigationBarHidden(true) - .onAppear { startTimer() } + .onAppear { + startTimer() + } .onDisappear { stopTimer() } + .track(screen: .welcome) } // MARK: - Animation diff --git a/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingModels.swift b/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingModels.swift index 33190fcc6..a23adb6f2 100644 --- a/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingModels.swift +++ b/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingModels.swift @@ -58,21 +58,13 @@ struct LocationSharingViewState: BindableState { } struct LocationSharingViewStateBindings { - var alertInfo: LocationSharingErrorAlertInfo? + var alertInfo: AlertInfo? var userLocation: CLLocationCoordinate2D? } -struct LocationSharingErrorAlertInfo: Identifiable { - enum AlertType { - case mapLoadingError - case userLocatingError - case authorizationError - case locationSharingError - } - - let id: AlertType - let title: String - var subtitle: String? = nil - let primaryButton: (title: String, action: (() -> Void)?) - var secondaryButton: (title: String, action: (() -> Void)?)? = nil +enum LocationSharingAlertType { + case mapLoadingError + case userLocatingError + case authorizationError + case locationSharingError } diff --git a/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingViewModel.swift b/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingViewModel.swift index 824b539d9..8cbecc88a 100644 --- a/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingViewModel.swift +++ b/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingViewModel.swift @@ -72,14 +72,14 @@ class LocationSharingViewModel: LocationSharingViewModelType, LocationSharingVie state.showLoadingIndicator = true } - func stopLoading(error: LocationSharingErrorAlertInfo.AlertType?) { + func stopLoading(error: LocationSharingAlertType?) { state.showLoadingIndicator = false if let error = error { - state.bindings.alertInfo = LocationSharingErrorAlertInfo(id: error, - title: VectorL10n.locationSharingPostFailureTitle, - subtitle: VectorL10n.locationSharingPostFailureSubtitle(AppInfo.current.displayName), - primaryButton: (VectorL10n.ok, nil)) + state.bindings.alertInfo = AlertInfo(id: error, + title: VectorL10n.locationSharingPostFailureTitle, + message: VectorL10n.locationSharingPostFailureSubtitle(AppInfo.current.displayName), + primaryButton: (VectorL10n.ok, nil)) } } @@ -96,18 +96,18 @@ class LocationSharingViewModel: LocationSharingViewModelType, LocationSharingVie switch error { case .failedLoadingMap: - state.bindings.alertInfo = LocationSharingErrorAlertInfo(id: .mapLoadingError, - title: VectorL10n.locationSharingLoadingMapErrorTitle(AppInfo.current.displayName), - primaryButton: (VectorL10n.ok, primaryButtonCompletion)) + state.bindings.alertInfo = AlertInfo(id: .mapLoadingError, + title: VectorL10n.locationSharingLoadingMapErrorTitle(AppInfo.current.displayName), + primaryButton: (VectorL10n.ok, primaryButtonCompletion)) case .failedLocatingUser: - state.bindings.alertInfo = LocationSharingErrorAlertInfo(id: .userLocatingError, - title: VectorL10n.locationSharingLocatingUserErrorTitle(AppInfo.current.displayName), - primaryButton: (VectorL10n.ok, primaryButtonCompletion)) + state.bindings.alertInfo = AlertInfo(id: .userLocatingError, + title: VectorL10n.locationSharingLocatingUserErrorTitle(AppInfo.current.displayName), + primaryButton: (VectorL10n.ok, primaryButtonCompletion)) case .invalidLocationAuthorization: - state.bindings.alertInfo = LocationSharingErrorAlertInfo(id: .authorizationError, - title: VectorL10n.locationSharingInvalidAuthorizationErrorTitle(AppInfo.current.displayName), - primaryButton: (VectorL10n.locationSharingInvalidAuthorizationNotNow, primaryButtonCompletion), - secondaryButton: (VectorL10n.locationSharingInvalidAuthorizationSettings, { + state.bindings.alertInfo = AlertInfo(id: .authorizationError, + title: VectorL10n.locationSharingInvalidAuthorizationErrorTitle(AppInfo.current.displayName), + primaryButton: (VectorL10n.locationSharingInvalidAuthorizationNotNow, primaryButtonCompletion), + secondaryButton: (VectorL10n.locationSharingInvalidAuthorizationSettings, { if let applicationSettingsURL = URL(string:UIApplication.openSettingsURLString) { UIApplication.shared.open(applicationSettingsURL) } diff --git a/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingViewModelProtocol.swift b/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingViewModelProtocol.swift index 38fbde4d4..a15349a3b 100644 --- a/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingViewModelProtocol.swift +++ b/RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingViewModelProtocol.swift @@ -20,7 +20,7 @@ protocol LocationSharingViewModelProtocol { var completion: ((LocationSharingViewModelResult) -> Void)? { get set } func startLoading() - func stopLoading(error: LocationSharingErrorAlertInfo.AlertType?) + func stopLoading(error: LocationSharingAlertType?) } extension LocationSharingViewModelProtocol { diff --git a/RiotSwiftUI/Modules/Room/LocationSharing/View/LocationSharingView.swift b/RiotSwiftUI/Modules/Room/LocationSharing/View/LocationSharingView.swift index 5c69349cc..61de9bfe2 100644 --- a/RiotSwiftUI/Modules/Room/LocationSharing/View/LocationSharingView.swift +++ b/RiotSwiftUI/Modules/Room/LocationSharing/View/LocationSharingView.swift @@ -79,22 +79,7 @@ struct LocationSharingView: View { ThemeService.shared().theme.applyStyle(onNavigationBar: navigationController.navigationBar) } .alert(item: $context.alertInfo) { info in - if let secondaryButton = info.secondaryButton { - return Alert(title: Text(info.title), - message: subtitleTextForAlertInfo(info), - primaryButton: .default(Text(info.primaryButton.title)) { - info.primaryButton.action?() - }, - secondaryButton: .default(Text(secondaryButton.title)) { - secondaryButton.action?() - }) - } else { - return Alert(title: Text(info.title), - message: subtitleTextForAlertInfo(info), - dismissButton: .default(Text(info.primaryButton.title)) { - info.primaryButton.action?() - }) - } + info.alert } } .accentColor(theme.colors.accent) @@ -108,14 +93,6 @@ struct LocationSharingView: View { ActivityIndicator() } } - - private func subtitleTextForAlertInfo(_ alertInfo: LocationSharingErrorAlertInfo) -> Text? { - guard let subtitle = alertInfo.subtitle else { - return nil - } - - return Text(subtitle) - } } // MARK: - Previews diff --git a/RiotSwiftUI/Modules/Room/NotificationSettings/View/RoomNotificationSettings.swift b/RiotSwiftUI/Modules/Room/NotificationSettings/View/RoomNotificationSettings.swift index 84e6f41c1..ee0389982 100644 --- a/RiotSwiftUI/Modules/Room/NotificationSettings/View/RoomNotificationSettings.swift +++ b/RiotSwiftUI/Modules/Room/NotificationSettings/View/RoomNotificationSettings.swift @@ -70,6 +70,7 @@ struct RoomNotificationSettings: View { viewModel.process(viewAction: .load) } .accentColor(theme.colors.accent) + .track(screen: .roomNotifications) } } diff --git a/RiotSwiftUI/Modules/Room/TimelinePoll/TimelinePollModels.swift b/RiotSwiftUI/Modules/Room/TimelinePoll/TimelinePollModels.swift index e6a22e5e8..619088c25 100644 --- a/RiotSwiftUI/Modules/Room/TimelinePoll/TimelinePollModels.swift +++ b/RiotSwiftUI/Modules/Room/TimelinePoll/TimelinePollModels.swift @@ -99,16 +99,10 @@ struct TimelinePollViewState: BindableState { } struct TimelinePollViewStateBindings { - var alertInfo: TimelinePollErrorAlertInfo? + var alertInfo: AlertInfo? } -struct TimelinePollErrorAlertInfo: Identifiable { - enum AlertType { - case failedClosingPoll - case failedSubmittingAnswer - } - - let id: AlertType - let title: String - let subtitle: String +enum TimelinePollAlertType { + case failedClosingPoll + case failedSubmittingAnswer } diff --git a/RiotSwiftUI/Modules/Room/TimelinePoll/TimelinePollViewModel.swift b/RiotSwiftUI/Modules/Room/TimelinePoll/TimelinePollViewModel.swift index a139442ef..69d7894a1 100644 --- a/RiotSwiftUI/Modules/Room/TimelinePoll/TimelinePollViewModel.swift +++ b/RiotSwiftUI/Modules/Room/TimelinePoll/TimelinePollViewModel.swift @@ -64,15 +64,15 @@ class TimelinePollViewModel: TimelinePollViewModelType, TimelinePollViewModelPro } func showAnsweringFailure() { - state.bindings.alertInfo = TimelinePollErrorAlertInfo(id: .failedSubmittingAnswer, - title: VectorL10n.pollTimelineVoteNotRegisteredTitle, - subtitle: VectorL10n.pollTimelineVoteNotRegisteredSubtitle) + state.bindings.alertInfo = AlertInfo(id: .failedSubmittingAnswer, + title: VectorL10n.pollTimelineVoteNotRegisteredTitle, + message: VectorL10n.pollTimelineVoteNotRegisteredSubtitle) } func showClosingFailure() { - state.bindings.alertInfo = TimelinePollErrorAlertInfo(id: .failedClosingPoll, - title: VectorL10n.pollTimelineNotClosedTitle, - subtitle: VectorL10n.pollTimelineNotClosedSubtitle) + state.bindings.alertInfo = AlertInfo(id: .failedClosingPoll, + title: VectorL10n.pollTimelineNotClosedTitle, + message: VectorL10n.pollTimelineNotClosedSubtitle) } // MARK: - Private diff --git a/RiotSwiftUI/Modules/Room/TimelinePoll/View/TimelinePollView.swift b/RiotSwiftUI/Modules/Room/TimelinePoll/View/TimelinePollView.swift index 89efbeb17..afe687536 100644 --- a/RiotSwiftUI/Modules/Room/TimelinePoll/View/TimelinePollView.swift +++ b/RiotSwiftUI/Modules/Room/TimelinePoll/View/TimelinePollView.swift @@ -58,9 +58,7 @@ struct TimelinePollView: View { .padding([.horizontal, .top], 2.0) .padding([.bottom]) .alert(item: $viewModel.alertInfo) { info in - Alert(title: Text(info.title), - message: Text(info.subtitle), - dismissButton: .default(Text(VectorL10n.ok))) + info.alert } } diff --git a/RiotSwiftUI/Modules/Settings/Notifications/View/DefaultNotificationSettings.swift b/RiotSwiftUI/Modules/Settings/Notifications/View/DefaultNotificationSettings.swift index 41fdb94fa..6973421af 100644 --- a/RiotSwiftUI/Modules/Settings/Notifications/View/DefaultNotificationSettings.swift +++ b/RiotSwiftUI/Modules/Settings/Notifications/View/DefaultNotificationSettings.swift @@ -24,6 +24,7 @@ struct DefaultNotificationSettings: View { var body: some View { NotificationSettings(viewModel: viewModel) .navigationBarTitle(VectorL10n.settingsDefault) + .track(screen: .settingsDefaultNotifications) } } diff --git a/RiotSwiftUI/Modules/Settings/Notifications/View/MentionsAndKeywordNotificationSettings.swift b/RiotSwiftUI/Modules/Settings/Notifications/View/MentionsAndKeywordNotificationSettings.swift index a890ed30e..82bae5b1d 100644 --- a/RiotSwiftUI/Modules/Settings/Notifications/View/MentionsAndKeywordNotificationSettings.swift +++ b/RiotSwiftUI/Modules/Settings/Notifications/View/MentionsAndKeywordNotificationSettings.swift @@ -35,6 +35,7 @@ struct MentionsAndKeywordNotificationSettings: View { bottomSection: keywordSection ) .navigationTitle(VectorL10n.settingsMentionsAndKeywords) + .track(screen: .settingsMentionsAndKeywords) } } diff --git a/RiotSwiftUI/Modules/Settings/Notifications/View/OtherNotificationSettings.swift b/RiotSwiftUI/Modules/Settings/Notifications/View/OtherNotificationSettings.swift index a929159b3..e0205b83a 100644 --- a/RiotSwiftUI/Modules/Settings/Notifications/View/OtherNotificationSettings.swift +++ b/RiotSwiftUI/Modules/Settings/Notifications/View/OtherNotificationSettings.swift @@ -23,6 +23,7 @@ struct OtherNotificationSettings: View { var body: some View { NotificationSettings(viewModel: viewModel) .navigationTitle(VectorL10n.settingsOther) + .track(screen: .settingsNotifications) } } diff --git a/RiotSwiftUI/Modules/Template/SimpleScreenExample/Coordinator/TemplateSimpleScreenCoordinator.swift b/RiotSwiftUI/Modules/Template/SimpleScreenExample/Coordinator/TemplateSimpleScreenCoordinator.swift index 394ab913a..a051f1c57 100644 --- a/RiotSwiftUI/Modules/Template/SimpleScreenExample/Coordinator/TemplateSimpleScreenCoordinator.swift +++ b/RiotSwiftUI/Modules/Template/SimpleScreenExample/Coordinator/TemplateSimpleScreenCoordinator.swift @@ -52,8 +52,8 @@ final class TemplateSimpleScreenCoordinator: Coordinator, Presentable { func start() { MXLog.debug("[TemplateSimpleScreenCoordinator] did start.") templateSimpleScreenViewModel.completion = { [weak self] result in - MXLog.debug("[TemplateSimpleScreenCoordinator] TemplateSimpleScreenViewModel did complete with result: \(result).") guard let self = self else { return } + MXLog.debug("[TemplateSimpleScreenCoordinator] TemplateSimpleScreenViewModel did complete with result: \(result).") self.completion?(result) } } diff --git a/RiotSwiftUI/Modules/Template/SimpleUserProfileExample/Coordinator/TemplateUserProfileCoordinator.swift b/RiotSwiftUI/Modules/Template/SimpleUserProfileExample/Coordinator/TemplateUserProfileCoordinator.swift index da0b965be..f70e6402c 100644 --- a/RiotSwiftUI/Modules/Template/SimpleUserProfileExample/Coordinator/TemplateUserProfileCoordinator.swift +++ b/RiotSwiftUI/Modules/Template/SimpleUserProfileExample/Coordinator/TemplateUserProfileCoordinator.swift @@ -52,8 +52,8 @@ final class TemplateUserProfileCoordinator: Coordinator, Presentable { func start() { MXLog.debug("[TemplateUserProfileCoordinator] did start.") templateUserProfileViewModel.completion = { [weak self] result in - MXLog.debug("[TemplateUserProfileCoordinator] TemplateUserProfileViewModel did complete with result: \(result).") guard let self = self else { return } + MXLog.debug("[TemplateUserProfileCoordinator] TemplateUserProfileViewModel did complete with result: \(result).") switch result { case .cancel, .done: self.completion?() diff --git a/RiotSwiftUI/Modules/Template/TemplateAdvancedRoomsExample/TemplateRoomChat/Coordinator/TemplateRoomChatCoordinator.swift b/RiotSwiftUI/Modules/Template/TemplateAdvancedRoomsExample/TemplateRoomChat/Coordinator/TemplateRoomChatCoordinator.swift index a4a75ef88..d9a5e10f2 100644 --- a/RiotSwiftUI/Modules/Template/TemplateAdvancedRoomsExample/TemplateRoomChat/Coordinator/TemplateRoomChatCoordinator.swift +++ b/RiotSwiftUI/Modules/Template/TemplateAdvancedRoomsExample/TemplateRoomChat/Coordinator/TemplateRoomChatCoordinator.swift @@ -52,8 +52,8 @@ final class TemplateRoomChatCoordinator: Coordinator, Presentable { func start() { MXLog.debug("[TemplateRoomChatCoordinator] did start.") templateRoomChatViewModel.callback = { [weak self] result in - MXLog.debug("[TemplateRoomChatCoordinator] TemplateRoomChatViewModel did complete with result: \(result).") guard let self = self else { return } + MXLog.debug("[TemplateRoomChatCoordinator] TemplateRoomChatViewModel did complete with result: \(result).") switch result { case .done: self.callback?() diff --git a/RiotSwiftUI/Modules/Template/TemplateAdvancedRoomsExample/TemplateRoomList/Coordinator/TemplateRoomListCoordinator.swift b/RiotSwiftUI/Modules/Template/TemplateAdvancedRoomsExample/TemplateRoomList/Coordinator/TemplateRoomListCoordinator.swift index 6c7cfd36f..6a0ff1ba7 100644 --- a/RiotSwiftUI/Modules/Template/TemplateAdvancedRoomsExample/TemplateRoomList/Coordinator/TemplateRoomListCoordinator.swift +++ b/RiotSwiftUI/Modules/Template/TemplateAdvancedRoomsExample/TemplateRoomList/Coordinator/TemplateRoomListCoordinator.swift @@ -53,8 +53,8 @@ final class TemplateRoomListCoordinator: Coordinator, Presentable { func start() { MXLog.debug("[TemplateRoomListCoordinator] did start.") templateRoomListViewModel.callback = { [weak self] result in - MXLog.debug("[TemplateRoomListCoordinator] TemplateRoomListViewModel did complete with result \(result).") guard let self = self else { return } + MXLog.debug("[TemplateRoomListCoordinator] TemplateRoomListViewModel did complete with result \(result).") switch result { case .didSelectRoom(let roomId): self.callback?(.didSelectRoom(roomId)) diff --git a/RiotSwiftUI/target.yml b/RiotSwiftUI/target.yml index 6929672cd..0c270c460 100644 --- a/RiotSwiftUI/target.yml +++ b/RiotSwiftUI/target.yml @@ -42,6 +42,7 @@ targets: - path: ../Riot/Managers/AppInfo/ - path: ../Riot/Categories/Bundle.swift - path: ../Riot/Generated/Strings.swift + - path: ../Riot/Generated/UntranslatedStrings.swift - path: ../Riot/Generated/Images.swift - path: ../Riot/Managers/Theme/ - path: ../Riot/Managers/Locale/LocaleProviderType.swift @@ -50,6 +51,8 @@ targets: - path: ../Riot/Categories/UIColor.swift - path: ../Riot/Categories/UISearchBar.swift - path: ../Riot/Assets/en.lproj/Vector.strings + - path: ../Riot/Modules/Analytics/AnalyticsScreen.swift + - path: ../Riot/Assets/en.lproj/Untranslated.strings buildPhase: resources - path: ../Riot/Assets/Images.xcassets buildPhase: resources diff --git a/RiotSwiftUI/targetUITests.yml b/RiotSwiftUI/targetUITests.yml index b96d2c2fe..612f09230 100644 --- a/RiotSwiftUI/targetUITests.yml +++ b/RiotSwiftUI/targetUITests.yml @@ -50,6 +50,7 @@ targets: - path: ../Riot/Managers/AppInfo/ - path: ../Riot/Categories/Bundle.swift - path: ../Riot/Generated/Strings.swift + - path: ../Riot/Generated/UntranslatedStrings.swift - path: ../Riot/Generated/Images.swift - path: ../Riot/Managers/Theme/ - path: ../Riot/Managers/Locale/LocaleProviderType.swift @@ -58,6 +59,8 @@ targets: - path: ../Riot/Categories/UIColor.swift - path: ../Riot/Categories/UISearchBar.swift - path: ../Riot/Assets/en.lproj/Vector.strings + - path: ../Riot/Modules/Analytics/AnalyticsScreen.swift + - path: ../Riot/Assets/en.lproj/Untranslated.strings buildPhase: resources - path: ../Riot/Assets/Images.xcassets buildPhase: resources diff --git a/RiotSwiftUI/targetUnitTests.yml b/RiotSwiftUI/targetUnitTests.yml index dbf54400c..a0d596d55 100644 --- a/RiotSwiftUI/targetUnitTests.yml +++ b/RiotSwiftUI/targetUnitTests.yml @@ -50,6 +50,7 @@ targets: PROVISIONING_PROFILE: $(RIOT_PROVISIONING_PROFILE) PROVISIONING_PROFILE_SPECIFIER: $(RIOT_PROVISIONING_PROFILE_SPECIFIER) sources: + - path: ../Riot/Modules/Analytics/AnalyticsScreen.swift - path: ../RiotSwiftUI/Modules includes: - "**/Test" diff --git a/RiotTests/AnalyticsTests.swift b/RiotTests/AnalyticsTests.swift index 148a23bc8..f5abbeb7f 100644 --- a/RiotTests/AnalyticsTests.swift +++ b/RiotTests/AnalyticsTests.swift @@ -78,43 +78,46 @@ class AnalyticsTests: XCTestCase { XCTAssertNil(client.pendingUserProperties, "No user properties should have been set yet.") // When updating the user properties - client.updateUserProperties(AnalyticsEvent.UserProperties(ftueUseCaseSelection: .PersonalMessaging, numSpaces: 5)) + client.updateUserProperties(AnalyticsEvent.UserProperties(ftueUseCaseSelection: .PersonalMessaging, numFavouriteRooms: 4, numSpaces: 5)) // Then the properties should be cached XCTAssertNotNil(client.pendingUserProperties, "The user properties should be cached.") XCTAssertEqual(client.pendingUserProperties?.ftueUseCaseSelection, .PersonalMessaging, "The use case selection should match.") + XCTAssertEqual(client.pendingUserProperties?.numFavouriteRooms, 4, "The number of favorite rooms should match.") XCTAssertEqual(client.pendingUserProperties?.numSpaces, 5, "The number of spaces should match.") } func testMergingUserProperties() { // Given a client with a cached use case user properties let client = PostHogAnalyticsClient() - client.updateUserProperties(AnalyticsEvent.UserProperties(ftueUseCaseSelection: .PersonalMessaging, numSpaces: nil)) + client.updateUserProperties(AnalyticsEvent.UserProperties(ftueUseCaseSelection: .PersonalMessaging, numFavouriteRooms: nil, numSpaces: nil)) XCTAssertNotNil(client.pendingUserProperties, "The user properties should be cached.") XCTAssertEqual(client.pendingUserProperties?.ftueUseCaseSelection, .PersonalMessaging, "The use case selection should match.") + XCTAssertNil(client.pendingUserProperties?.numFavouriteRooms, "The number of favorite rooms should not be set.") XCTAssertNil(client.pendingUserProperties?.numSpaces, "The number of spaces should not be set.") // When updating the number of spaced - client.updateUserProperties(AnalyticsEvent.UserProperties(ftueUseCaseSelection: nil, numSpaces: 5)) + client.updateUserProperties(AnalyticsEvent.UserProperties(ftueUseCaseSelection: nil, numFavouriteRooms: 4, numSpaces: 5)) // Then the new properties should be updated and the existing properties should remain unchanged XCTAssertNotNil(client.pendingUserProperties, "The user properties should be cached.") XCTAssertEqual(client.pendingUserProperties?.ftueUseCaseSelection, .PersonalMessaging, "The use case selection shouldn't have changed.") + XCTAssertEqual(client.pendingUserProperties?.numFavouriteRooms, 4, "The number of favorite rooms should have been updated.") XCTAssertEqual(client.pendingUserProperties?.numSpaces, 5, "The number of spaces should have been updated.") } func testSendingUserProperties() { // Given a client with user properties set let client = PostHogAnalyticsClient() - client.updateUserProperties(AnalyticsEvent.UserProperties(ftueUseCaseSelection: .PersonalMessaging, numSpaces: nil)) + client.updateUserProperties(AnalyticsEvent.UserProperties(ftueUseCaseSelection: .PersonalMessaging, numFavouriteRooms: nil, numSpaces: nil)) client.start() XCTAssertNotNil(client.pendingUserProperties, "The user properties should be cached.") XCTAssertEqual(client.pendingUserProperties?.ftueUseCaseSelection, .PersonalMessaging, "The use case selection should match.") // When sending an event (tests run under Debug configuration so this is sent to the development instance) - client.screen(AnalyticsEvent.Screen(durationMs: nil, screenName: .Home)) + client.screen(AnalyticsEvent.MobileScreen(durationMs: nil, screenName: .Home)) // Then the properties should be cleared XCTAssertNil(client.pendingUserProperties, "The user properties should be cleared.") @@ -123,7 +126,7 @@ class AnalyticsTests: XCTestCase { func testSendingUserPropertiesWithIdentify() { // Given a client with user properties set let client = PostHogAnalyticsClient() - client.updateUserProperties(AnalyticsEvent.UserProperties(ftueUseCaseSelection: .PersonalMessaging, numSpaces: nil)) + client.updateUserProperties(AnalyticsEvent.UserProperties(ftueUseCaseSelection: .PersonalMessaging, numFavouriteRooms: nil, numSpaces: nil)) client.start() XCTAssertNotNil(client.pendingUserProperties, "The user properties should be cached.") diff --git a/SiriIntents/target.yml b/SiriIntents/target.yml index a048b5c46..e08667db3 100644 --- a/SiriIntents/target.yml +++ b/SiriIntents/target.yml @@ -58,5 +58,4 @@ targets: - path: ../Riot/Generated/Strings.swift excludes: - "**/*.md" # excludes all files with the .md extension - - path: ../Riot/Generated/MatrixKitStrings.swift - path: ../Riot/Modules/Room/TimelineCells/Styles/RoomTimelineStyleIdentifier.swift diff --git a/Tools/SwiftGen/Templates/Strings/matrixkit-flat-swift4-vector.stencil b/Tools/SwiftGen/Templates/Strings/flat-swift4-vector-untranslated.stencil similarity index 77% rename from Tools/SwiftGen/Templates/Strings/matrixkit-flat-swift4-vector.stencil rename to Tools/SwiftGen/Templates/Strings/flat-swift4-vector-untranslated.stencil index 9c5f75cfe..1f3a3a107 100644 --- a/Tools/SwiftGen/Templates/Strings/matrixkit-flat-swift4-vector.stencil +++ b/Tools/SwiftGen/Templates/Strings/flat-swift4-vector-untranslated.stencil @@ -32,11 +32,11 @@ import Foundation {% endif %} {% if string.types %} {{accessModifier}} static func {{string.key|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}}({% call parametersBlock string.types %}) -> String { - return {{className}}.tr("{{string.key}}", {% call argumentsBlock string.types %}) + return {{className}}.tr("{{table}}", "{{string.key}}", {% call argumentsBlock string.types %}) } {% else %} - {{accessModifier}} static var {{string.key|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}}: String { - return {{className}}.tr("{{string.key}}") + static var {{string.key|swiftIdentifier:"pretty"|lowerFirstWord|escapeReservedKeywords}}: String { + return {{className}}.tr("{{table}}", "{{string.key}}") } {% endif %} {% endfor %} @@ -46,8 +46,7 @@ import Foundation {% endmacro %} // swiftlint:disable function_parameter_count identifier_name line_length type_body_length {% set className %}{{param.className|default:"L10n"}}{% endset %} -@objcMembers -{{accessModifier}} class {{className}}: NSObject { +{{accessModifier}} extension {{className}} { {% if tables.count > 1 %} {% for table in tables %} {{accessModifier}} class {{table.name|swiftIdentifier:"pretty"|escapeReservedKeywords}} { @@ -60,16 +59,6 @@ import Foundation } // swiftlint:enable function_parameter_count identifier_name line_length type_body_length -// MARK: - Implementation Details - -extension {{className}} { - static func tr(_ key: String, _ args: CVarArg...) -> String { - let format = Bundle.mxk_localizedString(forKey: key)! - return String(format: format, arguments: args) - } -} - -private final class BundleToken {} {% else %} // No string found {% endif %} diff --git a/Tools/SwiftGen/swiftgen-config.yml b/Tools/SwiftGen/swiftgen-config.yml index a561f43ae..957f70fae 100755 --- a/Tools/SwiftGen/swiftgen-config.yml +++ b/Tools/SwiftGen/swiftgen-config.yml @@ -16,12 +16,12 @@ strings: params: className: VectorL10n publicAccess: true - - inputs: Modules/MatrixKit/Assets/MatrixKitAssets.bundle/en.lproj/MatrixKit.strings + - inputs: Assets/en.lproj/Untranslated.strings outputs: - templatePath: Templates/Strings/matrixkit-flat-swift4-vector.stencil - output: MatrixKitStrings.swift + templatePath: Templates/Strings/flat-swift4-vector-untranslated.stencil + output: UntranslatedStrings.swift params: - className: MatrixKitL10n + className: VectorL10n publicAccess: true xcassets: inputs: