diff --git a/Modules/Sources/NetworkingCore/ApplicationPassword/ApplicationPasswordUseCase.swift b/Modules/Sources/NetworkingCore/ApplicationPassword/ApplicationPasswordUseCase.swift index 3f45858302e..1ebfce2da6a 100644 --- a/Modules/Sources/NetworkingCore/ApplicationPassword/ApplicationPasswordUseCase.swift +++ b/Modules/Sources/NetworkingCore/ApplicationPassword/ApplicationPasswordUseCase.swift @@ -2,6 +2,10 @@ import Foundation import enum Alamofire.AFError import KeychainAccess +#if canImport(UIKit) +import UIKit +#endif + public enum ApplicationPasswordUseCaseError: Error { case duplicateName case applicationPasswordsDisabled @@ -29,25 +33,6 @@ public protocol ApplicationPasswordUseCase { func deletePassword() async throws } -/// A wrapper for the `UIDevice` `model` and `identifierForVendor` properties. -/// -/// This is necessary because `UIDevice` is part of UIKit which we cannot use when targeting watchOS. -/// So, to keep this package compatible with watchOS, we need to abstract UIKit away and delegate it to the consumers to provide us -/// with the device information. -/// -/// This approach is feasible because only the `applicationPasswordName` method in -/// `DefaultApplicationPasswordUseCase` needs access to the information and watchOS does not need to create application -/// passwords. We can therefore pass a `nil` value to it to satisfy the compilation without issues for the user experience. -public struct DeviceModelIdentifierInfo { - let model: String - let identifierForVendor: String - - public init(model: String, identifierForVendor: String) { - self.model = model - self.identifierForVendor = identifierForVendor - } -} - final public class DefaultApplicationPasswordUseCase: ApplicationPasswordUseCase { /// Site Address /// @@ -65,31 +50,27 @@ final public class DefaultApplicationPasswordUseCase: ApplicationPasswordUseCase /// private let storage: ApplicationPasswordStorage - private let deviceModelIdentifierInfo: DeviceModelIdentifierInfo? - /// Used to name the password in wpadmin. /// private var applicationPasswordName: String { - get { - guard let deviceModelIdentifierInfo else { - return "" // This is not needed on watchOS as the watch does not create application passwords. - } - - let bundleIdentifier = Bundle.main.bundleIdentifier ?? "Unknown" - return "\(bundleIdentifier).ios-app-client.\(deviceModelIdentifierInfo.model).\(deviceModelIdentifierInfo.identifierForVendor)" - } +#if !os(watchOS) + let bundleIdentifier = Bundle.main.bundleIdentifier ?? "Unknown" + let model = UIDevice.current.model + let identifierForVendor = UIDevice.current.identifierForVendor?.uuidString ?? "" + return "\(bundleIdentifier).ios-app-client.\(model).\(identifierForVendor)" +#else + fatalError("Unexpected error: Application password should not be generated through watch app") +#endif } public init(username: String, password: String, siteAddress: String, - deviceModelIdentifierInfo: DeviceModelIdentifierInfo? = nil, network: Network? = nil, keychain: Keychain = Keychain(service: WooConstants.keychainServiceName)) throws { self.siteAddress = siteAddress self.username = username self.storage = ApplicationPasswordStorage(keychain: keychain) - self.deviceModelIdentifierInfo = deviceModelIdentifierInfo if let network { self.network = network @@ -154,7 +135,7 @@ final public class DefaultApplicationPasswordUseCase: ApplicationPasswordUseCase if let uuidFromLocalPassword { return uuidFromLocalPassword } else { - return try await self.fetchUUIDForApplicationPassword(await applicationPasswordName) + return try await self.fetchUUIDForApplicationPassword(applicationPasswordName) } }() try await deleteApplicationPassword(uuidToBeDeleted) @@ -167,7 +148,7 @@ private extension DefaultApplicationPasswordUseCase { /// - Returns: Generated `ApplicationPassword` /// func createApplicationPassword() async throws -> ApplicationPassword { - let passwordName = await applicationPasswordName + let passwordName = applicationPasswordName let parameters = [ParameterKey.name: passwordName] let request = RESTRequest(siteURL: siteAddress, method: .post, path: Path.applicationPasswords, parameters: parameters) diff --git a/WooCommerce/Classes/Analytics/WooAnalyticsEvent+BackgroudUpdates.swift b/WooCommerce/Classes/Analytics/WooAnalyticsEvent+BackgroudUpdates.swift index d50e4a4aba3..6439d82e579 100644 --- a/WooCommerce/Classes/Analytics/WooAnalyticsEvent+BackgroudUpdates.swift +++ b/WooCommerce/Classes/Analytics/WooAnalyticsEvent+BackgroudUpdates.swift @@ -1,14 +1,51 @@ import Foundation +import WooFoundation extension WooAnalyticsEvent { enum BackgroundUpdates { private enum Keys { static let timeTaken = "time_taken" + static let backgroundTimeGranted = "background_time_granted" + static let networkType = "network_type" + static let isExpensiveConnection = "is_expensive_connection" + static let isLowDataMode = "is_low_data_mode" + static let isPowered = "is_powered" + static let batteryLevel = "battery_level" + static let isLowPowerMode = "is_low_power_mode" + static let timeSinceLastRun = "time_since_last_run" } - static func dataSynced(timeTaken: TimeInterval) -> WooAnalyticsEvent { - WooAnalyticsEvent(statName: .backgroundDataSynced, properties: [Keys.timeTaken: timeTaken]) + static func dataSynced( + timeTaken: TimeInterval, + backgroundTimeGranted: TimeInterval?, + networkType: String, + isExpensiveConnection: Bool, + isLowDataMode: Bool, + isPowered: Bool, + batteryLevel: Float, + isLowPowerMode: Bool, + timeSinceLastRun: TimeInterval? + ) -> WooAnalyticsEvent { + var properties: [String: WooAnalyticsEventPropertyType] = [ + Keys.timeTaken: Int64(timeTaken), + Keys.networkType: networkType, + Keys.isExpensiveConnection: isExpensiveConnection, + Keys.isLowDataMode: isLowDataMode, + Keys.isPowered: isPowered, + Keys.batteryLevel: Float64(batteryLevel), + Keys.isLowPowerMode: isLowPowerMode + ] + + if let backgroundTimeGranted = backgroundTimeGranted { + properties[Keys.backgroundTimeGranted] = Int64(backgroundTimeGranted) + } + + if let timeSinceLastRun = timeSinceLastRun { + properties[Keys.timeSinceLastRun] = Int64(timeSinceLastRun) + } + + return WooAnalyticsEvent(statName: .backgroundDataSynced, properties: properties) } static func dataSyncError(_ error: Error) -> WooAnalyticsEvent { diff --git a/WooCommerce/Classes/Authentication/AuthenticationManager.swift b/WooCommerce/Classes/Authentication/AuthenticationManager.swift index 7fd88172de4..e173b589914 100644 --- a/WooCommerce/Classes/Authentication/AuthenticationManager.swift +++ b/WooCommerce/Classes/Authentication/AuthenticationManager.swift @@ -752,8 +752,7 @@ private extension AuthenticationManager { guard let useCase = try? DefaultApplicationPasswordUseCase( username: siteCredentials.username, password: siteCredentials.password, - siteAddress: siteCredentials.siteURL, - deviceModelIdentifierInfo: UIDevice.current.deviceModelIdentifierInfo + siteAddress: siteCredentials.siteURL ) else { return assertionFailure("⛔️ Error creating application password use case") } diff --git a/WooCommerce/Classes/Extensions/UserDefaults+Woo.swift b/WooCommerce/Classes/Extensions/UserDefaults+Woo.swift index 95f9fd27f87..52e2a86af76 100644 --- a/WooCommerce/Classes/Extensions/UserDefaults+Woo.swift +++ b/WooCommerce/Classes/Extensions/UserDefaults+Woo.swift @@ -50,6 +50,7 @@ extension UserDefaults { // Background Task Refresh case latestBackgroundOrderSyncDate + case lastBackgroundRefreshCompletionTime // Blaze Local notification case blazeNoCampaignReminderOpened diff --git a/WooCommerce/Classes/System/SessionManager.swift b/WooCommerce/Classes/System/SessionManager.swift index 74c6e52df4f..bfc2fd4259e 100644 --- a/WooCommerce/Classes/System/SessionManager.swift +++ b/WooCommerce/Classes/System/SessionManager.swift @@ -234,7 +234,6 @@ final class SessionManager: SessionManagerProtocol { return try? DefaultApplicationPasswordUseCase(username: username, password: password, siteAddress: siteAddress, - deviceModelIdentifierInfo: UIDevice.current.deviceModelIdentifierInfo, keychain: keychain) case let .applicationPassword(_, _, siteAddress): return OneTimeApplicationPasswordUseCase(siteAddress: siteAddress, keychain: keychain) diff --git a/WooCommerce/Classes/System/UIDevice+DeviceModelIdentifierInfo.swift b/WooCommerce/Classes/System/UIDevice+DeviceModelIdentifierInfo.swift deleted file mode 100644 index a23e6dfa5aa..00000000000 --- a/WooCommerce/Classes/System/UIDevice+DeviceModelIdentifierInfo.swift +++ /dev/null @@ -1,12 +0,0 @@ -import Networking -import UIKit - -extension UIDevice { - - var deviceModelIdentifierInfo: DeviceModelIdentifierInfo { - DeviceModelIdentifierInfo( - model: model, - identifierForVendor: identifierForVendor?.uuidString ?? "" - ) - } -} diff --git a/WooCommerce/Classes/Tools/BackgroundTasks/BackgroundTaskRefreshDispatcher.swift b/WooCommerce/Classes/Tools/BackgroundTasks/BackgroundTaskRefreshDispatcher.swift index 4f1cab73b73..043df4ab1c8 100644 --- a/WooCommerce/Classes/Tools/BackgroundTasks/BackgroundTaskRefreshDispatcher.swift +++ b/WooCommerce/Classes/Tools/BackgroundTasks/BackgroundTaskRefreshDispatcher.swift @@ -1,6 +1,7 @@ import UIKit import Foundation import BackgroundTasks +import Network final class BackgroundTaskRefreshDispatcher { @@ -60,6 +61,7 @@ final class BackgroundTaskRefreshDispatcher { // Launch all refresh tasks in parallel. let refreshTasks = Task { do { + async let systemInfo = BackgroundTaskSystemInfo() let startTime = Date.now @@ -78,7 +80,27 @@ final class BackgroundTaskRefreshDispatcher { } let timeTaken = round(Date.now.timeIntervalSince(startTime)) - ServiceLocator.analytics.track(event: .BackgroundUpdates.dataSynced(timeTaken: timeTaken)) + + var timeSinceLastRun: TimeInterval? = nil + if let lastRunTime = UserDefaults.standard[.lastBackgroundRefreshCompletionTime] as? Date { + timeSinceLastRun = round(lastRunTime.timeIntervalSinceNow.magnitude) + } + + await ServiceLocator.analytics.track(event: .BackgroundUpdates.dataSynced( + timeTaken: timeTaken, + backgroundTimeGranted: systemInfo.backgroundTimeGranted, + networkType: systemInfo.networkType, + isExpensiveConnection: systemInfo.isExpensiveConnection, + isLowDataMode: systemInfo.isLowDataMode, + isPowered: systemInfo.isPowered, + batteryLevel: systemInfo.batteryLevel, + isLowPowerMode: systemInfo.isLowPowerMode, + timeSinceLastRun: timeSinceLastRun + )) + + // Save date, for use in analytics next time we refresh + UserDefaults.standard[.lastBackgroundRefreshCompletionTime] = Date.now + backgroundTask.setTaskCompleted(success: true) } catch { @@ -93,7 +115,7 @@ final class BackgroundTaskRefreshDispatcher { ServiceLocator.analytics.track(event: .BackgroundUpdates.dataSyncError(BackgroundError.expired)) refreshTasks.cancel() } - } + } } private extension BackgroundTaskRefreshDispatcher { @@ -109,3 +131,87 @@ extension BackgroundTaskRefreshDispatcher { case expired } } + +// MARK: - System Information Helper + +private struct NetworkInfo { + let type: String + let isExpensive: Bool + let isLowDataMode: Bool +} + +private struct BackgroundTaskSystemInfo { + let backgroundTimeGranted: TimeInterval? + private let networkInfo: NetworkInfo + let isPowered: Bool + let batteryLevel: Float + let isLowPowerMode: Bool + + // Computed properties for clean external access + var networkType: String { networkInfo.type } + var isExpensiveConnection: Bool { networkInfo.isExpensive } + var isLowDataMode: Bool { networkInfo.isLowDataMode } + + @MainActor + init() async { + // Background time granted (nil if foreground/unlimited) + let backgroundTime = UIApplication.shared.backgroundTimeRemaining + self.backgroundTimeGranted = backgroundTime < Double.greatestFiniteMagnitude ? backgroundTime : nil + + // Network info + self.networkInfo = await Self.getNetworkInfo() + + // Power and battery info + let device = UIDevice.current + device.isBatteryMonitoringEnabled = true + + self.isPowered = device.batteryState == .charging || device.batteryState == .full + self.batteryLevel = device.batteryLevel + self.isLowPowerMode = ProcessInfo.processInfo.isLowPowerModeEnabled + + device.isBatteryMonitoringEnabled = false + } + + private static func getNetworkInfo() async -> NetworkInfo { + return await withCheckedContinuation { continuation in + let monitor = NWPathMonitor() + + monitor.pathUpdateHandler = { path in + continuation.resume(returning: NetworkInfo(path: path)) + monitor.cancel() + } + + let queue = DispatchQueue(label: "network.monitor.queue") + monitor.start(queue: queue) + } + } +} + +private extension NetworkInfo { + init(path: NWPath) { + guard path.status == .satisfied else { + self.type = "no_connection" + self.isExpensive = false + self.isLowDataMode = false + return + } + + self.type = Self.networkType(from: path) + self.isExpensive = path.isExpensive + self.isLowDataMode = path.isConstrained + } + + private static func networkType(from path: NWPath) -> String { + if path.usesInterfaceType(.wifi) { + return "wifi" + } else if path.usesInterfaceType(.cellular) { + return "cellular" + } else if path.usesInterfaceType(.wiredEthernet) { + return "ethernet" + } else if path.usesInterfaceType(.loopback) { + return "loopback" + } else { + return "other" + } + } +} diff --git a/WooCommerce/Resources/ar.lproj/Localizable.strings b/WooCommerce/Resources/ar.lproj/Localizable.strings index 46acd28288b..99f9ad50f04 100644 --- a/WooCommerce/Resources/ar.lproj/Localizable.strings +++ b/WooCommerce/Resources/ar.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-28 13:54:05+0000 */ +/* Translation-Revision-Date: 2025-08-11 15:54:04+0000 */ /* Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: ar */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "بطاقة %1$@ تنتهي بـ %2$@"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ متوفر في المخزون"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "قيد التقدم"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "متوفِّر"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "الربط بمتجر موجود"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "إغلاق"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "استخدام هذا العنوان"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "حاول البحث دون أرقام الشقق أو الأجنحة أو الطوابق. يمكنك إضافة هذه التفاصيل إلى سطر العنوان 2 لاحقًا."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "لم يتم العثور على نتائج"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "البحث عن عنوان"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "عادي"; @@ -9897,6 +9910,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "الوسائط على الجهاز"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "بحث على الخريطة"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "عنوان الفوترة"; @@ -10885,8 +10901,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "الرمز الشريطي قصير جدًا"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "فحص الرمز الشريطي الجزئي"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "لم يرسل الماسح الضوئي حرف نهاية السطر"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "فشل طلب الشبكة"; @@ -11254,6 +11270,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "مسح الرمز الشريطي"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "إعداد الماسح الضوئي للرمز الشريطي"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "يرجى الانتظار"; @@ -11333,7 +11352,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "إلغاء"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "تم"; +"pointOfSaleDashboard.support.cancel" = "إلغاء"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "مسح الرمز الشريطي"; @@ -11404,15 +11423,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "رجوع"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "صورة كود مطلوب مسحه ضوئيًا بواسطة ماسح الرمز الشريطي."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "أنت مستعد لبدء المسح الضوئي للمنتجات. في المرة القادمة التي تحتاج فيها إلى توصيل الماسح الضوئي، ما عليك سوى تشغيله وسيتم إعادة توصيله تلقائيًا."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "انتهى إعداد الماسح الضوئي!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "تم"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "الرجوع"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "يُرجى التحقق من دليل الماسح الضوئي وإعادة ضبطه إلى إعدادات المصنع، ثم إعادة محاولة ضبط إعدادات التدفق."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "إعادة المحاولة"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "تم العثور على مشكلة في المسح الضوئي"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "أستخدم ماسحك الضوئي للرمز الشريطي لمسح الرمز أدناه لتمكين وضع بلوتوث HID."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11422,12 +11459,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "أخرى"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "أستخدم ماسحك الضوئي للرمز الشريطي لمسح الكود أدناه لدخول وضع الاقتران."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "مكّن تقنية بلوتوث وحدد ماسحك الضوئي %1$@ في إعدادات تقنية بلوتوث في نظام التشغيل iOS. سيصدر الماسح الضوئي صوت صفير ويعرض مؤشر LED إضاءة ثابتة عند الاقتران."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "انتقل إلى إعدادات جهازك"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "إقران ماسحك الضوئي"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "كيفية إعداد الرمز الشريطي للمنتجات"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "كيفية إعداد الرمز الشريطي للمنتجات"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "إعداد الماسح الضوئي"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "إعداد الماسح الضوئي"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "ماسح ضوئي آخر"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "قم بإعداد ماسح الرمز الشريطي"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "حدد نموذجًا من القائمة:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "ستار بي إس إتش-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "امسح الرمز الشريطي ضوئيًا لاختبار ماسحك الضوئي."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "امسح الرمز الشريطي ضوئيا لاختبار ماسحك الضوئي. إذا استمرت المشكلة، فيُرجى التحقق من إعدادات البلوتوث وإعادة المحاولة."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "لم نعثر على بيانات الفحص حتى الآن"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "اختبر ماسحك الضوئي"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "النقر على منتج إلى \n إضافته إلى عربة التسوق"; @@ -11983,6 +12074,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "تم تحديد %ld من المنتجات"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "منتجات الاشتراك غير مدعومة لإنشاء الطلب"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "إلغاء"; @@ -12335,6 +12429,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "يتعذر إحضار إحصاءات اليوم"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ متوفر في المخزون"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "متوفر في المخزون"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "تم"; diff --git a/WooCommerce/Resources/de.lproj/Localizable.strings b/WooCommerce/Resources/de.lproj/Localizable.strings index ba912678e49..22c59cf32e8 100644 --- a/WooCommerce/Resources/de.lproj/Localizable.strings +++ b/WooCommerce/Resources/de.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 15:54:04+0000 */ +/* Translation-Revision-Date: 2025-08-13 14:54:03+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: de */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "%1$@-Karte mit den Endziffern %2$@"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ vorrätig"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "In Bearbeitung"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "Auf Lager"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "Bestehenden Shop verbinden"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "Schließen"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "Diese Adresse verwenden"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "Suche nach Wohnungen, Suiten oder Stockwerknummern. Du kannst diese Angaben später zu Adresszeile 2 hinzufügen."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "Keine Ergebnisse gefunden"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "Nach einer Adresse suchen"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "Locker"; @@ -9906,6 +9919,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "Medien auf Gerät"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "Auf der Karte suchen"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "Rechnungsadresse"; @@ -10894,8 +10910,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "Barcode zu kurz"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "Teilweiser Barcode-Scan"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "Der Scanner hat kein Zeilenumbruchzeichen gesendet"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "Netzwerkanfrage fehlgeschlagen"; @@ -11263,6 +11279,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "Barcode-Scans"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "Ersteinrichtung des Barcode-Scanners"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "Bitte warten"; @@ -11342,7 +11361,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "Abbrechen"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "Fertig"; +"pointOfSaleDashboard.support.cancel" = "Abbrechen"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "Barcode-Scans"; @@ -11416,15 +11435,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "Zurück"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "Bild eines Codes, der von einem Barcode-Scanner gescannt werden soll."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "Du kannst jetzt mit dem Scannen von Produkten beginnen. Wenn du deinen Scanner das nächste Mal verbinden musst, schalte ihn einfach ein. Dann wird er die Verbindung automatisch wiederherstellen."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "Scanner eingerichtet!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "Fertig"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "Zurück"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "Wirf einen Blick in das Handbuch des Scanners, um ihn auf die Werkseinstellungen zurückzusetzen. Anschließend kannst du die Einrichtung erneut vornehmen."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "Erneut versuchen"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "Problem beim Scannen gefunden"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "Verwende deinen Barcode-Scanner, um den nachstehenden Code zu scannen und den Bluetooth-HID-Modus zu aktivieren."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11434,12 +11471,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "Sonstige"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "Verwende deinen Barcode-Scanner, um den nachstehenden Code zu scannen und in den Kopplungsmodus zu wechseln."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Aktiviere Bluetooth und wähle deinen %1$@-Scanner in den iOS-Bluetooth-Einstellungen aus. Der Scanner gibt einen Signalton aus. Nach der Kopplung leuchtet die LED des Scanners dauerhaft."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "Zu deinen Geräteeinstellungen wechseln"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "Deinen Scanner koppeln"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "So richtest du Barcodes für Produkte ein"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "So richtest du Barcodes für Produkte ein"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "Scanner-Einrichtung"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "Scanner-Einrichtung"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "Anderer Scanner"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "Einen Barcode-Scanner einrichten"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "Wähle ein Modell aus der Liste aus:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "Scanne den Barcode, um deinen Scanner zu testen."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "Scanne den Barcode, um deinen Scanner zu testen. Wenn das Problem weiterhin besteht, überprüfe die Bluetooth-Einstellungen und versuche es erneut."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "Noch keine Scandaten gefunden"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "Teste deinen Scanner"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "Tippe auf ein Produkt, um \n es dem Warenkorb hinzuzufügen"; @@ -11998,6 +12089,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld Produkt ausgewählt"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "Abonnement-Produkte werden bei der Erstellung von Bestellungen nicht unterstützt"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "Abbrechen"; @@ -12353,6 +12447,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "Die heutigen Statistiken konnten nicht abgerufen werden"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ vorrätig"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "Vorrätig"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "Fertig"; diff --git a/WooCommerce/Resources/es.lproj/Localizable.strings b/WooCommerce/Resources/es.lproj/Localizable.strings index 2f6c7b63a34..729e7fe5525 100644 --- a/WooCommerce/Resources/es.lproj/Localizable.strings +++ b/WooCommerce/Resources/es.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 13:54:04+0000 */ +/* Translation-Revision-Date: 2025-08-14 14:54:09+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: es */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "%1$@ la tarjeta termina en %2$@"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ disponibles"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "En curso"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "Hay existencias"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "Conectar una tienda existente"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "Cerrar"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "Usar esta dirección"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "Prueba a buscar sin números de piso, apartamento o planta. Puedes añadir esos datos a la línea de dirección 2 más adelante."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "No se han encontrado resultados"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "Buscar una dirección"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "Casual"; @@ -9906,6 +9919,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "Medios en el dispositivo"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "Buscar en el mapa"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "Dirección de facturación"; @@ -10894,8 +10910,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "Código de barras demasiado corto"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "Escaneo parcial del código de barras"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "El escáner no ha enviado ningún carácter de fin de línea"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "Solicitud de red fallida"; @@ -11263,6 +11279,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "Escaneado de códigos de barras"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "Configuración inicial del escáner de códigos de barras"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "Espera"; @@ -11342,7 +11361,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "Cancelar"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "Hecho"; +"pointOfSaleDashboard.support.cancel" = "Cancelar"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "Escaneado de códigos de barras"; @@ -11416,15 +11435,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "Volver"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "Imagen de un código que se va a escanear con un escáner de código de barras."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "Ya tienes todo listo para empezar a escanear productos. La próxima vez que necesites conectar el escáner, solo tienes que encenderlo y se volverá a conectar automáticamente."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "¡Escáner configurado!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "Hecho"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "Volver"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "Consulta el manual del escáner y restablece los ajustes de fábrica. A continuación, vuelve a intentar el proceso de configuración."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "Reintentar"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "Se ha encontrado un problema en el escaneo"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "Utiliza el escáner de códigos de barras para escanear el código siguiente y activar el modo Bluetooth HID."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11434,12 +11471,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "Otros"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "Utiliza tu escáner de códigos de barras para escanear el código de abajo y que entre en modo emparejamiento."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Habilita el Bluetooth y elige el escáner %1$@ en los ajustes de Bluetooth de iOS. El escáner emitirá un pitido y mostrará una luz LED fija cuando se empareje."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "Ir a los ajustes de tu dispositivo"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "Emparejar el escáner"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "Cómo configurar códigos de barras en los productos"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "Cómo configurar códigos de barras en los productos"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "Configuración del escáner"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "Configuración del escáner"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "Otro escáner"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "Configura un escáner de códigos de barras"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "Elige un modelo de la lista:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "Escanea el código de barras para probar tu escáner."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "Escanea el código de barras para probar tu escáner. Si el problema persiste, comprueba los ajustes de Bluetooth e inténtalo de nuevo."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "Aún no se han encontrado datos de escaneo"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "Prueba tu escáner"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "Toca un producto para \n añadirlo al carrito"; @@ -11998,6 +12089,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld producto elegido"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "Los productos de suscripción no son compatibles con la creación de pedidos"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "Cancelar"; @@ -12353,6 +12447,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "No se han podido recuperar las estadísticas de hoy."; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ disponibles"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "Hay existencias"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "Hecho"; diff --git a/WooCommerce/Resources/fr.lproj/Localizable.strings b/WooCommerce/Resources/fr.lproj/Localizable.strings index 9765a15d389..2dfb57f5194 100644 --- a/WooCommerce/Resources/fr.lproj/Localizable.strings +++ b/WooCommerce/Resources/fr.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 09:54:05+0000 */ +/* Translation-Revision-Date: 2025-08-12 13:54:04+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: fr */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "Carte %1$@ se terminant %2$@"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ en stock"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "En cours"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "En stock"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "Associer une boutique existante"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "Fermer"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "Utiliser cette adresse"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "Essayez de rechercher sans numéro d’appartement, de suite ou d’étage. Vous pourrez ajouter ces détails à la ligne d’adresse 2 plus tard."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "Aucun résultat"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "Rechercher une adresse"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "Décontracté"; @@ -9906,6 +9919,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "Média sur l’appareil"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "Trouver sur la carte"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "Adresse de facturation"; @@ -10894,8 +10910,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "Code-barres trop court"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "Scan partiel du codes-barres"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "Le scanner n’a pas envoyé de caractère de fin de ligne"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "Échec de la demande réseau"; @@ -11263,6 +11279,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "Lecture de code-barres"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "Configuration initiale du scanner de code-barres"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "Veuillez patienter"; @@ -11342,7 +11361,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "Annuler"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "Terminé"; +"pointOfSaleDashboard.support.cancel" = "Annuler"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "Lecture de code-barres"; @@ -11416,15 +11435,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "Retour"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "Image d’un code à scanner avec un lecteur de code-barres."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "Vous êtes prêt(e) à commencer à scanner des produits. La prochaine fois que vous devrez connecter votre scanner, il suffira de l’activer et il se reconnectera automatiquement."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "Scanner configuré !"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "Terminé"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "Retour"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "Veuillez consulter le manuel du scanner et le réinitialiser aux réglages d’usine, puis réessayez le flux de configuration."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "Réessayer"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "Problème de lecture détecté"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "Utilisez votre scanner de code-barres pour scanner le code ci-dessous afin d’activer le mode Bluetooth HID."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11434,12 +11471,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "Autre"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "Utilisez votre scanner de code-barres pour scanner le code ci-dessous et entrer en mode d’appairage."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Activez le Bluetooth et sélectionnez votre scanner %1$@ dans les réglages Bluetooth iOS. Le scanner émettra un bip et affichera un voyant LED lorsqu’il sera appairé."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "Accéder aux réglages de votre appareil"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "Appairer votre scanner"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "Comment configurer des codes-barres sur des produits"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "Comment configurer des codes-barres sur des produits"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "Configuration du scanner"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "Configuration du scanner"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "Autre scanner"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "Configurer un scanner de codes-barres"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "Sélectionner un modèle dans la liste :"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "Scannez le code-barres pour tester votre scanner."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "Scannez le code-barres pour tester votre scanner. Si le problème persiste, veuillez vérifier les réglages Bluetooth et réessayer."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "Aucune donnée de lecture trouvée pour le moment"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "Tester votre scanner"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "Appuyer sur un produit pour \n l’ajouter au panier"; @@ -11998,6 +12089,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld produit sélectionné"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "Les produits d’abonnement ne sont pas pris en charge pour la création de commande"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "Annuler"; @@ -12353,6 +12447,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "Impossible de récupérer les statistiques du jour"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ en stock"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "En stock"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "Terminé"; diff --git a/WooCommerce/Resources/he.lproj/Localizable.strings b/WooCommerce/Resources/he.lproj/Localizable.strings index 01e94909eb2..45e5238acbe 100644 --- a/WooCommerce/Resources/he.lproj/Localizable.strings +++ b/WooCommerce/Resources/he.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-30 14:54:04+0000 */ +/* Translation-Revision-Date: 2025-08-12 13:54:04+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: he_IL */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "כרטיס %1$@ שמסתיים בספרות %2$@"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ במלאי"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "בתהליך"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "במלאי"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "לחבר חנות קיימת"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "לסגור"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "להשתמש בכתובת הזאת"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "כדאי לחפש ללא מספרי דירה, סוויטה או קומה. אפשר להוסיף את הפרטים האלה לשורת הכתובת השנייה מאוחר יותר."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "לא נמצאו תוצאות"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "לחפש כתובת"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "יומיומי"; @@ -9906,6 +9919,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "מדיה במכשיר"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "למצוא במפה"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "כתובת לחיוב"; @@ -10894,8 +10910,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "הברקוד קצר מדי"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "סריקת ברקוד חלקית"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "הסורק לא שלח תו של סוף שורה"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "בקשת הרשת נכשלה"; @@ -11263,6 +11279,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "סריקת ברקוד"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "הגדרה ראשונית של סורק הברקוד"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "רק רגע"; @@ -11342,7 +11361,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "ביטול"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "בוצע"; +"pointOfSaleDashboard.support.cancel" = "לבטל"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "סריקת ברקוד"; @@ -11416,15 +11435,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "חזרה"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "תמונה של קוד לסריקה לצד סורק ברקוד."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "הכול מוכן, אפשר להתחיל לסרוק מוצרים. בפעם הבאה שיהיה צורך לחבר את הסורק, אפשר להדליק אותו והוא יתחבר מחדש אוטומטית."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "הסורק הוגדר!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "בוצע"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "חזרה"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "עליך לבדוק את המדריך של הסורק ולאפס את הסורק להגדרות היצרן. לאחר מכן יש לנסות שוב את תהליך ההגדרה."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "לנסות שוב"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "נמצאה בעיה בסריקה"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "יש להשתמש בסורק הברקודים כדי לסרוק את הקוד שלמטה ולהפעיל את מצב Bluetooth HID."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11434,12 +11471,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "אחר"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "יש להשתמש בסורק הברקוד כדי לסרוק את הקוד שלמטה ולהיכנס למצב חיבור."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "יש להפעיל את חיבור ה-Bluetooth ולבחור את הסורק של %1$@ בהגדרות Bluetooth של iOS. הסורק יצפצף ונורת LED תופיע ללא הבהובים כשהוא מקושר."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "לעבור להגדרות המכשיר"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "לחבר את הסורק"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "איך להגדיר ברקוד על מוצרים"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "איך להגדיר ברקוד על מוצרים"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "הגדרת הסורק"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "הגדרת הסורק"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "מקורות אחרים"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "להגדיר סורק ברקוד"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "יש לבחור דגם מהרשימה:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "יש לסרוק את הברקוד כדי לבדוק את הסורק שלך."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "יש לסרוק את הברקוד כדי לבדוק את הסורק שלך. אם הבעיה ממשיכה, יש לבדוק את הגדרות Bluetooth ולנסות שוב."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "לא נמצאו עדיין נתוני סריקה"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "לבדוק את הסורק"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "יש להקיש על מוצר כדי \n להוסיף את המוצר לעגלה"; @@ -11998,6 +12089,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "מוצר %ld נבחר"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "מוצרי מינוי שניתנים להזמנה לא נתמכים ביצירת הזמנות"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "ביטול"; @@ -12353,6 +12447,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "אין אפשרות להביא את הנתונים הסטטיסטיים מהיום"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ במלאי"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "במלאי"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "בוצע"; diff --git a/WooCommerce/Resources/id.lproj/Localizable.strings b/WooCommerce/Resources/id.lproj/Localizable.strings index c87b491c56c..7b44c83bbff 100644 --- a/WooCommerce/Resources/id.lproj/Localizable.strings +++ b/WooCommerce/Resources/id.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 09:54:05+0000 */ +/* Translation-Revision-Date: 2025-08-12 11:54:05+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: id */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "Kartu %1$@ dengan 4 digit terakhir %2$@"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ tersedia"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "Sedang berlangsung"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "Tersedia"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "Sambungkan toko yang sudah ada"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "Tutup"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "Gunakan Alamat Ini"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "Coba cari tanpa nomor apartemen, kamar, atau lantai. Anda dapat menambahkan rincian tersebut ke Baris Alamat 2 nanti."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "Hasil Tidak Ditemukan"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "Cari alamat"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "Kasual"; @@ -9903,6 +9916,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "Media di perangkat"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "Temukan di Peta"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "Alamat Penagihan"; @@ -10891,8 +10907,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "Barcode terlalu pendek"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "Pemindaian barcode sebagian"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "Pemindai tidak mengirimkan karakter akhir baris"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "Permintaan jaringan gagal"; @@ -11260,6 +11276,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "Pemindaian barcode"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "Penyiapan awal pemindai barcode"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "Harap tunggu"; @@ -11339,7 +11358,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "Batal"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "Selesai"; +"pointOfSaleDashboard.support.cancel" = "Batal"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "Pemindaian barcode"; @@ -11413,15 +11432,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "Kembali"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "Gambar kode yang harus dipindai oleh pemindai barcode."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "Anda siap untuk mulai memindai produk. Lain kali Anda perlu menghubungkan pemindai, cukup nyalakan dan pemindai akan terhubung kembali secara otomatis."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "Pemindai sudah siap!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "Selesai"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "Kembali"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "Silahkan periksa manual pemindai dan atur ulang ke pengaturan pabrik, lalu coba lagi alur penyiapan."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "Coba lagi"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "Masalah pemindaian ditemukan"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "Gunakan pemindai barcode untuk memindai kode di bawah ini dan mengaktifkan mode HID Bluetooth."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11431,12 +11468,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "Lainnya"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "Gunakan pemindai barcode untuk memindai kode di bawah ini dan masuk ke mode pemasangan."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Aktifkan Bluetooth dan pilih pemindai %1$@ Anda di pengaturan Bluetooth iOS. Pemindai akan berbunyi bip dan lampu LED-nya akan menyala terus saat dipasangkan."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "Buka pengaturan perangkat Anda"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "Pasangkan pemindai Anda"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "Cara menyiapkan barcode produk"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "Cara menyiapkan barcode produk"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "Penyiapan pemindai"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "Penyiapan pemindai"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "Pemindai lainnya"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "Menyiapkan pemindai barcode"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "Pilih model dari daftar berikut:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "Pindai barcode untuk menguji pemindai."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "Pindai barcode untuk menguji pemindai. Jika kendala terus berlanjut, silakan periksa pengaturan Bluetooth dan coba lagi."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "Data pemindaian belum ditemukan"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "Uji pemindai Anda"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "Ketuk produk ke \n tambahkan ke keranjang"; @@ -11995,6 +12086,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld produk dipilih"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "Produk langganan tidak didukung untuk pembuatan pesanan"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "Batal"; @@ -12350,6 +12444,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "Tidak dapat mengambil statistik hari ini"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ tersedia"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "Tersedia"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "Selesai"; diff --git a/WooCommerce/Resources/it.lproj/Localizable.strings b/WooCommerce/Resources/it.lproj/Localizable.strings index 5ecda640e97..8e11d67f495 100644 --- a/WooCommerce/Resources/it.lproj/Localizable.strings +++ b/WooCommerce/Resources/it.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 09:54:05+0000 */ +/* Translation-Revision-Date: 2025-08-12 11:54:21+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: it */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "%1$@ carta che termina %2$@"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ in magazzino"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "In corso"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "In magazzino"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "Connetti un negozio esistente"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "Chiudi"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "Usa questo indirizzo"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "Prova a cercare senza numero di appartamento, interno o piano. Potrai aggiungere questi dettagli in un secondo momento nel campo Indirizzo 2."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "Nessun risultato trovato"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "Cerca un indirizzo"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "Casual"; @@ -9906,6 +9919,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "Media sul dispositivo"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "Trova sulla mappa"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "Indirizzo di fatturazione"; @@ -10894,8 +10910,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "Codice a barre troppo corto"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "Scansione parziale del codice a barre"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "Lo scanner non ha inviato un carattere di fine riga"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "Richiesta di rete non andata a buon fine"; @@ -11263,6 +11279,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "Scansione dei codici a barre"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "Configurazione iniziale dello scanner di codici a barre"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "Attendi"; @@ -11342,7 +11361,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "Annulla"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "Fatto"; +"pointOfSaleDashboard.support.cancel" = "Annulla"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "Scansione dei codici a barre"; @@ -11416,15 +11435,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "Indietro"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "Immagine di un codice da scansionare con uno scanner di codici a barre."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "È tutto pronto per la scansione dei prodotti. La prossima volta che dovrai collegare lo scanner, basterà accenderlo e si riconnetterà automaticamente."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "Scanner configurato."; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "Fatto"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "Indietro"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "Consulta il manuale dello scanner e ripristina le impostazioni di fabbrica, quindi riavvia il flusso di configurazione."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "Riprova"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "Problema di scansione rilevato"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "Scansiona il codice di seguito con lo scanner di codici a barre per abilitare la modalità Bluetooth HID."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11434,12 +11471,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "Altro"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "Scansiona il codice di seguito con lo scanner di codici a barre per avviare l'associazione."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Attiva il Bluetooth e seleziona il tuo scanner %1$@ nelle impostazioni Bluetooth di iOS. Quando viene associato, lo scanner emetterà un segnale acustico e comparirà un LED fisso."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "Vai alle impostazioni del tuo dispositivo"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "Associa lo scanner"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "Come impostare codici a barre per i prodotti"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "Come impostare codici a barre per i prodotti"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "Configurazione dello scanner"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "Configurazione dello scanner"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "Altro scanner"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "Configura uno scanner di codici a barre"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "Seleziona un modello dall'elenco:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "Scansiona il codice a barre per testare lo scanner."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "Scansiona il codice a barre per testare lo scanner. Se il problema persiste, controlla le impostazioni Bluetooth e riprova."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "Nessun dato di scansione trovato"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "Testa lo scanner"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "Tocca un prodotto per \n aggiungerlo al carrello"; @@ -11998,6 +12089,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld prodotto selezionato"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "I prodotti in abbonamento non sono supportati per la creazione di ordini"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "Annulla"; @@ -12353,6 +12447,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "Impossibile recuperare le statistiche di oggi"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ in magazzino"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "In magazzino"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "Fatto"; diff --git a/WooCommerce/Resources/ja.lproj/Localizable.strings b/WooCommerce/Resources/ja.lproj/Localizable.strings index f5091c944dd..fc11af51ca2 100644 --- a/WooCommerce/Resources/ja.lproj/Localizable.strings +++ b/WooCommerce/Resources/ja.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 09:54:05+0000 */ +/* Translation-Revision-Date: 2025-08-12 11:54:06+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: ja_JP */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "最後の4桁が%2$@の %1$@ カード"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ の在庫あり"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "進行中"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "在庫あり"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "既存のストアを連携"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "閉じる"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "この住所を使用"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "アパート、階数、部屋番号を指定せずに検索してみてください。 これらの詳細は、後で「住所2行目」に追加できます。"; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "結果が見つかりませんでした"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "住所を検索"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "カジュアル"; @@ -9906,6 +9919,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "端末上のメディア"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "地図で検索"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "請求先住所"; @@ -10894,8 +10910,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "バーコードが短すぎます"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "バーコードスキャンが部分的です"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "スキャナーから改行コードが送信されませんでした"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "ネットワークリクエストに失敗しました"; @@ -11263,6 +11279,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "バーコードスキャン"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "バーコードスキャナーの初期設定"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "しばらくお待ちください"; @@ -11342,7 +11361,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "キャンセル"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "完了"; +"pointOfSaleDashboard.support.cancel" = "キャンセル"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "バーコードスキャン"; @@ -11416,15 +11435,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "戻る"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "バーコードスキャナーでスキャンするコードの画像。"; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "商品のスキャンを開始する準備ができました。 次回スキャナーを接続する場合は、電源を入れるだけで自動的に再接続されます。"; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "スキャナーが設定されました !"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "完了"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "戻る"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "スキャナーのマニュアルを確認し、工場出荷時の設定にリセットしてから、設定フローを再試行してください。"; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "再試行"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "スキャンの問題が見つかりました"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "バーコードスキャナーを使用して下のコードをスキャンし、Bluetooth HID モードを有効化します。"; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11434,12 +11471,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "その他"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "バーコードスキャナーを使用して下のコードをスキャンし、ペアリングモードに入ります。"; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Bluetooth を有効にし、iOS の Bluetooth 設定で %1$@ スキャナーを選択します。 スキャナーがペアリングされると、ビープ音が鳴り、LED が点灯状態になります。"; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "端末設定に移動"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "スキャナーをペアリング"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "商品にバーコードを設定する方法"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "商品にバーコードを設定する方法"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "スキャナーの設定"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "スキャナーの設定"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "その他のスキャナー"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "バーコードスキャナーを設定"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "リストからモデルを選択します:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "スター精密 BSH-20"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "バーコードをスキャンしてスキャナーをテストします。"; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "バーコードをスキャンしてスキャナーをテストします。 問題が解決しない場合は、Bluetooth 設定を確認してもう一度お試しください。"; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "スキャンデータが見つかりません"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "スキャナーをテスト"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "商品をタップして\n お買い物カゴに追加します"; @@ -11998,6 +12089,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld件の商品を選択済み"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "定期購入商品は注文の作成に対応していません"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "キャンセル"; @@ -12353,6 +12447,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "今日の統計情報を取得できません"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "在庫%1$@個"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "在庫あり"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "完了"; diff --git a/WooCommerce/Resources/ko.lproj/Localizable.strings b/WooCommerce/Resources/ko.lproj/Localizable.strings index d201623a042..b0029b0a4d3 100644 --- a/WooCommerce/Resources/ko.lproj/Localizable.strings +++ b/WooCommerce/Resources/ko.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 09:54:05+0000 */ +/* Translation-Revision-Date: 2025-08-13 09:54:07+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: ko_KR */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "%2$@(으)로 끝나는 %1$@ 카드"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ 재고 있음"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "진행 중"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "재고 있음"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "기존 스토어 연결"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "닫기"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "이 주소 사용"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "아파트 이름, 동 또는 호수 없이 검색해 보세요. 나중에 해당 상세 정보를 주소 줄 2에 추가할 수 있습니다."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "결과를 찾을 수 없음"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "주소 검색"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "평상시"; @@ -9906,6 +9919,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "기기의 미디어"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "지도에서 찾기"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "청구 주소"; @@ -10894,8 +10910,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "바코드가 너무 짧음"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "부분적인 바코드 스캔"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "스캐너가 줄 끝 문자를 보내지 않았음"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "네트워크 요청 실패"; @@ -11263,6 +11279,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "바코드 스캔 중"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "최초 바코드 스캐너 설정"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "기다려 주세요."; @@ -11342,7 +11361,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "취소"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "완료"; +"pointOfSaleDashboard.support.cancel" = "취소"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "바코드 스캔 중"; @@ -11416,15 +11435,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "뒤로"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "바코드 스캐너로 스캔할 코드의 이미지입니다."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "상품 스캔을 시작할 준비가 되었습니다. 다음에 스캐너를 연결해야 할 때는 스캐너만 켜면 자동으로 다시 연결됩니다."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "스캐너가 설정되었습니다!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "완료"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "뒤로"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "스캐너의 설명서를 확인하고 공장 설정으로 초기화한 다음에 설정 절차를 다시 시도하세요."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "다시 시도"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "스캔 문제 찾음"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "바코드 스캐너로 아래의 코드를 스캔하여 블루투스 HID 모드를 활성화합니다."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11434,12 +11471,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "기타"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "바코드 스캐너로 아래의 코드를 스캔하여 페어링 모드로 전환합니다."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "블루투스를 활성화하고 OS 블루투스 설정에서 %1$@ 스캐너를 선택합니다. 페어링되면 스캐너에서 신호음이 울리며 단색 LED가 표시됩니다."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "기기 설정으로 이동"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "스캐너 페어링"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "상품에 대한 바코드를 설정하는 방법"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "상품에 대한 바코드를 설정하는 방법"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "스캐너 설정"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "스캐너 설정"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "기타 스캐너"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "바코드 스캐너 설정"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "목록에서 모델 선택:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "바코드를 스캔하여 스캐너를 테스트합니다."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "바코드를 스캔하여 스캐너를 테스트합니다. 문제가 계속되면 블루투스 설정을 확인하고 다시 시도하세요."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "아직 스캔 데이터를 찾을 수 없음"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "스캐너 테스트"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "상품을 눌러 \n 장바구니에 추가"; @@ -11998,6 +12089,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld 상품 선택됨"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "구독 상품은 주문 생성이 지원되지 않습니다."; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "취소"; @@ -12353,6 +12447,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "오늘의 통계를 가져올 수 없음"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "재고 %1$@개 있음"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "재고 있음"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "완료"; diff --git a/WooCommerce/Resources/nl.lproj/Localizable.strings b/WooCommerce/Resources/nl.lproj/Localizable.strings index 9306c96b5fe..cb35383a1dc 100644 --- a/WooCommerce/Resources/nl.lproj/Localizable.strings +++ b/WooCommerce/Resources/nl.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-30 14:54:04+0000 */ +/* Translation-Revision-Date: 2025-08-14 14:54:09+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: nl */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "%1$@ eindigt op %2$@"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ op voorraad"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3205,8 +3204,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "Bezig"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "Op voorraad"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8266,6 +8264,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "Een bestaande winkel koppelen"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "Sluiten"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "Dit adres gebruiken"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "Probeer te zoeken zonder appartement-, suite- of etagenummers. Je kan deze gegevens later toevoegen aan adresregel 2."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "Geen resultaten gevonden"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "Een adres zoeken"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "Casual"; @@ -9900,6 +9913,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "Media op apparaat"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "Zoeken op de kaart"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "Factuuradres"; @@ -10888,8 +10904,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "Streepjescode te kort"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "Gedeeltelijke scan van streepjescode"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "De scanner heeft geen regeleinde-teken verzonden"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "Netwerkverzoek mislukt"; @@ -11257,6 +11273,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "Streepjescode scannen"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "Eerste instelling streepjescodescanner"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "Een moment geduld"; @@ -11336,7 +11355,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "Annuleren"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "Klaar"; +"pointOfSaleDashboard.support.cancel" = "Annuleren"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "Streepjescode scannen"; @@ -11410,15 +11429,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "Terug"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "Afbeelding van een code die gescand moet worden door een streepjescodescanner."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "Je bent klaar om producten te scannen. De volgende keer dat je je scanner moet aansluiten, hoef je hem alleen in te schakelen. Hij maakt dan automatisch opnieuw verbinding."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "Scanner ingesteld!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "Klaar"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "Terug"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "Raadpleeg de handleiding van de scanner en zet deze terug naar de fabrieksinstellingen. Probeer de scanner vervolgens opnieuw in te stellen."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "Opnieuw proberen"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "Scanprobleem gevonden"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "Gebruik je streepjescodescanner om de onderstaande code te scannen om de Bluetooth HID-modus in te schakelen."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11428,12 +11465,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "Overige"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "Gebruik je streepjescodescanner om de onderstaande code te scannen en in de koppelmodus te komen."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Schakel Bluetooth in en selecteer je %1$@ scanner in de Bluetooth-instellingen van iOS. De scanner piept en toont een constant brandende led wanneer de scanner is gekoppeld."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "Apparaatinstellingen openen"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "Koppel je scanner"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "Streepjescodes instellen op producten"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "Streepjescodes instellen op producten"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "Scanner-instelling"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "Scanner-instelling"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "Andere scanner"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "Een streepjescodescanner instellen"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "Selecteer een model uit de lijst:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "Scan de barcode om je scanner te testen."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "Scan de barcode om je scanner te testen. Als het probleem zich blijft voordoen, controleer dan de Bluetooth-instellingen en probeer het opnieuw."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "Nog geen scangegevens gevonden"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "Test je scanner"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "Tik op een product om het \n toe te voegen aan de winkelwagen"; @@ -11992,6 +12083,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld product geselecteerd"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "Abonnementproducten worden niet ondersteund bij het aanmaken van bestellingen"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "Annuleren"; @@ -12347,6 +12441,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "Kan de statistieken van vandaag niet ophalen"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ op voorraad"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "Op voorraad"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "Gereed"; diff --git a/WooCommerce/Resources/pt-BR.lproj/Localizable.strings b/WooCommerce/Resources/pt-BR.lproj/Localizable.strings index 00c6a64fe0c..1711094d750 100644 --- a/WooCommerce/Resources/pt-BR.lproj/Localizable.strings +++ b/WooCommerce/Resources/pt-BR.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-28 21:54:26+0000 */ +/* Translation-Revision-Date: 2025-08-12 15:54:08+0000 */ /* Plural-Forms: nplurals=2; plural=(n > 1); */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: pt_BR */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "Cartão %1$@ com final %2$@"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ em estoque"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "Em andamento"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "em estoque"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "Conectar loja existente"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "Fechar"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "Usar este endereço"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "Tente pesquisar sem os números de apartamento, sala ou andar. Você poderá incluir esses detalhes depois na linha de endereço 2."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "Nenhum resultado encontrado"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "Pesquisar um endereço"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "Casual"; @@ -9906,6 +9919,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "Mídia no dispositivo"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "Encontrar no mapa"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "Endereço de cobrança"; @@ -10894,8 +10910,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "Código de barras muito curto"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "Varredura parcial do código de barras"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "O leitor não enviou um caractere de fim de linha"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "Falha na solicitação de rede"; @@ -11263,6 +11279,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "Escaneamento de código de barras"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "Configuração inicial do leitor de código de barras"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "Aguarde"; @@ -11342,7 +11361,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "Cancelar"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "Concluir"; +"pointOfSaleDashboard.support.cancel" = "Cancelar"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "Escaneamento de código de barras"; @@ -11416,15 +11435,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "Voltar"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "Imagem de um código a ser escaneado por um leitor de código de barras."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "Tudo pronto para começar a escanear produtos. Na próxima vez que precisar conectar seu leitor, basta ligá-lo para reconectá-lo automaticamente."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "Leitor configurado!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "Concluído"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "Voltar"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "Verifique o manual do leitor e restaure-o para as configurações de fábrica. Depois, tente o configurá-lo novamente."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "Tentar novamente"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "Problema encontrado no escaneamento"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "Use seu leitor de código de barras para escanear o código abaixo e ativar o modo HID do Bluetooth."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11434,12 +11471,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "Outro"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "Use o leitor de código de barras para escanear o código abaixo e entrar no modo de pareamento."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Ative o Bluetooth e selecione seu leitor %1$@ nas configurações de Bluetooth do iOS. O leitor emitirá um bipe, e o LED ficará aceso quando emparelhado."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "Acesse as configurações do dispositivo"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "Emparelhe seu leitor"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "Como configurar códigos de barras em produtos"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "Como configurar códigos de barras em produtos"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "Configuração do leitor"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "Configuração do leitor"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum NT-1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "Outro leitor"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "Configurar um leitor de código de barras"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "Selecione um modelo na lista:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "Escaneie o código de barras para testar seu leitor."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "Escaneie o código de barras para testar seu leitor. Se o problema persistir, verifique as configurações Bluetooth e tente novamente."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "Nenhum dado de escaneamento encontrado"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "Teste seu leitor"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "Toque no produto para\n adicionar ao carrinho"; @@ -11998,6 +12089,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld produto selecionado"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "Produtos de assinatura não são aceitos na criação de pedidos"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "Cancelar"; @@ -12353,6 +12447,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "Não é possível buscar as estatísticas de hoje"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ em estoque"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "Em estoque"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "Concluir"; diff --git a/WooCommerce/Resources/ru.lproj/Localizable.strings b/WooCommerce/Resources/ru.lproj/Localizable.strings index d706ddbbbb2..68ca826c078 100644 --- a/WooCommerce/Resources/ru.lproj/Localizable.strings +++ b/WooCommerce/Resources/ru.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 15:54:04+0000 */ +/* Translation-Revision-Date: 2025-08-14 14:54:09+0000 */ /* Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: ru */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "Срок действия карты %1$@ истекает %2$@"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ в наличии"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "Выполняется"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "Есть в наличии"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "Подключить существующий магазин"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "Закрыть"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "Использовать этот адрес"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "Попробуйте выполнить поиск, не указывая номера квартиры, апартаментов или этажа. Эти сведения можно будет затем указать в 2-й строке адреса."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "Результатов не найдено"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "Поиск адреса"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "Непринуждённый"; @@ -9906,6 +9919,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "Медиафайлы на устройстве"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "Найти на карте"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "Платёжный адрес"; @@ -10894,8 +10910,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "Слишком короткий штрихкод"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "Частичное сканирование штрихкода"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "Сканер не отправил символ конца строки"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "Не удалось выполнить запрос к сети"; @@ -11263,6 +11279,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "Сканирование штрихкодов"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "Начальная настройка сканера штрихкодов"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "Подождите немного"; @@ -11342,7 +11361,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "Отмена"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "Готово"; +"pointOfSaleDashboard.support.cancel" = "Отмена"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "Сканирование штрихкодов"; @@ -11416,15 +11435,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "Назад"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "Изображение: код для чтения сканером штрихкодов."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "Вы можете начинать сканировать товары. В следующий раз, когда вам потребуется сканер, просто включите его и он подключится автоматически."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "Сканер настроен!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "Готово"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "Назад"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "Сверьтесь с инструкцией по эксплуатации сканера и верните его к заводским параметрам, а затем повторите процедуру настройки."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "Повторить"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "Обнаружена ошибка сканирования"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "Чтобы активировать режим Bluetooth HID, отсканируйте код ниже своим сканером штрихкодов."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11434,12 +11471,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "Другой"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "Чтобы войти в режим подключения, отсканируйте код ниже своим сканером штрихкодов."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Включите Bluetooth и выберите свой сканер %1$@ в настройках iOS Bluetooth. При подключении сканер издаёт звуковой сигнал и постоянно горит светодиод."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "Открыть настройки устройства"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "Подключение сканера"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "Настройка штрихкодов товаров"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "Настройка штрихкодов товаров"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "Настройка сканера"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "Настройка сканера"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "Другой сканер"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "Настройка сканера штрихкодов"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "Выберите модель из списка."; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "Отсканируйте штрихкод, чтобы проверить работу сканера."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "Отсканируйте штрихкод, чтобы проверить работу сканера. Если проблема не решена, проверьте настройки Bluetooth и повторите попытку."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "Данных сканирования не найдено"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "Проверить сканер"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "Нажмите на товар, чтобы \n добавить его в корзину"; @@ -11995,6 +12086,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld товар выбран"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "Товары по подписке не поддерживаются при создании заказа"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "Отмена"; @@ -12350,6 +12444,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "Не удаётся получить статистику за сегодня"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ в наличии"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "В наличии"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "Готово"; diff --git a/WooCommerce/Resources/sv.lproj/Localizable.strings b/WooCommerce/Resources/sv.lproj/Localizable.strings index 9cf4886b5ca..6bedafe0d51 100644 --- a/WooCommerce/Resources/sv.lproj/Localizable.strings +++ b/WooCommerce/Resources/sv.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 13:54:04+0000 */ +/* Translation-Revision-Date: 2025-08-11 15:54:04+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: sv_SE */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "%1$@-kortets sista siffror är %2$@"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ i lager"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "Pågår"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "I lager"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "Anslut befintlig butik"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "Stäng"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "Använd denna adress"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "Prova att söka utan lägenhets-, rums- eller våningsnummer. Du kan lägga till denna information på adressrad 2 senare."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "Inga resultat hittades"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "Sök efter en adress"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "Vardagligt"; @@ -9906,6 +9919,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "Media på enhet"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "Hitta på karta"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "Faktureringsadress"; @@ -10894,8 +10910,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "Streckkod för kort"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "Partiell streckkodsskanning"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "Skannern skickade inte något radslutstecken"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "Nätverksbegäran misslyckades"; @@ -11263,6 +11279,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "Streckkodsskanning"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "Initial konfiguration av streckkodsskanner"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "Vänta"; @@ -11342,7 +11361,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "Avbryt"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "Klar"; +"pointOfSaleDashboard.support.cancel" = "Avbryt"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "Streckkodsskanning"; @@ -11416,15 +11435,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "Tillbaka"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "Bild på en kod som ska skannas med en streckkodsskanner."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "Du kan nu börja skanna produkter. Nästa gång du behöver ansluta skannern är det bara att slå på den så återansluts den automatiskt."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "Skanner konfigurerad!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "Klar"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "Tillbaka"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "Läs i skannerns handbok och återställ skannern till fabriksinställningarna. Kör sedan konfigurationsflödet igen."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "Försök igen"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "Skanningsproblem upptäcktes"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "Använd streckkodsskannern för att skanna koden nedan och aktivera Bluetooth HID-läge."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11434,12 +11471,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "Annan"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "Använd din streckkodsskanner för att skanna koden nedan och gå in i parkopplingsläge."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Aktivera Bluetooth och välj din %1$@-skanner i iOS Bluetooth-inställningarna. Skannern piper och dess lysdiod lyser med ett fast sken när den är parkopplad."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "Gå till enhetens inställningar"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "Para din skanner"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "Hur man ställer in streckkoder på produkter"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "Hur man ställer in streckkoder på produkter"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "Skannerkonfiguration"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "Skannerkonfiguration"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "Annan skanner"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "Konfigurera en streckkodsskanner"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "Välj en modell från listan:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "Skanna streckkoden för att testa din skanner."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "Skanna streckkoden för att testa din skanner. Kontrollera Bluetooth-inställningarna och försök igen om problemet kvarstår."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "Inga skanningsdata hittade än"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "Testa din skanner"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "Klicka på en produkt för att \n lägga till den i varukorgen"; @@ -11998,6 +12089,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld produkt vald"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "Prenumerationsprodukter stöds inte vid skapande av ordrar"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "Avbryt"; @@ -12353,6 +12447,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "Kan inte hämta dagens statistik"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ i lager"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "I lager"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "Klar"; diff --git a/WooCommerce/Resources/tr.lproj/Localizable.strings b/WooCommerce/Resources/tr.lproj/Localizable.strings index d7e61518d3e..c330009fd5e 100644 --- a/WooCommerce/Resources/tr.lproj/Localizable.strings +++ b/WooCommerce/Resources/tr.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 15:54:05+0000 */ +/* Translation-Revision-Date: 2025-08-12 11:54:06+0000 */ /* Plural-Forms: nplurals=2; plural=(n > 1); */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: tr */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "%2$@ ile biten %1$@ kartı"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ stokta"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "Devam ediyor"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "Stokta"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "Mevcut bir mağazayı bağla"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "Kapat"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "Bu Adresi Kullan"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "Daire, oda veya kat numarası olmadan aramayı deneyin. Bu ayrıntıları Adres Satırı 2'ye daha sonra ekleyebilirsiniz."; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "Hiçbir Sonuç Bulunamadı"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "Bir adresi ara"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "Gelişigüzel"; @@ -9903,6 +9916,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "Cihazdaki ortamlar"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "Haritada Bul"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "Fatura Adresi"; @@ -10891,8 +10907,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "Barkod çok kısa"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "Kısmi barkod taraması"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "Tarayıcı bir satır sonu karakterini göndermedi"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "Ağ isteği başarısız oldu"; @@ -11260,6 +11276,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "Barkod taraması"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "İlk barkod tarayıcı kurulumu"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "Lütfen bekleyin"; @@ -11339,7 +11358,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "İptal Et"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "Tamam"; +"pointOfSaleDashboard.support.cancel" = "İptal Et"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "Barkod taraması"; @@ -11413,15 +11432,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "Geri"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "Bir barkod tarayıcısı tarafından taranacak olan kod görseli."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "Ürün taramaya başlamaya hazırsınız. Tarayıcınızı bağlamanız gereken bir sonraki seferde açmanız yeterlidir; tarayıcı otomatik olarak yeniden bağlanacaktır."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "Tarayıcı hazır!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "Tamam"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "Geri"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "Lütfen tarayıcının kılavuzunu kontrol edin ve fabrika ayarlarına sıfırlayın, ardından kurulum akışını yeniden deneyin."; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "Tekrar dene"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "Tarama sorunu bulundu"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "Aşağıdaki kodu tarayarak Bluetooth HID modunu etkinleştirin."; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11431,12 +11468,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "Diğer"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "Eşleştirme moduna girmek için aşağıdaki kodu taramak üzere barkod tarayıcınızı kullanın."; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Bluetooth'u etkinleştirin ve iOS Bluetooth ayarlarından %1$@ tarayıcınızı seçin. Tarayıcı bip sesi verecek ve eşlendiğinde sabit bir LED ışığı gösterecek."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "Cihaz ayarlarınıza gidin"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "Tarayıcınızı eşleştirin"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "Ürünlerde barkod nasıl ayarlanır?"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "Ürünlerde barkod nasıl ayarlanır?"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "Tarayıcı kurulumu"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "Tarayıcı kurulumu"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "Diğer tarayıcı"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "Bir barkod tarayıcı ayarlama"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "Listeden bir model seçin:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "Tarayıcınızı test etmek için barkodu tarayın."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "Tarayıcınızı test etmek için barkodu tarayın. Sorun devam ederse lütfen Bluetooth ayarlarını kontrol edip tekrar deneyin."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "Henüz tarama verisi bulunamadı"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "Tarayıcınızı test edin"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = " için ürüne dokunun Sepete eklemek"; @@ -11995,6 +12086,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "%ld ürün seçildi"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "Abonelik ürünleri, sipariş oluşturma için desteklenmiyor"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "İptal et"; @@ -12350,6 +12444,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "Bugünün istatistikleri alınamıyor"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "%1$@ stokta"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "Stokta"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "Tamam"; diff --git a/WooCommerce/Resources/zh-Hans.lproj/Localizable.strings b/WooCommerce/Resources/zh-Hans.lproj/Localizable.strings index 6ad4de7268b..5993e1ccae1 100644 --- a/WooCommerce/Resources/zh-Hans.lproj/Localizable.strings +++ b/WooCommerce/Resources/zh-Hans.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 09:54:05+0000 */ +/* Translation-Revision-Date: 2025-08-12 09:54:18+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: zh_CN */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "尾号为 %2$@ 的 %1$@ 银行卡"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "库存 %1$@ 件"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "进行中"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "有货"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "连接现有商店"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "关闭"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "使用此地址"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "请尝试省略公寓、套房或楼层号进行搜索。 您可以稍后将这些详细信息添加到地址行 2。"; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "未找到结果"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "搜索地址"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "随意"; @@ -9906,6 +9919,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "设备上的媒体"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "在地图上查找"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "账单地址"; @@ -10894,8 +10910,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "条形码过短"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "部分条形码扫描"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "扫描仪未发送行尾字符"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "网络请求失败"; @@ -11263,6 +11279,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "条形码扫描"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "条形码扫描仪初始设置"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "请稍候"; @@ -11342,7 +11361,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "取消"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "完成"; +"pointOfSaleDashboard.support.cancel" = "取消"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "条形码扫描"; @@ -11416,15 +11435,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "返回"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "需要使用条形码扫描仪扫描的代码图片。"; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "您可以开始扫描产品了。 下次需要连接扫描仪时,您只需打开电源,它就会自动重新连接。"; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "扫描仪设置完毕!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "完成"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "返回"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "请查阅扫描仪的使用手册,将其恢复出厂设置后,重新尝试设置流程。"; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "重试"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "发现扫描问题"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "使用您的条形码扫描仪扫描下方的代码,启用蓝牙 HID 模式。"; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11434,12 +11471,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "其他"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "使用您的条形码扫描仪扫描下方的代码,进入配对模式。"; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "在 iOS 蓝牙设置中启用蓝牙并选择您的 %1$@ 扫描仪。 配对成功后,扫描仪将发出蜂鸣音,同时 LED 指示灯变为常亮状态。"; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "转到您的设备设置"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "配对您的扫描仪"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "如何在产品上设置条形码"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "如何在产品上设置条形码"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "扫描仪设置"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "扫描仪设置"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "其他扫描仪"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "设置条形码扫描仪"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "从列表中选择一个型号:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "扫描条形码以测试您的扫描仪。"; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "扫描条形码以测试您的扫描仪。 如果问题仍然存在,请检查蓝牙设置并重试。"; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "尚未找到扫描数据"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "测试您的扫描仪"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "点击产品以 \n 将其添加到购物车"; @@ -11998,6 +12089,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "已选择 %ld 个产品"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "不支持为订阅产品创建订单"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "取消"; @@ -12353,6 +12447,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "无法获取今日统计数据"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "库存:%1$@ 件"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "有货"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "完成"; diff --git a/WooCommerce/Resources/zh-Hant.lproj/Localizable.strings b/WooCommerce/Resources/zh-Hant.lproj/Localizable.strings index ddbf1b4c519..8ca3be39d0b 100644 --- a/WooCommerce/Resources/zh-Hant.lproj/Localizable.strings +++ b/WooCommerce/Resources/zh-Hant.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-07-29 09:54:05+0000 */ +/* Translation-Revision-Date: 2025-08-14 14:54:09+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: zh_TW */ @@ -45,8 +45,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility description for a card payment method, used by assistive technologies such as screen reader. %1$@ is a placeholder for the card brand, %2$@ is a placeholder for the last 4 digits of the card number */ "%1$@ card ending %2$@" = "卡號結尾是 %2$@ 的 %1$@ 卡"; -/* Label about product's inventory stock status shown during order creation - Label about product's inventory stock status shown on Products tab */ +/* Label about product's inventory stock status shown during order creation */ "%1$@ in stock" = "%1$@ 尚有庫存"; /* Title for the error screen when a card present payments plugin is in test mode on a live site. %1$@ is a placeholder for the plugin name. */ @@ -3211,8 +3210,7 @@ which should be translated separately and considered part of this sentence. */ /* Accessibility label for an indeterminate loading indicator */ "In progress" = "進行中"; -/* Display label for the bundle item's inventory stock status - Label about product's inventory stock status shown on Products tab */ +/* Display label for the bundle item's inventory stock status */ "In stock" = "尚有存貨"; /* Long descriptions of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ @@ -8272,6 +8270,21 @@ If your translation of that term also happens to contains a hyphen, please be su /* Button title on the store picker for store connection */ "addStoreFooterView.connectExistingStoreButton" = "連結現有商店"; +/* Text for the close button in the Edit Address Form. */ +"addressMapPicker.button.close" = "關閉"; + +/* Button to confirm selected address from map. */ +"addressMapPicker.button.useThisAddress" = "使用此地址"; + +/* Hint shown when address search returns no results, suggesting to omit unit details and add them to address line 2. */ +"addressMapPicker.noResults.hint" = "嘗試搜尋時,排除公寓、套房或樓層號碼。 你之後可在第二行地址新增這些資訊。"; + +/* Title shown when address search returns no results. */ +"addressMapPicker.noResults.title" = "找不到結果"; + +/* Placeholder text for address search bar. */ +"addressMapPicker.search.placeholder" = "搜尋地址"; + /* Title of Casual AI Tone */ "aiToneVoice.casual" = "輕鬆"; @@ -9903,6 +9916,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the downloadable file bottom sheet action for adding media from device. */ "downloadableFileSource.deviceMedia" = "裝置上的媒體檔案"; +/* Button to open map address picker. */ +"editOrderAddressForm.pickOnMap" = "在地圖上尋找"; + /* Title for the Edit Billing Address Form */ "editOrderAddressFormViewModel.billingTitle" = "帳單地址"; @@ -10891,8 +10907,8 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when scan is too short. */ "pointOfSale.barcodeScan.error.barcodeTooShort" = "條碼太短"; -/* Error message shown when scan is incomplete. */ -"pointOfSale.barcodeScan.error.incompleteScan" = "部分條碼掃描"; +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "掃描器未傳送換行字元"; /* Error message shown when there is an unknown networking error while scanning a barcode. */ "pointOfSale.barcodeScan.error.network" = "網路要求失敗"; @@ -11260,6 +11276,9 @@ which should be translated separately and considered part of this sentence. */ /* The title of the menu button to view barcode scanner documentation, shown in a popover menu. */ "pointOfSale.floatingButtons.barcodeScanning.button.title" = "掃描條碼"; +/* The title of the menu button to start a barcode scanner setup flow. */ +"pointOfSale.floatingButtons.barcodeScanningSetup.button.title" = "條碼掃描器初始設定"; + /* The title of the floating button to indicate that the reader is not ready for another connection, usually because a connection has just been cancelled */ "pointOfSale.floatingButtons.cancellingConnection.pleaseWait.title" = "請稍候"; @@ -11339,7 +11358,7 @@ which should be translated separately and considered part of this sentence. */ "pointOfSaleDashboard.payments.onboarding.cancel" = "取消"; /* Button to dismiss the support form from the POS dashboard. */ -"pointOfSaleDashboard.support.done" = "完成"; +"pointOfSaleDashboard.support.cancel" = "取消"; /* Heading for the barcode info modal in POS, introducing barcode scanning feature */ "pos.barcodeInfoModal.heading" = "掃描條碼"; @@ -11413,15 +11432,33 @@ which should be translated separately and considered part of this sentence. */ /* Title for the back button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.back.button.title" = "返回"; +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "圖片:條碼掃描器掃描條碼。"; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "你可以開始掃描商品了。 之後要連結掃描器時,只要開啟掃描器,即會自動重新連結。"; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "掃描器設定完畢!"; + /* Title for the done button in barcode scanner setup navigation */ "pos.barcodeScannerSetup.done.button.title" = "完成"; /* Title for the back button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.back.button.title" = "返回"; +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "請參閱掃描器的使用手冊,並將該裝置重設為原廠設定,然後重試設定流程。"; + /* Title for the retry button in barcode scanner setup error step */ "pos.barcodeScannerSetup.error.retry.button.title" = "重試"; +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "發現掃描問題"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "使用條碼掃描器掃描下方條碼,啟用藍牙 HID 模式。"; + /* Title for Netum 1228BC scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; @@ -11431,12 +11468,66 @@ which should be translated separately and considered part of this sentence. */ /* Title for other scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.other.title" = "其他"; +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "使用條碼掃描器掃描下方條碼,進入配對模式。"; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "啟用藍牙,並在 iOS 藍牙設定中,選取 %1$@ 掃描器。 掃描器配對時會發出嗶聲,並且 LED 燈會保持恆亮。"; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "前往裝置設定"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "替掃描器配對"; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "如何設定商品條碼"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "如何設定商品條碼"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "掃描器設定"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "掃描器設定"; + +/* Display name for Netum 1228BC barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.netum1228BC.name" = "Netum 1228BC"; + +/* Display name for other/unspecified barcode scanner models */ +"pos.barcodeScannerSetup.scannerType.other.name" = "其他掃描器"; + +/* Display name for Star BSH-20B barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.starBSH20B.name" = "Star BSH-20B"; + +/* Display name for Tera 1200 2D barcode scanner model */ +"pos.barcodeScannerSetup.scannerType.tera12002D.name" = "Tera 1200 2D"; + +/* Heading for the barcode scanner setup selection screen */ +"pos.barcodeScannerSetup.selection.heading" = "設定條碼掃描器"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "從清單中選取型號:"; + /* Title for Star BSH-20B scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.starBSH20B.title" = "Star BSH-20B"; /* Title for Tera 1200 2D scanner option in barcode scanner setup */ "pos.barcodeScannerSetup.tera12002D.title" = "Tera 1200 2D"; +/* Instruction for testing the scanner by scanning a barcode */ +"pos.barcodeScannerSetup.test.instruction" = "掃描條碼以測試掃描器。"; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "掃描條碼以測試掃描器。 萬一問題持續發生,請檢查藍牙設定,然後再試一次。"; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "尚未找到掃描資料"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "測試掃描器"; + /* Hint to add products to the Cart when this is empty. */ "pos.cartView.addItemsToCartHint" = "點選商品即可\n 新增至購物車"; @@ -11995,6 +12086,9 @@ which should be translated separately and considered part of this sentence. */ /* Text on the header of the Select Product screen when one product is selected. */ "productSelectorViewModel.selectProductsTitle.singularProductSelectedFormattedText" = "已選取 %ld 件商品"; +/* Message explaining unsupported subscription products for order creation */ +"productSelectorViewModel.subscriptionProductUnsupportedReason" = "建立訂單功能不支援訂閱產品"; + /* Cancel button in the product downloadables alert */ "productSettings.downloadableProductAlertCancel" = "取消"; @@ -12350,6 +12444,12 @@ which should be translated separately and considered part of this sentence. */ /* Title label when the widget can't fetch data. */ "storeWidgets.unableToFetchView.unableToFetch" = "無法擷取今日的統計資料"; +/* Label about product's inventory stock status shown on Products tab Placeholder is the stock quantity. Reads as: '20 in stock'. */ +"string.createStockText.count" = "「%1$@」尚有庫存"; + +/* Label about product's inventory stock status shown on Products tab */ +"string.createStockText.inStock" = "尚有庫存"; + /* Title of the button to save subscription's expire after info. */ "subscriptionExpiryView.done" = "完成"; diff --git a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj index d065e0c6ac9..c88cc00c989 100644 --- a/WooCommerce/WooCommerce.xcodeproj/project.pbxproj +++ b/WooCommerce/WooCommerce.xcodeproj/project.pbxproj @@ -1307,7 +1307,6 @@ 3F58701F281B947E004F7556 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3F58701E281B947E004F7556 /* Main.storyboard */; }; 3F587021281B9494004F7556 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3F587020281B9494004F7556 /* LaunchScreen.storyboard */; }; 3F587026281B9C19004F7556 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3F587028281B9C19004F7556 /* InfoPlist.strings */; }; - 3F88EC3F2DF8D4BC0023A6F4 /* UIDevice+DeviceModelIdentifierInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F88EC3E2DF8D4BC0023A6F4 /* UIDevice+DeviceModelIdentifierInfo.swift */; }; 4506BD712461965300FE6377 /* ProductVisibilityViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4506BD6F2461965300FE6377 /* ProductVisibilityViewController.swift */; }; 4506BD722461965300FE6377 /* ProductVisibilityViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4506BD702461965300FE6377 /* ProductVisibilityViewController.xib */; }; 4508BF622660E34A00707869 /* ShippingLabelCarrierAndRatesTopBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4508BF612660E34A00707869 /* ShippingLabelCarrierAndRatesTopBanner.swift */; }; @@ -4480,7 +4479,6 @@ 3F587037281B9C50004F7556 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; 3F587038281B9C52004F7556 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; }; 3F64F76C2C06A3A50085DEEF /* WooCommerce.release-alpha.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "WooCommerce.release-alpha.xcconfig"; sourceTree = ""; }; - 3F88EC3E2DF8D4BC0023A6F4 /* UIDevice+DeviceModelIdentifierInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+DeviceModelIdentifierInfo.swift"; sourceTree = ""; }; 3FF314EF26FC784A0012E68E /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 4506BD6F2461965300FE6377 /* ProductVisibilityViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductVisibilityViewController.swift; sourceTree = ""; }; 4506BD702461965300FE6377 /* ProductVisibilityViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ProductVisibilityViewController.xib; sourceTree = ""; }; @@ -11066,7 +11064,6 @@ DE6906E627D74A1900735E3B /* WooSplitViewController.swift */, 26A7C8782BE91F3D00382627 /* WatchDependenciesSynchronizer.swift */, 26B249702BEC801400730730 /* WatchDependencies.swift */, - 3F88EC3E2DF8D4BC0023A6F4 /* UIDevice+DeviceModelIdentifierInfo.swift */, ); path = System; sourceTree = ""; @@ -16257,7 +16254,6 @@ 205B7ECD2C19FD2F00D14A36 /* PointOfSaleCardPresentPaymentDisplayReaderMessageMessageViewModel.swift in Sources */, 2DB877522E25466C0001B175 /* ShippingItemRowAccessibility.swift in Sources */, DEF8CF1F29AC870A00800A60 /* WPComEmailLoginViewModel.swift in Sources */, - 3F88EC3F2DF8D4BC0023A6F4 /* UIDevice+DeviceModelIdentifierInfo.swift in Sources */, 74A33D8021C3F234009E25DE /* LicensesViewController.swift in Sources */, 454453CA27566CDE00464AC5 /* HubMenuViewModel.swift in Sources */, 934CB123224EAB150005CCB9 /* main.swift in Sources */, diff --git a/config/Version.Public.xcconfig b/config/Version.Public.xcconfig index 48d463c6ca5..bae780c92f4 100644 --- a/config/Version.Public.xcconfig +++ b/config/Version.Public.xcconfig @@ -1,4 +1,4 @@ CURRENT_PROJECT_VERSION = $VERSION_LONG MARKETING_VERSION = $VERSION_SHORT -VERSION_LONG = 23.0.0.0 +VERSION_LONG = 23.0.0.1 VERSION_SHORT = 23.0 diff --git a/fastlane/metadata/ar-SA/release_notes.txt b/fastlane/metadata/ar-SA/release_notes.txt index 6ec84184b47..91d4798ca2e 100644 --- a/fastlane/metadata/ar-SA/release_notes.txt +++ b/fastlane/metadata/ar-SA/release_notes.txt @@ -1 +1 @@ -يُعزز هذا التحديث ملصقات الشحن مع تحسين إمكانية الوصول، والتحقق من العنوان تحققًا أكثر ذكاء، والحصول على أداء أسرع. كما أضفنا كذلك علامة تبويب "نقطة البيع" المخصصة للوصول الأسرع، وأصبحت طلبات نقاط البيع قابلة الآن لاستخدام عوامل التصفية في قائمة طلباتك للحصول على تنظيم أفضل. بالإضافة إلى ذلك، حسنّا الأصول لتقليل مساحة التطبيق! +أداء أسرع وتجربة أكثر سلاسة! يؤدي هذا التحديث إلى تحسين تحميل المنتج، وتحسين حسابات الضرائب، وتحسين البحث في العنوان باستخدام دعم الخريطة. أضفنا فحص الرمز الشريطي الموجه لمستخدمي نقطة البيع (POS) وتعزيز متطلبات الشحن لوجهات الاتحاد الأوروبي. بالإضافة إلى ذلك، أصلحنا مشكلات الاستقرار لتوفير تجربة أكثر موثوقية. diff --git a/fastlane/metadata/de-DE/release_notes.txt b/fastlane/metadata/de-DE/release_notes.txt index ed9dbe9f321..48cb3952fa9 100644 --- a/fastlane/metadata/de-DE/release_notes.txt +++ b/fastlane/metadata/de-DE/release_notes.txt @@ -1 +1 @@ -Mit diesem Update profitierst du von schnellerer Versandetikettenerstellung, intelligenterer Adressvalidierung und höherer Performance. Wir haben zudem einen speziellen Tab für den Verkaufsort (POS) für schnelleren Zugriff hinzugefügt. Außerdem kannst du in deiner Bestellliste jetzt nach POS-Bestellungen filtern. So behältst du jederzeit den Überblick. Des Weiteren haben wir die Assets optimiert, um den erforderlichen Speicherplatz für die App zu reduzieren! +Schnellere Performance und reibungsloses Erlebnis! Dieses Update bietet Verbesserungen hinsichtlich der Produktladezeiten, der Steuerberechnungen und der Adresssuche mit Kartenunterstützung. Wir haben geführte Barcode-Scans für POS-Benutzer hinzugefügt und die Versandanforderungen für Zieladressen in der EU ausgebaut. Außerdem haben wir Stabilitätsprobleme behoben, um ein zuverlässigeres Erlebnis zu bieten. diff --git a/fastlane/metadata/default/release_notes.txt b/fastlane/metadata/default/release_notes.txt index ed56f529f3e..fd40b03d802 100644 --- a/fastlane/metadata/default/release_notes.txt +++ b/fastlane/metadata/default/release_notes.txt @@ -1 +1 @@ -This update enhances Shipping Labels with improved accessibility, smarter address validation, and faster performance. We've also added a dedicated Point of Sale tab for quicker access, and POS orders are now filterable in your order list for better organization. Plus, we've optimized assets to reduce the app's size! +Faster performance and smoother experience! This update brings improved product loading, better tax calculations, and enhanced address lookup with map support. We've added guided barcode scanning for POS users and strengthened shipping requirements for EU destinations. Plus, we've fixed stability issues for a more reliable experience. \ No newline at end of file diff --git a/fastlane/metadata/es-ES/release_notes.txt b/fastlane/metadata/es-ES/release_notes.txt index b981a6ef9ca..9941a6be0d7 100644 --- a/fastlane/metadata/es-ES/release_notes.txt +++ b/fastlane/metadata/es-ES/release_notes.txt @@ -1 +1 @@ -Esta actualización mejora las etiquetas de envío gracias a una mejor accesibilidad, una validación de direcciones más inteligente y un rendimiento más rápido. También hemos añadido una pestaña dedicada a POS para un acceso más rápido, y los pedidos de POS ahora se pueden filtrar en tu lista de pedidos para mejorar la organización. Además, hemos optimizado los recursos para reducir el tamaño de la aplicación. +Rendimiento más rápido y experiencia más fluida Esta actualización mejora la carga de productos, los cálculos de impuestos y la búsqueda de direcciones al incluir compatibilidad con mapas. Hemos añadido el escaneo guiado de códigos de barras para los usuarios de puntos de venta y hemos reforzado los requisitos de envío para destinos de la UE. Además, hemos corregido problemas de estabilidad para ofrecer una experiencia más fiable. diff --git a/fastlane/metadata/fr-FR/release_notes.txt b/fastlane/metadata/fr-FR/release_notes.txt index 94624425b89..c17ce0558a6 100644 --- a/fastlane/metadata/fr-FR/release_notes.txt +++ b/fastlane/metadata/fr-FR/release_notes.txt @@ -1 +1 @@ -Cette mise à jour améliore les étiquettes d’expédition grâce à une meilleure accessibilité, une validation des adresses plus intelligente et des performances plus rapides. Nous avons également ajouté un onglet Point de vente dédié pour un accès plus rapide, et les commandes PDV peuvent désormais être filtrées dans votre liste de commandes pour une meilleure organisation. De plus, nous avons optimisé les ressources pour réduire la taille de l’application ! +Des performances plus rapides et une expérience plus fluide ! Cette mise à jour améliore le chargement des produits, le calcul des taxes et la recherche d’adresses grâce à la prise en charge de la carte. Nous avons ajouté la lecture de codes-barres guidée pour les utilisateurs de PDV et renforcé les exigences d’expédition pour les destinations dans l’UE. De plus, nous avons résolu les problèmes de stabilité pour une expérience plus fiable. diff --git a/fastlane/metadata/he/release_notes.txt b/fastlane/metadata/he/release_notes.txt index 442fbd87986..a5390604220 100644 --- a/fastlane/metadata/he/release_notes.txt +++ b/fastlane/metadata/he/release_notes.txt @@ -1 +1 @@ -העדכון הזה משפר את תוויות המשלוח עם נגישות משופרת, אימות כתובת חכם יותר וביצועים מהירים יותר. הוספנו גם לשונית 'נקודת מכירה' ייעודית לגישה מהירה יותר, וכעת ניתן לסנן הזמנות של POS ברשימת ההזמנות כדי לאפשר ארגון טוב יותר. בנוסף, הצלחנו למטב את הנכסים כדי לצמצם את נפח האפליקציה! +ביצועים מהירים יותר וחוויה משופרת! בעדכון זה שיפרנו את הטעינה של המוצרים, את חישובי המס ואת חיפוש הכתובות עם תמיכה טובה יותר במפות. הוספנו סריקת ברקוד מודרכת למשתמשי POS ושיפרנו את דרישות המשלוח עבור יעדים באיחוד האירופי. בנוסף, טיפלנו בבעיות יציבות בשביל חוויה אמינה יותר. diff --git a/fastlane/metadata/id/release_notes.txt b/fastlane/metadata/id/release_notes.txt index 08ba737e54a..3c26838a041 100644 --- a/fastlane/metadata/id/release_notes.txt +++ b/fastlane/metadata/id/release_notes.txt @@ -1 +1 @@ -Pembaruan ini meningkatkan Label Pengiriman dengan memudahkan aksesibilitas, validasi alamat yang lebih cerdas, dan performa yang lebih cepat. Kami juga telah menambahkan tab Point of Sale khusus untuk akses lebih cepat; dan pesanan POS kini dapat difilter di daftar pesanan Anda agar lebih mudah dikelola. Selain itu, kami telah mengoptimalkan aset untuk mengurangi ukuran aplikasi! +Performa lebih cepat dan pengalaman lebih lancar! Pembaruan ini menghadirkan pemuatan produk dan penghitungan pajak yang lebih baik serta pencarian alamat yang disempurnakan dengan dukungan peta. Kami telah menambahkan pemindaian barcode berpemandu untuk pengguna POS dan memperketat persyaratan pengiriman untuk tujuan Uni Eropa. Selain itu, kami telah memperbaiki isu stabilitas untuk pengalaman yang lebih andal. diff --git a/fastlane/metadata/it/release_notes.txt b/fastlane/metadata/it/release_notes.txt index 0600821b6f9..7e3fb46b760 100644 --- a/fastlane/metadata/it/release_notes.txt +++ b/fastlane/metadata/it/release_notes.txt @@ -1 +1 @@ -Questo aggiornamento migliora l'accessibilità, la convalida degli indirizzi e le prestazioni delle etichette di spedizione. Abbiamo anche aggiunto una scheda apposita per il punto vendita per accedervi più rapidamente e reso filtrabili gli ordini POS nell'elenco degli ordini per una migliore organizzazione. Inoltre, abbiamo ottimizzato gli asset per ridurre le dimensioni dell'app. +Prestazioni più veloci e un'esperienza più fluida! Questo aggiornamento migliora il caricamento dei prodotti, offre calcoli delle imposte più precisi e potenzia la ricerca degli indirizzi con il supporto delle mappe. Abbiamo introdotto la scansione guidata dei codici a barre per gli utenti POS e rafforzato i requisiti di spedizione per le destinazioni UE. Inoltre, abbiamo risolto diversi problemi di stabilità per un'esperienza ancora più affidabile. diff --git a/fastlane/metadata/ja/release_notes.txt b/fastlane/metadata/ja/release_notes.txt index 442f898d0ea..7f7b265c26a 100644 --- a/fastlane/metadata/ja/release_notes.txt +++ b/fastlane/metadata/ja/release_notes.txt @@ -1 +1 @@ -今回の更新によって配送ラベルのアクセシビリティが向上するほか、住所の検証がよりスマートになり、パフォーマンスもさらに高速になります。 また、専用の「販売時点管理」タブを追加してすばやくアクセスできるようにしたほか、POS 注文を注文リストでフィルタリングして、より効率的に整理できるようになりました。 さらに、アプリのサイズを縮小するためにアセットを最適化しました。 +パフォーマンスが向上し、エクスペリエンスがさらにスムーズに ! この更新により、商品の読み込みが向上し、税金計算が改善され、地図サポートによる住所検索が強化されます。 POS ユーザー向けのガイド付きバーコードスキャンが追加され、EU 向けの配送要件機能が強化されました。 さらに、安定性が改善され、より安心してご利用いただけるようになりました。 diff --git a/fastlane/metadata/ko/release_notes.txt b/fastlane/metadata/ko/release_notes.txt index 045211395e2..f0c66332ad5 100644 --- a/fastlane/metadata/ko/release_notes.txt +++ b/fastlane/metadata/ko/release_notes.txt @@ -1 +1 @@ -이 업데이트를 통해 배송 레이블의 접근성이 향상되고, 주소 유효성 검사가 효과적으로 진행되며, 속도가 빨라집니다. 더 빠르게 접근할 수 있는 POS(판매 지점) 전용 탭도 추가되었으며, 이제는 주문 목록에서 POS 주문을 필터링하여 더 깔끔하게 정리할 수 있습니다. 자산도 최적화되어 앱의 크기가 줄었습니다. +더 빠른 성능과 더 원활한 환경! 이 업데이트를 통해 상품 로딩이 개선되고, 세금이 더 잘 계산되며, 지도 지원으로 주소 조회가 향상되었습니다. POS 사용자를 위해 안내식 바코드 스캔을 추가하고 EU 목적지에 대한 배송 요구 사항을 강화했습니다. 더 안정적인 환경을 위해 안정성 문제도 해결했습니다. diff --git a/fastlane/metadata/nl-NL/release_notes.txt b/fastlane/metadata/nl-NL/release_notes.txt index 29306c9fd35..168e4334f1c 100644 --- a/fastlane/metadata/nl-NL/release_notes.txt +++ b/fastlane/metadata/nl-NL/release_notes.txt @@ -1 +1 @@ -Deze update verbetert verzendlabels met verbeterde toegankelijkheid, slimmere adresvalidatie en snellere prestaties. We hebben ook een speciaal tabblad Verkooppunt toegevoegd voor snellere toegang en POS-bestellingen kunnen nu worden gefilterd in je bestellijst voor een betere organisatie. Bovendien hebben we de middelen geoptimaliseerd om de app kleiner te maken! +Snellere prestaties en een soepelere ervaring! Deze update verbetert het laden van producten, het berekenen van belastingen en het opzoeken van adressen met kaartondersteuning. We hebben begeleid scannen van streepjescodes voor POS-gebruikers toegevoegd en de verzendvereisten voor EU-bestemmingen aangescherpt. Bovendien hebben we stabiliteitsproblemen opgelost voor een betrouwbaardere ervaring. diff --git a/fastlane/metadata/pt-BR/release_notes.txt b/fastlane/metadata/pt-BR/release_notes.txt index 59e00e9a6a9..b05de2658af 100644 --- a/fastlane/metadata/pt-BR/release_notes.txt +++ b/fastlane/metadata/pt-BR/release_notes.txt @@ -1 +1 @@ -Esta atualização aprimora as etiquetas de envio com acessibilidade aprimorada, validação de endereço mais inteligente e desempenho mais rápido. Também adicionamos uma aba dedicada de ponto de venda para acesso mais rápido, e os pedidos no PDV agora podem ser filtrados na sua lista de pedidos para uma organização melhor. Além disso, otimizamos os ativos para reduzir o tamanho do aplicativo. +Desempenho mais rápido e experiência mais tranquila. Nesta atualização, o carregamento de produtos foi otimizado, os cálculos de impostos foram aprimorados e a pesquisa de endereço agora é compatível com mapas. Adicionamos a leitura guiada de códigos de barras para usuários de pontos de venda, além de requisitos de envio reforçados para destinos na UE. Também foram corrigidos problemas de estabilidade para garantir uma experiência mais confiável. diff --git a/fastlane/metadata/ru/release_notes.txt b/fastlane/metadata/ru/release_notes.txt index 2e76d7a6537..d054997bf46 100644 --- a/fastlane/metadata/ru/release_notes.txt +++ b/fastlane/metadata/ru/release_notes.txt @@ -1 +1 @@ -В этом обновлении расширены возможности транспортных этикеток: доступность, функция подтверждения адреса и производительность. Для удобства мы также добавили специальную вкладку «Пункт продажи», и теперь заказы POS можно фильтровать в списке заказов, чтобы упорядочить его. Кроме того, мы оптимизировали ресурсы, чтобы уменьшить объём приложения! +Работайте быстрее, эффективнее и удобнее! В этом обновлении усовершенствованы процессы загрузки товаров, расчёта налогов и поиска адресов с поддержкой карт. Мы добавили функцию управляемого сканирования штрихкодов для пользователей POS-терминалов и повышенные требования к доставке товаров в страны ЕС. Кроме того, мы устранили ряд ошибок, чтобы повысить надёжность работы. diff --git a/fastlane/metadata/sv/release_notes.txt b/fastlane/metadata/sv/release_notes.txt index a775b5a4792..826c406f409 100644 --- a/fastlane/metadata/sv/release_notes.txt +++ b/fastlane/metadata/sv/release_notes.txt @@ -1 +1 @@ -Den här uppdateringen förbättrar fraktetiketter med förbättrad tillgänglighet, smartare adressvalidering och snabbare prestanda. Vi har också lagt till en dedikerad flik för försäljningsplats för snabbare åtkomst, och POS-beställningar kan nu filtreras i din beställningslista för bättre ordning. Dessutom har vi optimerat tillgångar för att minska appens storlek. +Snabbare prestanda och smidigare upplevelse! Den här uppdateringen ger förbättrad produktinläsning, bättre momsberäkningar och förbättrad adressökning med stöd för kartor. Vi har lagt till guidad streckkodsskanning för POS-användare och skärpt fraktkraven för EU-destinationer. Dessutom har vi åtgärdat stabilitetsproblem för en mer tillförlitlig upplevelse. diff --git a/fastlane/metadata/tr/release_notes.txt b/fastlane/metadata/tr/release_notes.txt index 8e3c6ce9b39..2898984fdd0 100644 --- a/fastlane/metadata/tr/release_notes.txt +++ b/fastlane/metadata/tr/release_notes.txt @@ -1 +1 @@ -Bu güncelleme; geliştirilmiş erişilebilirlik, daha akıllı adres doğrulama ve daha hızlı performans ile Gönderim Etiketlerini geliştirir. Daha hızlı erişim için özel bir Satış Noktası sekmesi de ekledik ve POS siparişleri artık daha iyi düzenleme için sipariş listenizde filtrelenebilir. Ayrıca, uygulamanın boyutunu küçültmek için varlıkları optimize ettik! +Daha hızlı performans ve daha sorunsuz deneyim! Bu güncelleme; iyileştirilmiş ürün yüklemesi, daha iyi vergi hesaplamaları ve harita desteğiyle gelişmiş adres araması sağlar. POS kullanıcıları için rehberli barkod taraması ve AB destinasyonlarına gönderim gereksinimini güçlendirdik. Ayrıca daha güvenilir bir deneyim için istikrar sorunlarını çözdük. diff --git a/fastlane/metadata/zh-Hans/release_notes.txt b/fastlane/metadata/zh-Hans/release_notes.txt index 78029e89841..773279a47f3 100644 --- a/fastlane/metadata/zh-Hans/release_notes.txt +++ b/fastlane/metadata/zh-Hans/release_notes.txt @@ -1 +1 @@ -本次更新对运输标签进行了全面优化,提供更便捷的操作、更智能的地址验证和更快速的性能。 我们新增了专属“销售点”标签页以实现快速访问,现在您还可以在订单列表中筛选 POS 订单,让管理更加井井有条。 此外,我们还优化了资源文件,有效缩减了应用体积! +更快的性能,更流畅的体验! 本次更新带来了多项功能优化:产品加载速度提升,税费计算更加精准,并新增支持地图的地址查询功能。 我们为 POS 用户增加了条形码扫描引导功能,同时加强了对欧盟目的地的配送规范要求。 此外,我们还修复了稳定性问题,以提供更可靠的体验。 diff --git a/fastlane/metadata/zh-Hant/release_notes.txt b/fastlane/metadata/zh-Hant/release_notes.txt index 0cf1a353b35..5d232e315ad 100644 --- a/fastlane/metadata/zh-Hant/release_notes.txt +++ b/fastlane/metadata/zh-Hant/release_notes.txt @@ -1 +1 @@ -本次更新強化了「貨運標籤」功能,並提升無障礙功能,地址驗證更聰明,並帶來更快速的效能。 我們也新增了專屬的「銷售時點情報系統」分頁,進入系統更便捷,現在也可以在訂單清單中篩選 POS 訂單,整理訂單更方便。 此外,我們已將應用程式資產最佳化,藉此縮減大小! +效能加快,體驗更順暢! 本次更新提升商品載入、強化稅金計算功能,且提供地圖支援,強化地址搜尋服務。 我們為 POS 使用者新增條碼掃瞄引導功能,並針對位於歐盟的目的地,強化了運送要求。 此外,我們已修正穩定性問題,提供更可靠的體驗。