diff --git a/NearbyShare/InboundNearbyConnection.swift b/NearbyShare/InboundNearbyConnection.swift index 80fab66..015fe44 100644 --- a/NearbyShare/InboundNearbyConnection.swift +++ b/NearbyShare/InboundNearbyConnection.swift @@ -17,7 +17,7 @@ import SwiftECC class InboundNearbyConnection: NearbyConnection { private var currentState: State = .initial - private var wasRejected = false + public var wasRejected = false public var delegate: InboundNearbyConnectionDelegate? private var cipherCommitment: Data? @@ -38,13 +38,11 @@ class InboundNearbyConnection: NearbyConnection { super.disconnect() currentState = .disconnected - if !self.wasRejected { - DispatchQueue.main.async { - self.delegate?.connectionWasTerminated(connection: self, error: self.lastError) - - SaveFilesManager.shared.movePendingFilesToTarget() - SaveFilesManager.shared.stopAccessingSecurityScopedResource() - } + DispatchQueue.main.async { + self.delegate?.connectionWasTerminated(connection: self, error: self.lastError) + + SaveFilesManager.shared.movePendingFilesToTarget() + SaveFilesManager.shared.stopAccessingSecurityScopedResource() } } diff --git a/NearbyShare/NearbyConnectionManager.swift b/NearbyShare/NearbyConnectionManager.swift index a5ee046..934911e 100644 --- a/NearbyShare/NearbyConnectionManager.swift +++ b/NearbyShare/NearbyConnectionManager.swift @@ -12,20 +12,19 @@ import System public class NearbyConnectionManager: NSObject, NetServiceDelegate, InboundNearbyConnectionDelegate, OutboundNearbyConnectionDelegate { + private let sleepManager = SleepManager.shared private var tcpListener: NWListener - public let endpointID: [UInt8] = generateEndpointID() private var mdnsServices: [NetService] = [] - private var activeConnections: [String: InboundNearbyConnection] = [:] + private var incomingConnections: [String: InboundNearbyConnection] = [:] private var foundServices: [String: FoundServiceInfo] = [:] private var shareExtensionDelegates: [ShareExtensionDelegate] = [] private var outgoingTransfers: [String: OutgoingTransferInfo] = [:] - public var mainAppDelegate: (any MainAppDelegate)? private var discoveryRefCount = 0 + private var browsers: [NWBrowser] = [] + private let serviceTypes = ["_FC9F5ED42C8A._tcp."] - let serviceTypes = ["_FC9F5ED42C8A._tcp."] - - private var browsers: [NWBrowser] = [] - + public let endpointID: [UInt8] = generateEndpointID() + public var mainAppDelegate: (any MainAppDelegate)? public static let shared = NearbyConnectionManager() @@ -49,7 +48,7 @@ public class NearbyConnectionManager: NSObject, NetServiceDelegate, InboundNearb tcpListener.newConnectionHandler = { (connection: NWConnection) in let id = UUID().uuidString let conn = InboundNearbyConnection(connection: connection, id: id) - self.activeConnections[id] = conn + self.incomingConnections[id] = conn conn.delegate = self conn.start() } @@ -70,7 +69,7 @@ public class NearbyConnectionManager: NSObject, NetServiceDelegate, InboundNearb // Generate a new random ID var id: [UInt8] = [] let alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".compactMap { UInt8($0.asciiValue!) } - for _ in 0 ..< 4 { // use 0..<4 instead of 0...3 for clarity + for _ in 0 ..< 4 { id.append(alphabet[Int.random(in: 0 ..< alphabet.count)]) } @@ -89,6 +88,7 @@ public class NearbyConnectionManager: NSObject, NetServiceDelegate, InboundNearb 0xFC, 0x9F, 0x5E, // Service ID hash 0, 0, ] + let name = Data(nameBytes).urlSafeBase64EncodedString() let endpointInfo = EndpointInfo(name: Host.current().localizedName!, deviceType: .computer) @@ -107,20 +107,21 @@ public class NearbyConnectionManager: NSObject, NetServiceDelegate, InboundNearb func obtainUserConsent(for transfer: TransferMetadata, from device: RemoteDeviceInfo, connection _: InboundNearbyConnection) { - guard let delegate = mainAppDelegate else { return } - delegate.obtainUserConsent(for: transfer, from: device) + mainAppDelegate?.obtainUserConsent(for: transfer, from: device) } func connectionWasTerminated(connection: InboundNearbyConnection, error: Error?) { - guard let delegate = mainAppDelegate else { return } - delegate.incomingTransfer(id: connection.id, didFinishWith: error) - activeConnections.removeValue(forKey: connection.id) + incomingConnections.removeValue(forKey: connection.id) + + if !connection.wasRejected { + mainAppDelegate?.incomingTransfer(id: connection.id, didFinishWith: error) + } } public func submitUserConsent(transferID: String, accept: Bool, storeInTemp: Bool = false) { - guard let conn = activeConnections[transferID] else { return } + guard let conn = incomingConnections[transferID] else { return } log("Submitting user consent for transfer, accepted: \(accept), store in temp: \(storeInTemp)") conn.submitUserConsent(accepted: accept, storeInTemp: storeInTemp) @@ -304,7 +305,7 @@ public class NearbyConnectionManager: NSObject, NetServiceDelegate, InboundNearb public func getActiveConnectionsCount() -> Int { - return activeConnections.count + return incomingConnections.count + outgoingTransfers.count } diff --git a/NearbyShare/SleepManager.swift b/NearbyShare/SleepManager.swift index 4f27b4b..01da003 100644 --- a/NearbyShare/SleepManager.swift +++ b/NearbyShare/SleepManager.swift @@ -9,31 +9,51 @@ import Foundation import IOKit import IOKit.pwr_mgt -class SleepManager{ +class SleepManager { public static let shared = SleepManager() private var assertionID: IOPMAssertionID = 0 + private var timer: Timer? - public func disableSleep() { - if(assertionID != 0) { + private init() { + // Start periodic check + timer = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: true) { [weak self] _ in + self?.updateSleepState() + } + + RunLoop.main.add(timer!, forMode: .common) + } + + private func disableSleep() { + if assertionID != 0 { return } + log("[SleepManager] Enabling Wakelock") + IOPMAssertionCreateWithName( - kIOPMAssertionTypePreventUserIdleSystemSleep as CFString, + kIOPMAssertionTypePreventUserIdleDisplaySleep as CFString, IOPMAssertionLevel(kIOPMAssertionLevelOn), "QuickDrop Data Transfer" as CFString, &assertionID ) } - public func enableSleep() { - if(assertionID == 0 || NearbyConnectionManager.shared.getActiveConnectionsCount() != 0){ + private func enableSleep() { + if assertionID == 0 { return } + log("[SleepManager] Disabling Wakelock") IOPMAssertionRelease(assertionID) assertionID = 0 } - private init() {} + private func updateSleepState() { + let activeConnections = NearbyConnectionManager.shared.getActiveConnectionsCount() + if activeConnections > 0 { + disableSleep() + } else { + enableSleep() + } + } } diff --git a/QuickDrop/Localizable.xcstrings b/QuickDrop/Localizable.xcstrings index e01a46d..b5b3146 100644 --- a/QuickDrop/Localizable.xcstrings +++ b/QuickDrop/Localizable.xcstrings @@ -1282,108 +1282,110 @@ } } }, - "ConnectWithQuickDropApp" : { + "Connecting" : { + "comment" : "Share Extension", + "extractionState" : "manual", "localizations" : { "ar" : { "stringUnit" : { "state" : "translated", - "value" : "الاتصال بتطبيق QuickDrop" + "value" : "جارٍ الاتصال..." } }, "de" : { "stringUnit" : { "state" : "translated", - "value" : "Mit QuickDrop-App verbinden" + "value" : "Verbinden..." } }, "en" : { "stringUnit" : { "state" : "translated", - "value" : "Connect with QuickDrop App" + "value" : "Connecting..." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Conectar con la aplicación QuickDrop" + "value" : "Conectando..." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Se connecter avec l'app QuickDrop" + "value" : "Connexion en cours..." } }, "hu" : { "stringUnit" : { "state" : "translated", - "value" : "Csatlakozás a QuickDrop alkalmazással" + "value" : "Csatlakozás..." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Connetti con l'app QuickDrop" + "value" : "Connessione in corso..." } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "QuickDropアプリで接続" + "value" : "接続中..." } }, "ko" : { "stringUnit" : { "state" : "translated", - "value" : "QuickDrop 앱으로 연결" + "value" : "연결 중..." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Verbind met de QuickDrop-app" + "value" : "Verbinden..." } }, "pt-BR" : { "stringUnit" : { "state" : "translated", - "value" : "Conectar com o aplicativo QuickDrop" + "value" : "Conectando..." } }, "pt-PT" : { "stringUnit" : { "state" : "translated", - "value" : "Ligar com a app QuickDrop" + "value" : "A ligar..." } }, "ro" : { "stringUnit" : { "state" : "translated", - "value" : "Conectează-te cu aplicația QuickDrop" + "value" : "Se conectează..." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Подключиться с помощью приложения QuickDrop" + "value" : "Подключение..." } }, "th" : { "stringUnit" : { "state" : "translated", - "value" : "เชื่อมต่อด้วยแอป QuickDrop" + "value" : "กำลังเชื่อมต่อ..." } }, "uk" : { "stringUnit" : { "state" : "translated", - "value" : "Підключитися за допомогою додатка QuickDrop" + "value" : "Підключення..." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "使用 QuickDrop 应用连接" + "value" : "正在连接..." } } } @@ -1494,110 +1496,108 @@ } } }, - "Connecting" : { - "comment" : "Share Extension", - "extractionState" : "manual", + "ConnectWithQuickDropApp" : { "localizations" : { "ar" : { "stringUnit" : { "state" : "translated", - "value" : "جارٍ الاتصال..." + "value" : "الاتصال بتطبيق QuickDrop" } }, "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verbinden..." + "value" : "Mit QuickDrop-App verbinden" } }, "en" : { "stringUnit" : { "state" : "translated", - "value" : "Connecting..." + "value" : "Connect with QuickDrop App" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Conectando..." + "value" : "Conectar con la aplicación QuickDrop" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Connexion en cours..." + "value" : "Se connecter avec l'app QuickDrop" } }, "hu" : { "stringUnit" : { "state" : "translated", - "value" : "Csatlakozás..." + "value" : "Csatlakozás a QuickDrop alkalmazással" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Connessione in corso..." + "value" : "Connetti con l'app QuickDrop" } }, "ja" : { "stringUnit" : { "state" : "translated", - "value" : "接続中..." + "value" : "QuickDropアプリで接続" } }, "ko" : { "stringUnit" : { "state" : "translated", - "value" : "연결 중..." + "value" : "QuickDrop 앱으로 연결" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Verbinden..." + "value" : "Verbind met de QuickDrop-app" } }, "pt-BR" : { "stringUnit" : { "state" : "translated", - "value" : "Conectando..." + "value" : "Conectar com o aplicativo QuickDrop" } }, "pt-PT" : { "stringUnit" : { "state" : "translated", - "value" : "A ligar..." + "value" : "Ligar com a app QuickDrop" } }, "ro" : { "stringUnit" : { "state" : "translated", - "value" : "Se conectează..." + "value" : "Conectează-te cu aplicația QuickDrop" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Подключение..." + "value" : "Подключиться с помощью приложения QuickDrop" } }, "th" : { "stringUnit" : { "state" : "translated", - "value" : "กำลังเชื่อมต่อ..." + "value" : "เชื่อมต่อด้วยแอป QuickDrop" } }, "uk" : { "stringUnit" : { "state" : "translated", - "value" : "Підключення..." + "value" : "Підключитися за допомогою додатка QuickDrop" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在连接..." + "value" : "使用 QuickDrop 应用连接" } } } @@ -3848,113 +3848,6 @@ } } }, - "NFiles" : { - "extractionState" : "manual", - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d ملفات" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d Dateien" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d files" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d archivos" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d fichiers" - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d fájl" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d files" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "%dつのファイル" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d개의 파일" - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d bestanden" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d arquivos" - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d ficheiros" - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d fișiere" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d файлов" - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d ไฟล์" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d files" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "%d files" - } - } - } - }, "NetworkFilterDescription" : { "extractionState" : "manual", "localizations" : { @@ -4169,6 +4062,113 @@ } } }, + "NFiles" : { + "extractionState" : "manual", + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d ملفات" + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d Dateien" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d files" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d archivos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d fichiers" + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d fájl" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d files" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "%dつのファイル" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d개의 파일" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d bestanden" + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d arquivos" + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d ficheiros" + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d fișiere" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d файлов" + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d ไฟล์" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d files" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d files" + } + } + } + }, "NoNetworkConnection" : { "extractionState" : "manual", "localizations" : { @@ -4596,6 +4596,1388 @@ } } }, + "plusview_description" : { + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "قم بفتح QuickDrop+ لمواصلة تبادل الملفات بلا حدود. QuickDrop+ هو شراء لمرة واحدة – لا حاجة للاشتراك. تشمل جميع الميزات الحالية والمستقبلية." + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Schalte QuickDrop+ frei, um weiterhin Dateien unbegrenzt auszutauschen. QuickDrop+ ist ein Einmalkauf - ein Abonnement ist nicht erforderlich. Alle aktuellen und zukünftigen Funktionen sind enthalten." + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unlock QuickDrop+ to continue exchanging files without limits. QuickDrop+ is a one-time purchase – no subscription required. All current and future features are included." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desbloquea QuickDrop+ para seguir intercambiando archivos sin límites. QuickDrop+ es una compra única – no se requiere suscripción. Todas las funciones actuales y futuras están incluidas." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Débloquez QuickDrop+ pour continuer à échanger des fichiers sans limites. QuickDrop+ est un achat unique – aucun abonnement requis. Toutes les fonctionnalités actuelles et futures sont incluses." + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oldd fel a QuickDrop+-t, hogy korlátlanul folytathasd a fájlcserét. A QuickDrop+ egy egyszeri vásárlás – előfizetés nem szükséges. Az összes jelenlegi és jövőbeli funkciót tartalmazza." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sblocca QuickDrop+ per continuare a scambiare file senza limiti. QuickDrop+ è un acquisto unico – nessun abbonamento richiesto. Tutte le funzionalità attuali e future sono incluse." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "QuickDrop+ をアンロックして、無制限にファイルを交換できます。QuickDrop+ は買い切り型のアプリです。サブスクリプション不要で、現在および将来のすべての機能が含まれます。" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "QuickDrop+를 잠금 해제하여 파일을 제한 없이 교환하세요. QuickDrop+는 일회성 구매이며, 구독이 필요하지 않습니다. 모든 현재 및 미래 기능이 포함됩니다." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ontgrendel QuickDrop+ om bestanden zonder limieten te blijven uitwisselen. QuickDrop+ is een eenmalige aankoop – geen abonnement vereist. Alle huidige en toekomstige functies zijn inbegrepen." + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desbloqueie o QuickDrop+ para continuar trocando arquivos sem limites. QuickDrop+ é uma compra única – sem necessidade de assinatura. Todos os recursos atuais e futuros estão incluídos." + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desbloqueia o QuickDrop+ para continuar a trocar ficheiros sem limites. QuickDrop+ é uma compra única – não é necessária subscrição. Todas as funcionalidades atuais e futuras estão incluídas." + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deblochează QuickDrop+ pentru a continua schimbul de fișiere fără limite. QuickDrop+ este o achiziție unică – nu este necesar abonament. Toate funcțiile curente și viitoare sunt incluse." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Разблокируйте QuickDrop+, чтобы продолжить обмен файлами без ограничений. QuickDrop+ – это разовая покупка, подписка не требуется. Все текущие и будущие функции включены." + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "ปลดล็อก QuickDrop+ เพื่อแลกเปลี่ยนไฟล์ได้อย่างไม่จำกัด QuickDrop+ เป็นการซื้อครั้งเดียว – ไม่ต้องสมัครสมาชิก ฟีเจอร์ทั้งหมดทั้งปัจจุบันและอนาคตรวมอยู่ในนี้แล้ว" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Розблокуйте QuickDrop+, щоб продовжити обмін файлами без обмежень. QuickDrop+ – це одноразова покупка, підписка не потрібна. Всі поточні та майбутні функції включені." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "解锁 QuickDrop+ 以无限制地交换文件。QuickDrop+ 是一次性购买 – 无需订阅。所有当前和未来的功能均包含在内。" + } + } + } + }, + "plusview_nothingtorestore" : { + "extractionState" : "manual", + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "لا يوجد شيء لاستعادته!" + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Es gibt nichts wiederherzustellen!" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "There is nothing to restore!" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¡No hay nada que restaurar!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun achat à restaurer !" + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nincs visszaállítható vásárlás!" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non c'è nulla da ripristinare!" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "復元するものがありません!" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "복원할 항목이 없습니다!" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Er is niets om te herstellen!" + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nada para restaurar!" + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não há nada para restaurar!" + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nu există nimic de restaurat!" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Нет покупок для восстановления!" + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "ไม่มีรายการที่ต้องกู้คืน!" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Немає покупок для відновлення!" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "没有可恢复的购买!" + } + } + } + }, + "plusview_productRequestFailed" : { + "extractionState" : "manual", + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "تعذر جلب عمليات الشراء داخل التطبيق في الوقت الحالي." + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "In-App-Käufe können momentan nicht abgerufen werden." + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unable to fetch In-App Purchases at the moment." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se pueden recuperar las compras dentro de la aplicación en este momento." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible de récupérer les achats intégrés pour le moment." + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jelenleg nem lehet lekérni az alkalmazáson belüli vásárlásokat." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossibile recuperare gli acquisti in-app al momento." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "現在、アプリ内購入情報を取得できません。" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "현재 인앱 구매 정보를 가져올 수 없습니다." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "In-app aankopen kunnen momenteel niet worden opgehaald." + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não foi possível recuperar as compras dentro do aplicativo no momento." + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não foi possível recuperar as compras dentro do app no momento." + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Momentan, nu se pot obține informații despre achizițiile în aplicație." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Не удалось получить данные о встроенных покупках." + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "ไม่สามารถดึงข้อมูลการซื้อภายในแอปได้ในขณะนี้" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Наразі неможливо отримати інформацію про покупки в додатку." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "暂时无法获取应用内购买信息。" + } + } + } + }, + "plusview_purchasefailed" : { + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "فشل الشراء" + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kauf fehlgeschlagen" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Purchase failed" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La compra ha fallado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Échec de l'achat" + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "A vásárlás sikertelen" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Acquisto non riuscito" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "購入に失敗しました" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "구매 실패" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aankoop mislukt" + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Falha na compra" + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Falha na compra" + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Achiziția a eșuat" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ошибка покупки" + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "การซื้อล้มเหลว" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Помилка покупки" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "购买失败" + } + } + } + }, + "plusview_purchasefaileddescription" : { + "extractionState" : "manual", + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "إذا ظهر هذا الرسالة بشكل غير متوقع، يرجى التأكد من اتصالك بالإنترنت وأن عمليات الشراء داخل التطبيق مفعّلة على جهازك، ثم حاول مرة أخرى." + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Falls diese Nachricht unerwartet erscheint, stelle sicher, dass du mit dem Internet verbunden bist und In-App-Käufe auf deinem Gerät aktiviert sind, und versuche es erneut." + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "If this message appeared unexpectedly, please make sure that you are connected to the Internet and In-App-Purchases are enabled for your device and then try again." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si este mensaje apareció inesperadamente, asegúrate de estar conectado a internet y que las compras dentro de la aplicación estén habilitadas en tu dispositivo, luego intenta nuevamente." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ce message est apparu de manière inattendue, assurez-vous d'être connecté à Internet et que les achats intégrés sont activés sur votre appareil, puis réessayez." + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ha ez az üzenet váratlanul jelent meg, ellenőrizd az internetkapcsolatot, és győződj meg róla, hogy az alkalmazáson belüli vásárlások engedélyezve vannak az eszközödön, majd próbáld újra." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se questo messaggio è apparso inaspettatamente, assicurati di essere connesso a Internet e che gli acquisti in-app siano abilitati sul tuo dispositivo, quindi riprova." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このメッセージが予期せず表示された場合、インターネット接続を確認し、アプリ内購入が有効になっていることを確認した上で再試行してください。" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 메시지가 예상치 않게 나타난 경우, 인터넷에 연결되어 있는지 확인하고 기기에서 인앱 결제가 활성화되어 있는지 확인한 후 다시 시도해 주세요." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Als dit bericht onverwachts verschijnt, controleer dan of je verbonden bent met internet en of in-app aankopen zijn ingeschakeld op je apparaat, en probeer het opnieuw." + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se esta mensagem apareceu inesperadamente, verifique se você está conectado à internet e se as compras dentro do app estão ativadas no seu dispositivo e tente novamente." + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se esta mensagem apareceu inesperadamente, certifique-se de estar conectado à Internet e que as compras dentro do app estejam ativadas no seu dispositivo, depois tente novamente." + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dacă acest mesaj a apărut neașteptat, asigură-te că ești conectat la internet și că achizițiile în aplicație sunt activate pe dispozitivul tău, apoi încearcă din nou." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Если это сообщение появилось неожиданно, убедитесь, что у вас есть доступ к интернету и включены встроенные покупки на вашем устройстве, затем попробуйте снова." + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "หากข้อความนี้ปรากฏขึ้นโดยไม่คาดคิด โปรดตรวจสอบว่าคุณเชื่อมต่ออินเทอร์เน็ตและเปิดใช้งานการซื้อภายในแอปในอุปกรณ์ของคุณแล้วลองอีกครั้ง" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Якщо це повідомлення з’явилося несподівано, переконайтеся, що у вас є підключення до Інтернету, а покупки в додатках увімкнені на вашому пристрої, і спробуйте ще раз." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "如果此消息意外出现,请确保您已连接到互联网,并且设备已启用应用内购买功能,然后重试。" + } + } + } + }, + "plusview_restorefailed" : { + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "حدثت مشكلة أثناء استعادة عملية الشراء" + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Es gab ein Problem beim Wiederherstellen deines Kaufs" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "There was a problem restoring your purchase" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hubo un problema al restaurar tu compra" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Un problème est survenu lors de la restauration de votre achat" + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hiba történt a vásárlás visszaállítása során" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si è verificato un problema durante il ripristino dell'acquisto" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "購入の復元中に問題が発生しました" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "구매 복원 중 문제가 발생했습니다." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Er was een probleem bij het herstellen van je aankoop" + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Houve um problema ao restaurar sua compra" + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Houve um problema ao restaurar sua compra" + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "A apărut o problemă la restaurarea achiziției" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Произошла ошибка при восстановлении покупки" + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "เกิดปัญหาในการกู้คืนการซื้อของคุณ" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сталася помилка під час відновлення покупки" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "恢复购买时出现问题" + } + } + } + }, + "plusview_restorefailed_proceed" : { + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "موافق" + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Okay" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Okay" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aceptar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rendben" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ok" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "확인" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oké" + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ok" + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Окей" + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "ตกลง" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Гаразд" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "确定" + } + } + } + }, + "plusview_restorepurchase" : { + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "هل اشتريته بالفعل؟" + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bereits gekauft?" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Already bought?" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¿Ya lo compraste?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Déjà acheté ?" + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Már megvásároltad?" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Già acquistato?" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "すでに購入済みですか?" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이미 구매하셨나요?" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Al gekocht?" + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Já comprou?" + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Já comprou?" + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deja cumpărat?" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Уже куплено?" + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "เคยซื้อแล้ว?" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Вже куплено?" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "已购买?" + } + } + } + }, + "plusview_success_button" : { + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "حسنًا!" + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Alles klar!" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Got it!" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¡Entendido!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "D'accord !" + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Értettem!" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Capito!" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "了解!" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "알겠습니다!" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Begrepen!" + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entendi!" + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entendido!" + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Înțeles!" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Понял!" + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "รับทราบ!" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Зрозуміло!" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "知道了!" + } + } + } + }, + "plusview_success_description" : { + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "يمكنك الآن متابعة استلام الملفات بدون قيود. أي ملفات حاولت إرسالها سابقًا تم حفظها بالفعل على جهازك." + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Du kannst nun weiterhin Dateien ohne Einschränkungen empfangen. Alle Dateien, welche gerade gesendet wurden, wurden bereits gespeichert." + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "You can now continue receiving files without restrictions. Any files you tried to send were already saved on your device." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ahora puedes seguir recibiendo archivos sin restricciones. Todos los archivos que intentaste enviar antes ya se han guardado en tu dispositivo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous pouvez maintenant continuer à recevoir des fichiers sans restrictions. Tous les fichiers que vous avez essayé d'envoyer précédemment ont déjà été enregistrés sur votre appareil." + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostantól korlátozások nélkül fogadhat fájlokat. Az összes fájl, amelyet korábban próbált elküldeni, már el lett mentve az eszközére." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ora puoi continuare a ricevere file senza restrizioni. Tutti i file che hai provato a inviare in precedenza sono già stati salvati sul tuo dispositivo." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "これで、制限なくファイルを受信し続けることができます。以前送信しようとしたファイルはすでにデバイスに保存されています。" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이제 파일을 제한 없이 계속 받을 수 있습니다. 이전에 전송을 시도한 모든 파일이 이미 기기에 저장되었습니다." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je kunt nu bestanden blijven ontvangen zonder beperkingen. Alle bestanden die je eerder probeerde te verzenden, zijn al opgeslagen op je apparaat." + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Agora você pode continuar recebendo arquivos sem restrições. Todos os arquivos que você tentou enviar antes já foram salvos no seu dispositivo." + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Agora pode continuar a receber ficheiros sem restrições. Todos os ficheiros que tentou enviar antes já foram guardados no seu dispositivo." + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Acum puteți continua să primiți fișiere fără restricții. Toate fișierele pe care ați încercat să le trimiteți anterior au fost deja salvate pe dispozitivul dvs." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Теперь вы можете продолжать получать файлы без ограничений. Все файлы, которые вы пытались отправить ранее, уже сохранены на вашем устройстве." + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "คุณสามารถรับไฟล์ต่อไปได้โดยไม่มีข้อจำกัด ไฟล์ทั้งหมดที่คุณพยายามส่งก่อนหน้านี้ถูกบันทึกไว้ในอุปกรณ์ของคุณแล้ว" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Тепер ви можете продовжувати отримувати файли без обмежень. Усі файли, які ви намагалися надіслати раніше, вже збережено на вашому пристрої." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "您现在可以继续无限制地接收文件。您之前尝试发送的所有文件已保存到您的设备上。" + } + } + } + }, + "plusview_success_title" : { + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "شكرًا لشرائك!" + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Danke für deinen Kauf!" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thanks for your purchase!" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¡Gracias por tu compra!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Merci pour votre achat !" + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Köszönjük a vásárlást!" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grazie per il tuo acquisto!" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "ご購入ありがとうございます!" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "구매해 주셔서 감사합니다!" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bedankt voor je aankoop!" + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obrigado pela sua compra!" + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obrigado pela sua compra!" + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mulțumim pentru achiziție!" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Спасибо за покупку!" + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "ขอบคุณสำหรับการซื้อ!" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Дякуємо за покупку!" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "感谢您的购买!" + } + } + } + }, + "plusview_title" : { + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "شكرًا لاستخدامك QuickDrop!" + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Danke, dass du QuickDrop benutzt!" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thanks for using QuickDrop!" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¡Gracias por usar QuickDrop!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Merci d'utiliser QuickDrop !" + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Köszönjük, hogy használod a QuickDropot!" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grazie per aver usato QuickDrop!" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "QuickDropをご利用いただきありがとうございます!" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "QuickDrop을 사용해 주셔서 감사합니다!" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bedankt voor het gebruiken van QuickDrop!" + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obrigado por usar o QuickDrop!" + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obrigado por usar o QuickDrop!" + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mulțumim că folosești QuickDrop!" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Спасибо за использование QuickDrop!" + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "ขอบคุณที่ใช้ QuickDrop!" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Дякуємо за використання QuickDrop!" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "感谢使用 QuickDrop!" + } + } + } + }, + "plusview_unlock_label" : { + "extractionState" : "manual", + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "ادعم QuickDrop" + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unterstütze QuickDrop" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Support QuickDrop" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apoyar QuickDrop" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Soutenir QuickDrop" + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Támogasd a QuickDropot" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supporta QuickDrop" + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "QuickDropをサポート" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "QuickDrop 지원하기" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ondersteun QuickDrop" + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apoie o QuickDrop" + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apoiar QuickDrop" + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Susține QuickDrop" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Поддержать QuickDrop" + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "สนับสนุน QuickDrop" + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Підтримати QuickDrop" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "支持 QuickDrop" + } + } + } + }, "PrivacyPolicy" : { "extractionState" : "manual", "localizations" : { @@ -5558,6 +6940,9 @@ } } } + }, + "Reset UD" : { + }, "SaveFilesLocation" : { "extractionState" : "manual", @@ -8658,1388 +10043,6 @@ } } } - }, - "plusview_description" : { - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "قم بفتح QuickDrop+ لمواصلة تبادل الملفات بلا حدود. QuickDrop+ هو شراء لمرة واحدة – لا حاجة للاشتراك. تشمل جميع الميزات الحالية والمستقبلية." - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Schalte QuickDrop+ frei, um weiterhin Dateien unbegrenzt auszutauschen. QuickDrop+ ist ein Einmalkauf - ein Abonnement ist nicht erforderlich. Alle aktuellen und zukünftigen Funktionen sind enthalten." - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Unlock QuickDrop+ to continue exchanging files without limits. QuickDrop+ is a one-time purchase – no subscription required. All current and future features are included." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Desbloquea QuickDrop+ para seguir intercambiando archivos sin límites. QuickDrop+ es una compra única – no se requiere suscripción. Todas las funciones actuales y futuras están incluidas." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Débloquez QuickDrop+ pour continuer à échanger des fichiers sans limites. QuickDrop+ est un achat unique – aucun abonnement requis. Toutes les fonctionnalités actuelles et futures sont incluses." - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Oldd fel a QuickDrop+-t, hogy korlátlanul folytathasd a fájlcserét. A QuickDrop+ egy egyszeri vásárlás – előfizetés nem szükséges. Az összes jelenlegi és jövőbeli funkciót tartalmazza." - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sblocca QuickDrop+ per continuare a scambiare file senza limiti. QuickDrop+ è un acquisto unico – nessun abbonamento richiesto. Tutte le funzionalità attuali e future sono incluse." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "QuickDrop+ をアンロックして、無制限にファイルを交換できます。QuickDrop+ は買い切り型のアプリです。サブスクリプション不要で、現在および将来のすべての機能が含まれます。" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "QuickDrop+를 잠금 해제하여 파일을 제한 없이 교환하세요. QuickDrop+는 일회성 구매이며, 구독이 필요하지 않습니다. 모든 현재 및 미래 기능이 포함됩니다." - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ontgrendel QuickDrop+ om bestanden zonder limieten te blijven uitwisselen. QuickDrop+ is een eenmalige aankoop – geen abonnement vereist. Alle huidige en toekomstige functies zijn inbegrepen." - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Desbloqueie o QuickDrop+ para continuar trocando arquivos sem limites. QuickDrop+ é uma compra única – sem necessidade de assinatura. Todos os recursos atuais e futuros estão incluídos." - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Desbloqueia o QuickDrop+ para continuar a trocar ficheiros sem limites. QuickDrop+ é uma compra única – não é necessária subscrição. Todas as funcionalidades atuais e futuras estão incluídas." - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "Deblochează QuickDrop+ pentru a continua schimbul de fișiere fără limite. QuickDrop+ este o achiziție unică – nu este necesar abonament. Toate funcțiile curente și viitoare sunt incluse." - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Разблокируйте QuickDrop+, чтобы продолжить обмен файлами без ограничений. QuickDrop+ – это разовая покупка, подписка не требуется. Все текущие и будущие функции включены." - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "ปลดล็อก QuickDrop+ เพื่อแลกเปลี่ยนไฟล์ได้อย่างไม่จำกัด QuickDrop+ เป็นการซื้อครั้งเดียว – ไม่ต้องสมัครสมาชิก ฟีเจอร์ทั้งหมดทั้งปัจจุบันและอนาคตรวมอยู่ในนี้แล้ว" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Розблокуйте QuickDrop+, щоб продовжити обмін файлами без обмежень. QuickDrop+ – це одноразова покупка, підписка не потрібна. Всі поточні та майбутні функції включені." - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "解锁 QuickDrop+ 以无限制地交换文件。QuickDrop+ 是一次性购买 – 无需订阅。所有当前和未来的功能均包含在内。" - } - } - } - }, - "plusview_nothingtorestore" : { - "extractionState" : "manual", - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "لا يوجد شيء لاستعادته!" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Es gibt nichts wiederherzustellen!" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "There is nothing to restore!" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "¡No hay nada que restaurar!" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aucun achat à restaurer !" - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Nincs visszaállítható vásárlás!" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Non c'è nulla da ripristinare!" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "復元するものがありません!" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "복원할 항목이 없습니다!" - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Er is niets om te herstellen!" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Nada para restaurar!" - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Não há nada para restaurar!" - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "Nu există nimic de restaurat!" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Нет покупок для восстановления!" - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "ไม่มีรายการที่ต้องกู้คืน!" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Немає покупок для відновлення!" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "没有可恢复的购买!" - } - } - } - }, - "plusview_productRequestFailed" : { - "extractionState" : "manual", - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "تعذر جلب عمليات الشراء داخل التطبيق في الوقت الحالي." - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "In-App-Käufe können momentan nicht abgerufen werden." - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Unable to fetch In-App Purchases at the moment." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "No se pueden recuperar las compras dentro de la aplicación en este momento." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible de récupérer les achats intégrés pour le moment." - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Jelenleg nem lehet lekérni az alkalmazáson belüli vásárlásokat." - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossibile recuperare gli acquisti in-app al momento." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "現在、アプリ内購入情報を取得できません。" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "현재 인앱 구매 정보를 가져올 수 없습니다." - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "In-app aankopen kunnen momenteel niet worden opgehaald." - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Não foi possível recuperar as compras dentro do aplicativo no momento." - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Não foi possível recuperar as compras dentro do app no momento." - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "Momentan, nu se pot obține informații despre achizițiile în aplicație." - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Не удалось получить данные о встроенных покупках." - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "ไม่สามารถดึงข้อมูลการซื้อภายในแอปได้ในขณะนี้" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Наразі неможливо отримати інформацію про покупки в додатку." - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "暂时无法获取应用内购买信息。" - } - } - } - }, - "plusview_purchasefailed" : { - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "فشل الشراء" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kauf fehlgeschlagen" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Purchase failed" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "La compra ha fallado" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Échec de l'achat" - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "A vásárlás sikertelen" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Acquisto non riuscito" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "購入に失敗しました" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "구매 실패" - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aankoop mislukt" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Falha na compra" - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Falha na compra" - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "Achiziția a eșuat" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ошибка покупки" - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "การซื้อล้มเหลว" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Помилка покупки" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "购买失败" - } - } - } - }, - "plusview_purchasefaileddescription" : { - "extractionState" : "manual", - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "إذا ظهر هذا الرسالة بشكل غير متوقع، يرجى التأكد من اتصالك بالإنترنت وأن عمليات الشراء داخل التطبيق مفعّلة على جهازك، ثم حاول مرة أخرى." - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Falls diese Nachricht unerwartet erscheint, stelle sicher, dass du mit dem Internet verbunden bist und In-App-Käufe auf deinem Gerät aktiviert sind, und versuche es erneut." - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "If this message appeared unexpectedly, please make sure that you are connected to the Internet and In-App-Purchases are enabled for your device and then try again." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Si este mensaje apareció inesperadamente, asegúrate de estar conectado a internet y que las compras dentro de la aplicación estén habilitadas en tu dispositivo, luego intenta nuevamente." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Si ce message est apparu de manière inattendue, assurez-vous d'être connecté à Internet et que les achats intégrés sont activés sur votre appareil, puis réessayez." - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ha ez az üzenet váratlanul jelent meg, ellenőrizd az internetkapcsolatot, és győződj meg róla, hogy az alkalmazáson belüli vásárlások engedélyezve vannak az eszközödön, majd próbáld újra." - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Se questo messaggio è apparso inaspettatamente, assicurati di essere connesso a Internet e che gli acquisti in-app siano abilitati sul tuo dispositivo, quindi riprova." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "このメッセージが予期せず表示された場合、インターネット接続を確認し、アプリ内購入が有効になっていることを確認した上で再試行してください。" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "이 메시지가 예상치 않게 나타난 경우, 인터넷에 연결되어 있는지 확인하고 기기에서 인앱 결제가 활성화되어 있는지 확인한 후 다시 시도해 주세요." - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Als dit bericht onverwachts verschijnt, controleer dan of je verbonden bent met internet en of in-app aankopen zijn ingeschakeld op je apparaat, en probeer het opnieuw." - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Se esta mensagem apareceu inesperadamente, verifique se você está conectado à internet e se as compras dentro do app estão ativadas no seu dispositivo e tente novamente." - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Se esta mensagem apareceu inesperadamente, certifique-se de estar conectado à Internet e que as compras dentro do app estejam ativadas no seu dispositivo, depois tente novamente." - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "Dacă acest mesaj a apărut neașteptat, asigură-te că ești conectat la internet și că achizițiile în aplicație sunt activate pe dispozitivul tău, apoi încearcă din nou." - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Если это сообщение появилось неожиданно, убедитесь, что у вас есть доступ к интернету и включены встроенные покупки на вашем устройстве, затем попробуйте снова." - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "หากข้อความนี้ปรากฏขึ้นโดยไม่คาดคิด โปรดตรวจสอบว่าคุณเชื่อมต่ออินเทอร์เน็ตและเปิดใช้งานการซื้อภายในแอปในอุปกรณ์ของคุณแล้วลองอีกครั้ง" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Якщо це повідомлення з’явилося несподівано, переконайтеся, що у вас є підключення до Інтернету, а покупки в додатках увімкнені на вашому пристрої, і спробуйте ще раз." - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "如果此消息意外出现,请确保您已连接到互联网,并且设备已启用应用内购买功能,然后重试。" - } - } - } - }, - "plusview_restorefailed" : { - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "حدثت مشكلة أثناء استعادة عملية الشراء" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Es gab ein Problem beim Wiederherstellen deines Kaufs" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "There was a problem restoring your purchase" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Hubo un problema al restaurar tu compra" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Un problème est survenu lors de la restauration de votre achat" - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Hiba történt a vásárlás visszaállítása során" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Si è verificato un problema durante il ripristino dell'acquisto" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "購入の復元中に問題が発生しました" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "구매 복원 중 문제가 발생했습니다." - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Er was een probleem bij het herstellen van je aankoop" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Houve um problema ao restaurar sua compra" - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Houve um problema ao restaurar sua compra" - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "A apărut o problemă la restaurarea achiziției" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Произошла ошибка при восстановлении покупки" - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "เกิดปัญหาในการกู้คืนการซื้อของคุณ" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Сталася помилка під час відновлення покупки" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "恢复购买时出现问题" - } - } - } - }, - "plusview_restorefailed_proceed" : { - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "موافق" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Okay" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Okay" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aceptar" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "OK" - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Rendben" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ok" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "OK" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "확인" - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Oké" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "OK" - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ok" - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "OK" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Окей" - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "ตกลง" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Гаразд" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "确定" - } - } - } - }, - "plusview_restorepurchase" : { - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "هل اشتريته بالفعل؟" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Bereits gekauft?" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Already bought?" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "¿Ya lo compraste?" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Déjà acheté ?" - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Már megvásároltad?" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Già acquistato?" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "すでに購入済みですか?" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "이미 구매하셨나요?" - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Al gekocht?" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Já comprou?" - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Já comprou?" - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "Deja cumpărat?" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Уже куплено?" - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "เคยซื้อแล้ว?" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Вже куплено?" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "已购买?" - } - } - } - }, - "plusview_success_button" : { - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "حسنًا!" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Alles klar!" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Got it!" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "¡Entendido!" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "D'accord !" - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Értettem!" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Capito!" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "了解!" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "알겠습니다!" - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Begrepen!" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Entendi!" - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Entendido!" - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "Înțeles!" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Понял!" - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "รับทราบ!" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Зрозуміло!" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "知道了!" - } - } - } - }, - "plusview_success_description" : { - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "يمكنك الآن متابعة استلام الملفات بدون قيود. أي ملفات حاولت إرسالها سابقًا تم حفظها بالفعل على جهازك." - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Du kannst nun weiterhin Dateien ohne Einschränkungen empfangen. Alle Dateien, welche gerade gesendet wurden, wurden bereits gespeichert." - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "You can now continue receiving files without restrictions. Any files you tried to send were already saved on your device." - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ahora puedes seguir recibiendo archivos sin restricciones. Todos los archivos que intentaste enviar antes ya se han guardado en tu dispositivo." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Vous pouvez maintenant continuer à recevoir des fichiers sans restrictions. Tous les fichiers que vous avez essayé d'envoyer précédemment ont déjà été enregistrés sur votre appareil." - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Mostantól korlátozások nélkül fogadhat fájlokat. Az összes fájl, amelyet korábban próbált elküldeni, már el lett mentve az eszközére." - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ora puoi continuare a ricevere file senza restrizioni. Tutti i file che hai provato a inviare in precedenza sono già stati salvati sul tuo dispositivo." - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "これで、制限なくファイルを受信し続けることができます。以前送信しようとしたファイルはすでにデバイスに保存されています。" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "이제 파일을 제한 없이 계속 받을 수 있습니다. 이전에 전송을 시도한 모든 파일이 이미 기기에 저장되었습니다." - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Je kunt nu bestanden blijven ontvangen zonder beperkingen. Alle bestanden die je eerder probeerde te verzenden, zijn al opgeslagen op je apparaat." - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Agora você pode continuar recebendo arquivos sem restrições. Todos os arquivos que você tentou enviar antes já foram salvos no seu dispositivo." - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Agora pode continuar a receber ficheiros sem restrições. Todos os ficheiros que tentou enviar antes já foram guardados no seu dispositivo." - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "Acum puteți continua să primiți fișiere fără restricții. Toate fișierele pe care ați încercat să le trimiteți anterior au fost deja salvate pe dispozitivul dvs." - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Теперь вы можете продолжать получать файлы без ограничений. Все файлы, которые вы пытались отправить ранее, уже сохранены на вашем устройстве." - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "คุณสามารถรับไฟล์ต่อไปได้โดยไม่มีข้อจำกัด ไฟล์ทั้งหมดที่คุณพยายามส่งก่อนหน้านี้ถูกบันทึกไว้ในอุปกรณ์ของคุณแล้ว" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Тепер ви можете продовжувати отримувати файли без обмежень. Усі файли, які ви намагалися надіслати раніше, вже збережено на вашому пристрої." - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "您现在可以继续无限制地接收文件。您之前尝试发送的所有文件已保存到您的设备上。" - } - } - } - }, - "plusview_success_title" : { - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "شكرًا لشرائك!" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Danke für deinen Kauf!" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Thanks for your purchase!" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "¡Gracias por tu compra!" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Merci pour votre achat !" - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Köszönjük a vásárlást!" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Grazie per il tuo acquisto!" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "ご購入ありがとうございます!" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "구매해 주셔서 감사합니다!" - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Bedankt voor je aankoop!" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Obrigado pela sua compra!" - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Obrigado pela sua compra!" - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "Mulțumim pentru achiziție!" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Спасибо за покупку!" - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "ขอบคุณสำหรับการซื้อ!" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Дякуємо за покупку!" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "感谢您的购买!" - } - } - } - }, - "plusview_title" : { - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "شكرًا لاستخدامك QuickDrop!" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Danke, dass du QuickDrop benutzt!" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Thanks for using QuickDrop!" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "¡Gracias por usar QuickDrop!" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Merci d'utiliser QuickDrop !" - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Köszönjük, hogy használod a QuickDropot!" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Grazie per aver usato QuickDrop!" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "QuickDropをご利用いただきありがとうございます!" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "QuickDrop을 사용해 주셔서 감사합니다!" - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Bedankt voor het gebruiken van QuickDrop!" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Obrigado por usar o QuickDrop!" - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Obrigado por usar o QuickDrop!" - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "Mulțumim că folosești QuickDrop!" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Спасибо за использование QuickDrop!" - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "ขอบคุณที่ใช้ QuickDrop!" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Дякуємо за використання QuickDrop!" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "感谢使用 QuickDrop!" - } - } - } - }, - "plusview_unlock_label" : { - "extractionState" : "manual", - "localizations" : { - "ar" : { - "stringUnit" : { - "state" : "translated", - "value" : "ادعم QuickDrop" - } - }, - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Unterstütze QuickDrop" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Support QuickDrop" - } - }, - "es" : { - "stringUnit" : { - "state" : "translated", - "value" : "Apoyar QuickDrop" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Soutenir QuickDrop" - } - }, - "hu" : { - "stringUnit" : { - "state" : "translated", - "value" : "Támogasd a QuickDropot" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Supporta QuickDrop" - } - }, - "ja" : { - "stringUnit" : { - "state" : "translated", - "value" : "QuickDropをサポート" - } - }, - "ko" : { - "stringUnit" : { - "state" : "translated", - "value" : "QuickDrop 지원하기" - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ondersteun QuickDrop" - } - }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "Apoie o QuickDrop" - } - }, - "pt-PT" : { - "stringUnit" : { - "state" : "translated", - "value" : "Apoiar QuickDrop" - } - }, - "ro" : { - "stringUnit" : { - "state" : "translated", - "value" : "Susține QuickDrop" - } - }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Поддержать QuickDrop" - } - }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "สนับสนุน QuickDrop" - } - }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Підтримати QuickDrop" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "支持 QuickDrop" - } - } - } } }, "version" : "1.0"