From d043b67fa61330dad1ac3bc1309c917d4cf8efde Mon Sep 17 00:00:00 2001 From: Huong Do Date: Wed, 19 Nov 2025 17:16:02 +0700 Subject: [PATCH 1/7] Send tasks to the full onboarding view --- .../ViewRelated/Dashboard/DashboardView.swift | 6 +++--- .../Dashboard/DashboardViewHostingController.swift | 4 ++-- .../Onboarding/StoreOnboardingCoordinator.swift | 12 ++++++++---- .../Dashboard/Onboarding/StoreOnboardingView.swift | 12 +++++++----- .../Onboarding/StoreOnboardingViewModel.swift | 2 ++ 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/DashboardView.swift b/WooCommerce/Classes/ViewRelated/Dashboard/DashboardView.swift index b1b9f59b425..1caf1ca9013 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/DashboardView.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/DashboardView.swift @@ -25,7 +25,7 @@ struct DashboardView: View { /// Set externally in the hosting controller. var onboardingTaskTapped: ((Site, StoreOnboardingTask) -> Void)? /// Set externally in the hosting controller. - var viewAllOnboardingTasksTapped: ((Site) -> Void)? + var viewAllOnboardingTasksTapped: ((Site, [StoreOnboardingTaskViewModel]) -> Void)? /// Set externally in the hosting controller. var showAllBlazeCampaignsTapped: (() -> Void)? @@ -215,9 +215,9 @@ private extension DashboardView { onTaskTapped: { task in guard let currentSite else { return } onboardingTaskTapped?(currentSite, task) - }, onViewAllTapped: { + }, onViewAllTapped: { tasks in guard let currentSite else { return } - viewAllOnboardingTasksTapped?(currentSite) + viewAllOnboardingTasksTapped?(currentSite, tasks) }) case .blaze: BlazeCampaignDashboardView(viewModel: viewModel.blazeCampaignDashboardViewModel, diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/DashboardViewHostingController.swift b/WooCommerce/Classes/ViewRelated/Dashboard/DashboardViewHostingController.swift index 03981a97101..67e40ab0053 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/DashboardViewHostingController.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/DashboardViewHostingController.swift @@ -175,11 +175,11 @@ private extension DashboardViewHostingController { storeOnboardingCoordinator?.start(task: task) } - rootView.viewAllOnboardingTasksTapped = { [weak self] site in + rootView.viewAllOnboardingTasksTapped = { [weak self] site, tasks in guard let self else { return } ServiceLocator.analytics.track(event: .DynamicDashboard.dashboardCardInteracted(type: .onboarding)) updateStoreOnboardingCoordinatorIfNeeded(with: site) - storeOnboardingCoordinator?.start() + storeOnboardingCoordinator?.start(tasks: tasks) } } diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingCoordinator.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingCoordinator.swift index 5cb8e3abc0e..704ddc17ba2 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingCoordinator.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingCoordinator.swift @@ -5,7 +5,7 @@ import struct Yosemite.Site import struct Yosemite.StoreOnboardingTask /// Coordinates navigation for store onboarding. -final class StoreOnboardingCoordinator: Coordinator { +final class StoreOnboardingCoordinator { typealias TaskType = StoreOnboardingTask.TaskType let navigationController: UINavigationController @@ -31,11 +31,15 @@ final class StoreOnboardingCoordinator: Coordinator { } /// Navigates to the fullscreen store onboarding view. - func start() { + func start(tasks: [StoreOnboardingTaskViewModel]) { Task { @MainActor in + let viewModel = StoreOnboardingViewModel( + siteID: site.siteID, + isExpanded: true, + taskViewModels: tasks + ) let onboardingNavigationController = UINavigationController() - let onboardingViewController = StoreOnboardingViewHostingController(viewModel: .init(siteID: site.siteID, - isExpanded: true), + let onboardingViewController = StoreOnboardingViewHostingController(viewModel: viewModel, navigationController: onboardingNavigationController, site: site) onboardingNavigationController.pushViewController(onboardingViewController, animated: false) diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingView.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingView.swift index 9fb1474eb92..d5e95f69c79 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingView.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingView.swift @@ -42,9 +42,9 @@ final class StoreOnboardingViewHostingController: SelfSizingHostingController Void)? /// Set externally in the hosting controller. - var viewAllTapped: (() -> Void)? + var viewAllTapped: (([StoreOnboardingTaskViewModel]) -> Void)? @ObservedObject private var viewModel: StoreOnboardingViewModel init(viewModel: StoreOnboardingViewModel, onTaskTapped: ((StoreOnboardingTask) -> Void)? = nil, - onViewAllTapped: (() -> Void)? = nil) { + onViewAllTapped: (([StoreOnboardingTaskViewModel]) -> Void)? = nil) { self.viewModel = viewModel self.taskTapped = onTaskTapped self.viewAllTapped = onViewAllTapped @@ -159,7 +159,9 @@ struct StoreOnboardingView: View { .padding(.leading, Layout.padding) // View all button - viewAllButton(action: viewAllTapped, text: String(format: Localization.viewAll, viewModel.taskViewModels.count)) + viewAllButton(action: { + viewAllTapped?(viewModel.taskViewModels) + }, text: String(format: Localization.viewAll, viewModel.taskViewModels.count)) .renderedIf(viewModel.shouldShowViewAllButton) .padding(.horizontal, Layout.padding) } diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingViewModel.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingViewModel.swift index 0d568827eda..a86dd6a3f8a 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingViewModel.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingViewModel.swift @@ -83,6 +83,7 @@ class StoreOnboardingViewModel: ObservableObject { /// - defaults: UserDefaults for storing when all onboarding tasks are completed init(siteID: Int64, isExpanded: Bool, + taskViewModels: [StoreOnboardingTaskViewModel] = [], stores: StoresManager = ServiceLocator.stores, defaults: UserDefaults = .standard, analytics: Analytics = ServiceLocator.analytics, @@ -94,6 +95,7 @@ class StoreOnboardingViewModel: ObservableObject { self.defaults = defaults self.analytics = analytics self.waitingTimeTracker = waitingTimeTracker + self.taskViewModels = taskViewModels $noTasksAvailableForDisplay .combineLatest(defaults.publisher(for: \.completedAllStoreOnboardingTasks)) From aca32631f7460c6dbc2868d12ba0aa84ceac0c1a Mon Sep 17 00:00:00 2001 From: Huong Do Date: Wed, 19 Nov 2025 17:32:49 +0700 Subject: [PATCH 2/7] Remove loading state if there are existing tasks while reloading tasks --- .../Dashboard/Onboarding/StoreOnboardingViewModel.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingViewModel.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingViewModel.swift index a86dd6a3f8a..8ac57e1a004 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingViewModel.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingViewModel.swift @@ -119,7 +119,11 @@ class StoreOnboardingViewModel: ObservableObject { } analytics.track(event: .DynamicDashboard.cardLoadingStarted(type: .onboarding)) - update(state: .loading) + if taskViewModels.isEmpty { + update(state: .loading) + } else { + update(state: .loaded(rows: taskViewModels)) + } let tasks: [StoreOnboardingTaskViewModel] var syncingError: Error? From fe517084b4246b0a2f8c9c43df0297ea71decbe1 Mon Sep 17 00:00:00 2001 From: iamgabrielma Date: Mon, 24 Nov 2025 11:40:53 +0700 Subject: [PATCH 3/7] Freeze strings for localization --- .../Resources/en.lproj/Localizable.strings | 1220 +++++++++++++++++ 1 file changed, 1220 insertions(+) diff --git a/WooCommerce/Resources/en.lproj/Localizable.strings b/WooCommerce/Resources/en.lproj/Localizable.strings index ca7aa3484c2..cdef314a599 100644 --- a/WooCommerce/Resources/en.lproj/Localizable.strings +++ b/WooCommerce/Resources/en.lproj/Localizable.strings @@ -2427,6 +2427,9 @@ which should be translated separately and considered part of this sentence. */ /* Title for the webview used by merchants to place an order for a card reader, for use with In-Person Payments. */ "Card Readers" = "Card Readers"; +/* Default accessibility label for a custom indeterminate progress view, used for card payments. */ +"card.waves.progressView.accessibilityLabel" = "In progress"; + /* Label for a cancel button */ "cardPresent.builtIn.modalCheckingDeviceSupport.cancelButton" = "Cancel"; @@ -2774,6 +2777,9 @@ which should be translated separately and considered part of this sentence. */ /* Description of the 'Payments' screen - used for spotlight indexing on iOS. */ "Collect payments, setup Tap to Pay, order card readers and more." = "Collect payments, setup Tap to Pay, order card readers and more."; +/* Change due when the cash amount entered exceeds the order total.Reads as 'Change due: $1.23' */ +"collectcashviewhelper.changedue" = "Change due: %1$@"; + /* Message displayed if there are no inbox notes to display in the inbox screen. */ "Come back soon for more tips and insights on growing your store." = "Come back soon for more tips and insights on growing your store."; @@ -3138,6 +3144,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of Summary section in Coupon Details screen */ "Coupon Summary" = "Coupon Summary"; +/* Expiration date for a given coupon, displayed in the coupon card. Reads as 'Expired · 18 April 2025'. */ +"couponCardView.expirationText" = "Expired on %@"; + /* Coupon management coupon list screen title Title of the Coupons menu in the hub menu */ "Coupons" = "Coupons"; @@ -7218,12 +7227,1223 @@ which should be translated separately and considered part of this sentence. */ Navigates to Plugins screen. */ "Plugins" = "Plugins"; +/* Error message shown when scan is too short. */ +"pointOfSale.barcodeScan.error.barcodeTooShort" = "Barcode too short"; + +/* Error message shown when scanner times out without sending end-of-line character. */ +"pointOfSale.barcodeScan.error.incompleteScan.2" = "The scanner did not send an end-of-line character"; + +/* Error message shown when there is an unknown networking error while scanning a barcode. */ +"pointOfSale.barcodeScan.error.network" = "Network request failed"; + +/* Error message shown when there is an internet connection error while scanning a barcode. */ +"pointOfSale.barcodeScan.error.noInternetConnection" = "No internet connection"; + +/* Error message shown when parent product is not found for a variation. */ +"pointOfSale.barcodeScan.error.noParentProduct" = "Parent product not found for variation"; + +/* Error message shown when a scanned item is not found in the store. */ +"pointOfSale.barcodeScan.error.notFound" = "Unknown scanned item"; + +/* Error message shown when parsing barcode data fails. */ +"pointOfSale.barcodeScan.error.parsingError" = "Couldn't read barcode"; + +/* Error message when scanning a barcode fails for an unknown reason, before lookup. */ +"pointOfSale.barcodeScan.error.scanFailed" = "Scan failed"; + +/* Error message shown when a scanned item is of an unsupported type. */ +"pointOfSale.barcodeScan.error.unsupportedProductType" = "Unsupported item type"; + +/* Indicates the status of a card reader. Presented to users when payment collection starts */ +"pointOfSale.cardPresent.cancelledOnReader.title" = "Payment cancelled on reader"; + +/* Button to try to collect a payment again. Presented to users after card reader cancelled on the Point of Sale Checkout */ +"pointOfSale.cardPresent.cancelledOnReader.tryPaymentAgain.button.title" = "Try payment again"; + +/* Indicates the status of a card reader. Presented to merchants when the card is inserted to the reader */ +"pointOfSale.cardPresent.cardInserted.subtitle" = "Card inserted"; + +/* Indicates the status of a card reader. Presented to merchants when the card is inserted to the reader */ +"pointOfSale.cardPresent.cardInserted.title" = "Ready for payment"; + +/* Button to connect to the card reader, shown on the Point of Sale Checkout as a primary CTA. */ +"pointOfSale.cardPresent.connectReader.button.title" = "Connect your reader"; + +/* Message shown on the Point of Sale checkout while the reader payment is being processed. */ +"pointOfSale.cardPresent.displayReaderMessage.message" = "Processing payment"; + +/* Label for a cancel button */ +"pointOfSale.cardPresent.modalScanningForReader.cancelButton" = "Cancel"; + +/* Label within the modal dialog that appears when searching for a card reader */ +"pointOfSale.cardPresent.modalScanningForReader.instruction" = "To turn on your card reader, briefly press its power button."; + +/* Title label for modal dialog that appears when searching for a card reader */ +"pointOfSale.cardPresent.modalScanningForReader.title" = "Scanning for reader"; + +/* Button to dismiss payment capture error message. Presented to users after collecting a payment fails from payment capture error on the Point of Sale Checkout */ +"pointOfSale.cardPresent.paymentCaptureError.newOrder.button.title" = "New order"; + +/* Button to dismiss payment capture error message. Presented to users after collecting a payment fails from payment capture error on the Point of Sale Checkout */ +"pointOfSale.cardPresent.paymentCaptureError.tryPaymentAgain.button.title" = "Try payment again"; + +/* Error message. Presented to users after collecting a payment fails from payment capture error on the Point of Sale Checkout */ +"pointOfSale.cardPresent.paymentCaptureError.unable.to.confirm.message.1" = "Due to a network error, we’re unable to confirm that the payment succeeded. Verify payment on a device with a working network connection. If unsuccessful, retry the payment. If successful, start a new order."; + +/* Error message. Presented to users after collecting a payment fails from payment capture error on the Point of Sale Checkout */ +"pointOfSale.cardPresent.paymentCaptureError.unable.to.confirm.title" = "Payment error"; + +/* Button to leave the order when a card payment fails. Presented to users after collecting a payment fails on the Point of Sale Checkout */ +"pointOfSale.cardPresent.paymentError.backToCheckout.button.title" = "Go back to checkout"; + +/* Error message. Presented to users after collecting a payment fails on the Point of Sale Checkout */ +"pointOfSale.cardPresent.paymentError.title" = "Payment failed"; + +/* Button to try to collect a payment again. Presented to users after collecting a payment fails on the Point of Sale Checkout, when it's unlikely that the same card will work. */ +"pointOfSale.cardPresent.paymentError.tryAnotherPaymentMethod.button.title" = "Try another payment method"; + +/* Button to try to collect a payment again. Presented to users after collecting a payment fails on the Point of Sale Checkout */ +"pointOfSale.cardPresent.paymentError.tryPaymentAgain.button.title" = "Try payment again"; + +/* Instruction used on a card payment error from the Point of Sale Checkout telling the merchant how to continue with the payment. */ +"pointOfSale.cardPresent.paymentErrorNonRetryable.nextStep.instruction" = "If you’d like to continue processing this transaction, please retry the payment."; + +/* Error message. Presented to users after collecting a payment fails on the Point of Sale Checkout */ +"pointOfSale.cardPresent.paymentErrorNonRetryable.title" = "Payment failed"; + +/* Title of the button used on a card payment error from the Point of Sale Checkout to go back and try another payment method. */ +"pointOfSale.cardPresent.paymentErrorNonRetryable.tryAnotherPaymentMethod.button.title" = "Try another payment method"; + +/* Button to come back to order editing when a card payment fails. Presented to users after payment intention creation fails on the Point of Sale Checkout */ +"pointOfSale.cardPresent.paymentIntentCreationError.checkout.button.title" = "Edit order"; + +/* Error message. Presented to users after payment intent creation fails on the Point of Sale Checkout */ +"pointOfSale.cardPresent.paymentIntentCreationError.title" = "Payment preparation error"; + +/* Button to try to collect a payment again. Presented to users after collecting a payment intention creation fails on the Point of Sale Checkout */ +"pointOfSale.cardPresent.paymentIntentCreationError.tryPaymentAgain.button.title" = "Try payment again"; + +/* Indicates the status of a card reader. Presented to users when payment collection starts */ +"pointOfSale.cardPresent.paymentProcessing.title" = "Processing payment"; + +/* Title shown on the Point of Sale checkout while the reader is being prepared. */ +"pointOfSale.cardPresent.preparingForPayment.title" = "Getting ready"; + +/* Message shown on the Point of Sale checkout while the reader is being prepared. */ +"pointOfSale.cardPresent.preparingReaderForPayment.message" = "Preparing reader for payment"; + +/* Label asking users to present a card. Presented to users when a payment is going to be collected */ +"pointOfSale.cardPresent.presentCard.insert" = "Insert card"; + +/* Label asking users to present a card. Presented to users when a payment is going to be collected */ +"pointOfSale.cardPresent.presentCard.present" = "Present card"; + +/* Label asking users to present a card. Presented to users when a payment is going to be collected */ +"pointOfSale.cardPresent.presentCard.tap" = "Tap card"; + +/* Label asking users to present a card. Presented to users when a payment is going to be collected */ +"pointOfSale.cardPresent.presentCard.tapInsert" = "Tap or insert card"; + +/* Label asking users to present a card. Presented to users when a payment is going to be collected */ +"pointOfSale.cardPresent.presentCard.tapSwipeInsert" = "Tap, swipe, or insert card"; + +/* Indicates the status of a card reader. Presented to users when payment collection starts */ +"pointOfSale.cardPresent.presentCard.title" = "Ready for payment"; + +/* Error message. Presented to users when card reader is not connected on the Point of Sale Checkout */ +"pointOfSale.cardPresent.readerNotConnected.title" = "Reader not connected"; + +/* Instruction to merchants shown on the Point of Sale Checkout when card reader is not connected. */ +"pointOfSale.cardPresent.readerNotConnectedOrCash.instruction" = "To process this payment, please connect your reader or choose cash."; + +/* Message shown on the Point of Sale checkout while the order is being validated. */ +"pointOfSale.cardPresent.validatingOrder.message" = "Checking order"; + +/* Title shown on the Point of Sale checkout while the order is being validated. */ +"pointOfSale.cardPresent.validatingOrder.title" = "Getting ready"; + +/* Error message when the order amount is below the minimum amount allowed for a card payment on POS. */ +"pointOfSale.cardPresent.validatingOrderError.belowMinimumAmount.description" = "The order total is below the minimum amount you can charge a card, which is %1$@. You can take a cash payment instead."; + +/* Error title when the order amount is below the minimum amount allowed for a card payment on POS. */ +"pointOfSale.cardPresent.validatingOrderError.belowMinimumAmount.title" = "Unable to take card payment"; + +/* Title shown on the Point of Sale checkout while the order validation fails. */ +"pointOfSale.cardPresent.validatingOrderError.title" = "Error checking order"; + +/* Button title to retry order validation. */ +"pointOfSale.cardPresent.validatingOrderError.tryAgain" = "Try again"; + +/* Indicates to wait while payment is processing. Presented to users when payment collection starts */ +"pointOfSale.cardPresent.waitForPaymentProcessing.message" = "Please wait"; + +/* Button to dismiss the alert presented when finding a reader to connect to fails */ +"pointOfSale.cardPresentPayment.alert.bluetoothRequired.dismiss.button.title" = "Dismiss"; + +/* Opens iOS's Device Settings for the app */ +"pointOfSale.cardPresentPayment.alert.bluetoothRequired.openSettings.button.title" = "Open Device Settings"; + +/* Title of the alert presented when the user tries to connect a Bluetooth card reader with insufficient permissions */ +"pointOfSale.cardPresentPayment.alert.bluetoothRequired.title" = "Bluetooth permission required"; + +/* Button to dismiss the alert presented when connecting to a specific reader fails. This also cancels searching. */ +"pointOfSale.cardPresentPayment.alert.connectingFailed.cancel.button.title" = "Cancel"; + +/* Title of the alert presented when the user tries to connect to a specific card reader and it fails */ +"pointOfSale.cardPresentPayment.alert.connectingFailed.title" = "We couldn't connect your reader"; + +/* Button to dismiss the alert presented when connecting to a specific reader fails. This allows the search to continue. */ +"pointOfSale.cardPresentPayment.alert.connectingFailed.tryAgain.button.title" = "Try again"; + +/* Button to dismiss the alert presented when connecting to a specific reader fails due to a critically low battery. This also cancels searching. */ +"pointOfSale.cardPresentPayment.alert.connectingFailedChargeReader.cancel.button.title" = "Cancel"; + +/* Subtitle of the alert presented when the user tries to connect to a specific card reader and it fails due to it having a critically low battery */ +"pointOfSale.cardPresentPayment.alert.connectingFailedChargeReader.error.details" = "The reader has a critically low battery. Please charge the reader or try a different reader."; + +/* Button to try again after connecting to a specific reader fails due to a critically low battery. */ +"pointOfSale.cardPresentPayment.alert.connectingFailedChargeReader.retry.button.title" = "Try Again"; + +/* Title of the alert presented when the user tries to connect to a specific card reader and it fails due to it having a critically low battery */ +"pointOfSale.cardPresentPayment.alert.connectingFailedChargeReader.title" = "We couldn't connect your reader"; + +/* Button to dismiss the alert presented when connecting to a specific reader fails due to location permissions not being granted. This also cancels searching. */ +"pointOfSale.cardPresentPayment.alert.connectingFailedLocationRequired.cancel.button.title" = "Cancel"; + +/* Opens iOS's Device Settings for the app to access location services */ +"pointOfSale.cardPresentPayment.alert.connectingFailedLocationRequired.openSettings.button.title" = "Open Device Settings"; + +/* A subtitle explaining why location services are needed to make a payment */ +"pointOfSale.cardPresentPayment.alert.connectingFailedLocationRequired.subtitle" = "Location services permission is required to reduce fraud, prevent disputes, and ensure secure payments."; + +/* A title explaining the requirement of location services for making a payment */ +"pointOfSale.cardPresentPayment.alert.connectingFailedLocationRequired.title" = "Enable location services to allow payments"; + +/* Button to dismiss. Presented to users after collecting a payment fails */ +"pointOfSale.cardPresentPayment.alert.connectingFailedNonRetryable.dismiss.button.title" = "Dismiss"; + +/* Error message. Presented to users after collecting a payment fails */ +"pointOfSale.cardPresentPayment.alert.connectingFailedNonRetryable.title" = "Connection failed"; + +/* Button to dismiss the alert presented when connecting to a specific reader fails due to address problems. This also cancels searching. */ +"pointOfSale.cardPresentPayment.alert.connectingFailedUpdateAddress.cancel.button.title" = "Cancel"; + +/* Button to open a webview at the admin pages, so that the merchant can update their store address to continue setting up In Person Payments */ +"pointOfSale.cardPresentPayment.alert.connectingFailedUpdateAddress.openSettings.button.title" = "Enter Address"; + +/* Button to try again after connecting to a specific reader fails due to address problems. Intended for use after the merchant corrects the address in the store admin pages. */ +"pointOfSale.cardPresentPayment.alert.connectingFailedUpdateAddress.retry.button.title" = "Retry After Updating"; + +/* Title of the alert presented when the user tries to connect to a specific card reader and it fails due to address problems */ +"pointOfSale.cardPresentPayment.alert.connectingFailedUpdateAddress.title" = "Please correct your store address to proceed"; + +/* Button to dismiss the alert presented when connecting to a specific reader fails due to postal code problems. This also cancels searching. */ +"pointOfSale.cardPresentPayment.alert.connectingFailedUpdatePostCode.cancel.button.title" = "Cancel"; + +/* Subtitle of the alert presented when the user tries to connect to a specific card reader and it fails due to postal code problems */ +"pointOfSale.cardPresentPayment.alert.connectingFailedUpdatePostCode.errorDetails" = "You can set your store's postcode/ZIP in wp-admin > WooCommerce > Settings (General)"; + +/* Button to try again after connecting to a specific reader fails due to postal code problems. Intended for use after the merchant corrects the postal code in the store admin pages. */ +"pointOfSale.cardPresentPayment.alert.connectingFailedUpdatePostCode.retry.button.title" = "Retry After Updating"; + +/* Title of the alert presented when the user tries to connect to a specific card reader and it fails due to postal code problems */ +"pointOfSale.cardPresentPayment.alert.connectingFailedUpdatePostCode.title" = "Please correct your store's postcode/ZIP"; + +/* A title for CTA to present native location permission alert */ +"pointOfSale.cardPresentPayment.alert.connectingLocationPreAlert.continue.button.title" = "Continue"; + +/* A notice at the bottom explaining that location services can be changed in the Settings app later */ +"pointOfSale.cardPresentPayment.alert.connectingLocationPreAlert.settingsNotice" = "You can change this option later in the Settings app."; + +/* A subtitle explaining why location services are needed to make a payment */ +"pointOfSale.cardPresentPayment.alert.connectingLocationPreAlert.subtitle" = "Location services permission is required to reduce fraud, prevent disputes, and ensure secure payments."; + +/* A title explaining the requirement of location services for making a payment */ +"pointOfSale.cardPresentPayment.alert.connectingLocationPreAlert.title" = "Enable location services to allow payments"; + +/* Label within the modal dialog that appears when connecting to a card reader */ +"pointOfSale.cardPresentPayment.alert.connectingToReader.instruction" = "Please wait..."; + +/* Title label for modal dialog that appears when connecting to a card reader */ +"pointOfSale.cardPresentPayment.alert.connectingToReader.title" = "Connecting to reader"; + +/* Button to dismiss the alert presented when successfully connected to a reader */ +"pointOfSale.cardPresentPayment.alert.connectionSuccess.done.button.title" = "Done"; + +/* Title of the alert presented when the user successfully connects a Bluetooth card reader */ +"pointOfSale.cardPresentPayment.alert.connectionSuccess.title" = "Reader connected"; + +/* Button to allow the user to close the modal without connecting. */ +"pointOfSale.cardPresentPayment.alert.foundMultipleReaders.cancel.button.title" = "Cancel"; + +/* Button in a cell to allow the user to connect to that reader for that cell */ +"pointOfSale.cardPresentPayment.alert.foundMultipleReaders.connect.button.title" = "Connect"; + +/* Title of a modal presenting a list of readers to choose from. */ +"pointOfSale.cardPresentPayment.alert.foundMultipleReaders.headline" = "Several readers found"; + +/* Label for a cell informing the user that reader scanning is ongoing. */ +"pointOfSale.cardPresentPayment.alert.foundMultipleReaders.scanning.label" = "Scanning for readers"; + +/* Label for a button that when tapped, cancels the process of connecting to a card reader */ +"pointOfSale.cardPresentPayment.alert.foundReader.cancel.button.title" = "Cancel"; + +/* Label for a button that when tapped, starts the process of connecting to a card reader */ +"pointOfSale.cardPresentPayment.alert.foundReader.connect.button.title" = "Connect to Reader"; + +/* Dialog description that asks the user if they want to connect to a specific found card reader. They can instead, keep searching for more readers. */ +"pointOfSale.cardPresentPayment.alert.foundReader.description" = "Do you want to connect to this reader?"; + +/* Label for a button that when tapped, continues searching for card readers */ +"pointOfSale.cardPresentPayment.alert.foundReader.keepSearching.button.title" = "Keep Searching"; + +/* Dialog title that displays the name of a found card reader */ +"pointOfSale.cardPresentPayment.alert.foundReader.title.2" = "Found %1$@"; + +/* Label for a cancel button when an optional software update is happening */ +"pointOfSale.cardPresentPayment.alert.optionalReaderUpdateInProgress.button.cancel.title" = "Cancel"; + +/* Label that displays when an optional software update is happening */ +"pointOfSale.cardPresentPayment.alert.optionalReaderUpdateInProgress.message" = "Your reader will automatically restart and reconnect after the update is complete."; + +/* Label that describes the completed progress of an update being installed (e.g. 15% complete). Keep the %.0f%% exactly as is */ +"pointOfSale.cardPresentPayment.alert.optionalReaderUpdateInProgress.progress.format" = "%.0f%% complete"; + +/* Dialog title that displays when a software update is being installed */ +"pointOfSale.cardPresentPayment.alert.optionalReaderUpdateInProgress.title" = "Updating software"; + +/* Button to dismiss the alert presented when payment capture fails. */ +"pointOfSale.cardPresentPayment.alert.paymentCaptureError.understand.button.title" = "I understand"; + +/* Label that describes the completed progress of an update being installed (e.g. 15% complete). Keep the %.0f%% exactly as is */ +"pointOfSale.cardPresentPayment.alert.readerUpdateCompletion.progress.format" = "%.0f%% complete"; + +/* Dialog title that displays when a software update just finished installing */ +"pointOfSale.cardPresentPayment.alert.readerUpdateCompletion.title" = "Software updated"; + +/* Button to dismiss. Presented to users when updating the card reader software fails */ +"pointOfSale.cardPresentPayment.alert.readerUpdateFailed.cancelButton.title" = "Cancel"; + +/* Button to retry a software update. Presented to users when updating the card reader software fails */ +"pointOfSale.cardPresentPayment.alert.readerUpdateFailed.retryButton.title" = "Try Again"; + +/* Error message. Presented to users when updating the card reader software fails */ +"pointOfSale.cardPresentPayment.alert.readerUpdateFailed.title" = "We couldn’t update your reader’s software"; + +/* Message presented when an update fails because the reader is low on battery. Please leave the %.0f%% intact, as it represents the current percentage of charge. */ +"pointOfSale.cardPresentPayment.alert.readerUpdateFailedLowBattery.batteryLevelInfo.1" = "A reader update failed because the its battery is %.0f%% charged. Please charge the reader then try again."; + +/* Button to dismiss the alert presented when an update fails because the reader is low on battery. */ +"pointOfSale.cardPresentPayment.alert.readerUpdateFailedLowBattery.cancelButton.title" = "Cancel"; + +/* Message presented when an update fails because the reader is low on battery. */ +"pointOfSale.cardPresentPayment.alert.readerUpdateFailedLowBattery.noBatteryLevelInfo.1" = "A reader update failed because it is low on battery. Please charge the reader then try again."; + +/* Button to retry the reader search when an update fails because the reader is low on battery. */ +"pointOfSale.cardPresentPayment.alert.readerUpdateFailedLowBattery.retryButton.title" = "Try again"; + +/* Title of the alert presented when an update fails because the reader is low on battery. */ +"pointOfSale.cardPresentPayment.alert.readerUpdateFailedLowBattery.title" = "Please charge reader"; + +/* Button to dismiss. Presented to users when updating the card reader software fails */ +"pointOfSale.cardPresentPayment.alert.readerUpdateFailedNonRetryable.cancelButton.title" = "Dismiss"; + +/* Error message. Presented to users when updating the card reader software fails */ +"pointOfSale.cardPresentPayment.alert.readerUpdateFailedNonRetryable.title" = "We couldn’t update your reader’s software"; + +/* Label for a cancel button when a mandatory software update is happening */ +"pointOfSale.cardPresentPayment.alert.requiredReaderUpdateInProgress.button.cancel.title" = "Cancel anyway"; + +/* Label that displays when a mandatory software update is happening */ +"pointOfSale.cardPresentPayment.alert.requiredReaderUpdateInProgress.message" = "Your card reader software needs to be updated to collect payments. Cancelling will block your reader connection."; + +/* Label that describes the completed progress of an update being installed (e.g. 15% complete). Keep the %.0f%% exactly as is */ +"pointOfSale.cardPresentPayment.alert.requiredReaderUpdateInProgress.progress.format" = "%.0f%% complete"; + +/* Dialog title that displays when a software update is being installed */ +"pointOfSale.cardPresentPayment.alert.requiredReaderUpdateInProgress.title" = "Updating software"; + +/* Button to dismiss the alert presented when finding a reader to connect to fails */ +"pointOfSale.cardPresentPayment.alert.scanningFailed.dismiss.button.title" = "Dismiss"; + +/* Title of the alert presented when the user tries to connect a Bluetooth card reader and it fails */ +"pointOfSale.cardPresentPayment.alert.scanningFailed.title" = "Connecting reader failed"; + +/* The default accessibility label for an `x` close button on a card reader connection modal. */ +"pointOfSale.cardPresentPayment.connection.modal.close.button.accessibilityLabel.default" = "Close"; + +/* Message drawing attention to issue of payment capture maybe failing. */ +"pointOfSale.cardPresentPayment.paymentCaptureError.order.may.have.failed.message" = "Due to a network error, we don’t know if payment succeeded."; + +/* No comment provided by engineer. */ +"pointOfSale.cardPresentPayment.paymentCaptureError.order.may.have.failed.nextSteps" = "Please double check the order on a device with a network connection before continuing."; + +/* Title of the alert presented when payment capture may have failed. This draws extra attention to the issue. */ +"pointOfSale.cardPresentPayment.paymentCaptureError.order.may.have.failed.title" = "This order may have failed"; + +/* Subtitle for the cash payment view navigation back buttonReads as 'Total: $1.23' */ +"pointOfSale.cashview.back.navigation.subtitle" = "Total: %1$@"; + +/* Title for the cash payment view navigation back button */ +"pointOfSale.cashview.back.navigation.title" = "Cash payment"; + +/* Button to mark a cash payment as completed */ +"pointOfSale.cashview.button.markpaymentcompleted.title" = "Mark payment as complete"; + +/* Error message when the system fails to collect a cash payment. */ +"pointOfSale.cashview.failedtocollectcashpayment.errormessage" = "Error trying to process payment. Try again."; + +/* A description within a full screen loading view for POS catalog. */ +"pointOfSale.catalogLoadingView.exitButton.description" = "Syncing will continue in the background."; + +/* A button that exits POS. */ +"pointOfSale.catalogLoadingView.exitButton.title" = "Exit POS"; + +/* A title of a full screen view that is displayed while the POS catalog is being synced. */ +"pointOfSale.catalogLoadingView.title" = "Syncing catalog"; + +/* A message shown on the coupon if's not valid after attempting to apply it */ +"pointOfSale.couponRow.invalidCoupon" = "Coupon not applied"; + +/* 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" = "Please wait"; + +/* The title of the menu button to disconnect a connected card reader, as confirmation. */ +"pointOfSale.floatingButtons.disconnectCardReader.button.title" = "Disconnect Reader"; + +/* The title of the menu button to exit Point of Sale, shown in a popover menu.The action is confirmed in a modal. */ +"pointOfSale.floatingButtons.exit.button.title" = "Exit POS"; + +/* The title of the menu button to access Point of Sale historical orders, shown in a fullscreen view. */ +"pointOfSale.floatingButtons.orders.button.title" = "Orders"; + +/* The title of the floating button to indicate that reader is connected. */ +"pointOfSale.floatingButtons.readerConnected.title" = "Reader connected"; + +/* The title of the floating button to indicate that reader is disconnected and prompt connect after tapping. */ +"pointOfSale.floatingButtons.readerDisconnected.title" = "Connect your reader"; + +/* The title of the floating button to indicate that reader is in the process of disconnecting. */ +"pointOfSale.floatingButtons.readerDisconnecting.title" = "Disconnecting"; + +/* The title of the menu button to access Point of Sale settings. */ +"pointOfSale.floatingButtons.settings.button.title" = "Settings"; + +/* The accessibility label for the `x` button next to each item in the Point of Sale cart.The button removes the item. The translation should be short, to make it quick to navigate by voice. */ +"pointOfSale.item.removeFromCart.button.accessibilityLabel" = "Remove"; + +/* Loading item accessibility label in POS */ +"pointOfSale.itemListCard.loadingItemAccessibilityLabel" = "Loading"; + +/* Button to come back to order editing when coupon validation fails. */ +"pointOfSale.orderSync.couponsError.editOrder" = "Edit order"; + +/* Title of the error when failing to validate coupons and calculate order totals */ +"pointOfSale.orderSync.couponsError.errorTitle.2" = "Unable to apply coupon"; + +/* Button title to remove a single coupon and retry synchronizing order and calculating order totals */ +"pointOfSale.orderSync.couponsError.removeCoupon" = "Remove coupon"; + +/* Button title to remove coupons and retry synchronizing order and calculating order totals */ +"pointOfSale.orderSync.couponsError.removeCoupons" = "Remove coupons"; + +/* Title of the error when failing to synchronize order and calculate order totals */ +"pointOfSale.orderSync.error.title" = "Couldn't load totals"; + +/* Button title to retry synchronizing order and calculating order totals */ +"pointOfSale.orderSync.error.tryAgain" = "Try again"; + +/* Message shown to users when payment is made. %1$@ is a placeholder for the order total, e.g $10.50. Please include %1$@ in your formatted string */ +"pointOfSale.paymentSuccessful.message.card.1" = "A card payment of %1$@ was successfully made."; + +/* Message shown to users when payment is made. %1$@ is a placeholder for the order total, e.g $10.50. Please include %1$@ in your formatted string */ +"pointOfSale.paymentSuccessful.message.cash.1" = "A cash payment of %1$@ was successfully made."; + +/* Title shown to users when payment is made successfully. */ +"pointOfSale.paymentSuccessful.title" = "Payment successful"; + +/* Button title for sending a receipt */ +"pointOfSale.sendreceipt.button.title" = "Send"; + +/* Text that shows at the top of the receipts screen along the back button. */ +"pointOfSale.sendreceipt.emailReceiptNavigationText" = "Email receipt"; + +/* Error message that is displayed when an invalid email is used when emailing a receipt. */ +"pointOfSale.sendreceipt.emailValidationErrorText" = "Please enter a valid email."; + +/* Generic error message that is displayed when there's an error emailing a receipt. */ +"pointOfSale.sendreceipt.sendReceiptErrorText" = "Error trying to send this email. Try again."; + +/* Placeholder for the view where an email address should be entered when sending receipts */ +"pointOfSale.sendreceipt.textfield.placeholder" = "Type email"; + +/* Button to dismiss the payments onboarding sheet from the POS dashboard. */ +"pointOfSaleDashboard.payments.onboarding.cancel" = "Cancel"; + +/* Button to dismiss the support form from the POS dashboard. */ +"pointOfSaleDashboard.support.cancel" = "Cancel"; + +/* Format string for displaying battery level percentage in Point of Sale settings. Please leave the %.0f%% intact, as it represents the battery percentage. */ +"pointOfSaleSettingsHardwareDetailView.batteryLevelFormat" = "%.0f%%"; + +/* Text displayed on Point of Sale settings when card reader battery is unknown. */ +"pointOfSaleSettingsHardwareDetailView.batteryLevelUnknown" = "Unknown"; + +/* Subtitle for card reader connect button when no reader is connected. */ +"pointOfSaleSettingsHardwareDetailView.cardReaderConnectSubtitle" = "Connect your card reader and start accepting payments"; + +/* Title for card reader connect button when no reader is connected. */ +"pointOfSaleSettingsHardwareDetailView.cardReaderConnectTitle" = "Connect card reader"; + +/* Title for card reader disconnect button when reader is already connected. */ +"pointOfSaleSettingsHardwareDetailView.cardReaderDisconnectTitle" = "Disconnect reader"; + +/* Subtitle describing card reader documentation in Point of Sale settings. */ +"pointOfSaleSettingsHardwareDetailView.cardReaderDocumentationSubtitle" = "Learn more about accepting mobile payments"; + +/* Title for card reader documentation option in Point of Sale settings. */ +"pointOfSaleSettingsHardwareDetailView.cardReaderDocumentationTitle" = "Documentation"; + +/* Text displayed on Point of Sale settings when the card reader is not connected. */ +"pointOfSaleSettingsHardwareDetailView.cardReaderNotConnected" = "Reader not connected"; + +/* Navigation title for card readers settings in Point of Sale. */ +"pointOfSaleSettingsHardwareDetailView.cardReadersTitle" = "Card readers"; + +/* Title for the card reader firmware section in Point of Sale settings. */ +"pointOfSaleSettingsHardwareDetailView.firmwareTitle" = "Firmware"; + +/* Text displayed on Point of Sale settings when card reader firmware version is unknown. */ +"pointOfSaleSettingsHardwareDetailView.firmwareVersionUnknown" = "Unknown"; + +/* Description of Barcode scanner settings configuration. */ +"pointOfSaleSettingsHardwareDetailView.hardwareNavigationBarcodeSubtitle" = "Configure barcode scanner settings"; + +/* Navigation title of Barcode scanner settings. */ +"pointOfSaleSettingsHardwareDetailView.hardwareNavigationBarcodeTitle" = "Barcode scanners"; + +/* Description of Card reader settings for connections. */ +"pointOfSaleSettingsHardwareDetailView.hardwareNavigationCardReaderSubtitle" = "Manage card reader connections"; + +/* Navigation title of Card reader settings. */ +"pointOfSaleSettingsHardwareDetailView.hardwareNavigationCardReaderTitle" = "Card readers"; + +/* Navigation title for the hardware settings list. */ +"pointOfSaleSettingsHardwareDetailView.hardwareTitle" = "Hardware"; + +/* Button to dismiss the support form from POS settings. */ +"pointOfSaleSettingsHardwareDetailView.help.support.cancel" = "Cancel"; + +/* Text displayed on Point of Sale settings pointing to the card reader battery. */ +"pointOfSaleSettingsHardwareDetailView.readerBatteryTitle" = "Battery"; + +/* Text displayed on Point of Sale settings pointing to the card reader model. */ +"pointOfSaleSettingsHardwareDetailView.readerModelTitle.1" = "Device name"; + +/* Subtitle describing barcode scanner documentation in Point of Sale settings. */ +"pointOfSaleSettingsHardwareDetailView.scannerDocumentationSubtitle" = "Learn more about barcode scanning in POS"; + +/* Title for barcode scanner documentation option in Point of Sale settings. */ +"pointOfSaleSettingsHardwareDetailView.scannerDocumentationTitle" = "Documentation"; + +/* Subtitle describing scanner setup in Point of Sale settings. */ +"pointOfSaleSettingsHardwareDetailView.scannerSetupSubtitle" = "Configure and test your barcode scanner"; + +/* Title for scanner setup option in barcode scanners settings in Point of Sale. */ +"pointOfSaleSettingsHardwareDetailView.scannerSetupTitle" = "Scanner Setup"; + +/* Navigation title for barcode scanners settings in Point of Sale. */ +"pointOfSaleSettingsHardwareDetailView.scannersTitle" = "Barcode scanners"; + +/* Subtitle for the CTA banner to update firmware in Point of Sale settings. */ +"pointOfSaleSettingsHardwareDetailView.updateFirmwareBannerSubtitle" = "Update the firmware version to continue accepting payments."; + +/* Title for the CTA banner to update firmware in Point of Sale settings. */ +"pointOfSaleSettingsHardwareDetailView.updateFirmwareBannerTitle" = "Update firmware version"; + +/* Title of the button to update firmware in Point of Sale settings. */ +"pointOfSaleSettingsHardwareDetailView.updateFirmwareButtontitle" = "Update firmware"; + +/* The subtitle of the menu button to view documentation, shown in settings. + The title of the menu button to view documentation, shown in settings. */ +"PointOfSaleSettingsHelpDetailView.help.documentation.button.subtitle" = "Documentation"; + +/* The subtitle of the menu button to contact support, shown in settings. + The title of the menu button to contact support, shown in settings. */ +"PointOfSaleSettingsHelpDetailView.help.getSupport.button.subtitle" = "Get Support"; + +/* The subtitle of the menu button to view product restrictions info, shown in settings. We only show simple and variable products in POS, this shows a modal to help explain that limitation. */ +"PointOfSaleSettingsHelpDetailView.help.productRestrictionsInfo.button.subtitle" = "Learn about which products are supported in POS"; + +/* The title of the menu button to view product restrictions info, shown in settings. We only show simple and variable products in POS, this shows a modal to help explain that limitation. */ +"PointOfSaleSettingsHelpDetailView.help.productRestrictionsInfo.button.title" = "Where are my products?"; + +/* Button to dismiss the support form from the POS settings. */ +"PointOfSaleSettingsHelpDetailView.help.support.cancel" = "Cancel"; + +/* Navigation title for the help settings list. */ +"PointOfSaleSettingsHelpDetailView.help.title" = "Help"; + +/* Text displayed on Point of Sale settings when store has not been provided. */ +"pointOfSaleSettingsService.storeNameNotSet" = "Not set"; + +/* Label for address field in Point of Sale settings. */ +"pointOfSaleSettingsStoreDetailView.address" = "Address"; + +/* Label for email field in Point of Sale settings. */ +"pointOfSaleSettingsStoreDetailView.email" = "Email"; + +/* Section title for store information in Point of Sale settings. */ +"pointOfSaleSettingsStoreDetailView.general" = "General"; + +/* Text displayed on Point of Sale settings when any setting has not been provided. */ +"pointOfSaleSettingsStoreDetailView.notSet" = "Not set"; + +/* Label for phone number field in Point of Sale settings. */ +"pointOfSaleSettingsStoreDetailView.phoneNumber" = "Phone number"; + +/* Label for physical address field in Point of Sale settings. */ +"pointOfSaleSettingsStoreDetailView.physicalAddress" = "Physical address"; + +/* Section title for receipt information in Point of Sale settings. */ +"pointOfSaleSettingsStoreDetailView.receiptInformation" = "Receipt Information"; + +/* Label for receipt store name field in Point of Sale settings. */ +"pointOfSaleSettingsStoreDetailView.receiptStoreName" = "Store name"; + +/* Label for refund and returns policy field in Point of Sale settings. */ +"pointOfSaleSettingsStoreDetailView.refundReturnsPolicy" = "Refund & Returns Policy"; + +/* Label for store name field in Point of Sale settings. */ +"pointOfSaleSettingsStoreDetailView.storeName" = "Store name"; + +/* Navigation title for the store details in POS settings. */ +"pointOfSaleSettingsStoreDetailView.storeTitle" = "Store"; + +/* Title of the Point of Sale settings view. */ +"pointOfSaleSettingsView.navigationTitle" = "Settings"; + +/* Description of the settings to be found within the Hardware section. */ +"pointOfSaleSettingsView.sidebarNavigationHardwareSubtitle" = "Manage hardware connections"; + +/* Title of the Hardware section within Point of Sale settings. */ +"pointOfSaleSettingsView.sidebarNavigationHardwareTitle" = "Hardware"; + +/* Description of the Help section in Point of Sale settings. */ +"pointOfSaleSettingsView.sidebarNavigationHelpSubtitle" = "Get help and support"; + +/* Title of the Help section within Point of Sale settings. */ +"pointOfSaleSettingsView.sidebarNavigationHelpTitle.1" = "Get help and support"; + +/* Description of the settings to be found within the Local catalog section. */ +"pointOfSaleSettingsView.sidebarNavigationLocalCatalogSubtitle" = "Manage catalog settings"; + +/* Title of the Local catalog section within Point of Sale settings. */ +"pointOfSaleSettingsView.sidebarNavigationLocalCatalogTitle" = "Catalog"; + +/* Description of the settings to be found within the Store section. */ +"pointOfSaleSettingsView.sidebarNavigationStoreSubtitle" = "Store configuration and settings"; + +/* Title of the Store section within Point of Sale settings. */ +"pointOfSaleSettingsView.sidebarNavigationStoreTitle" = "Store"; + /* Section title for popular products on the Select Product screen. */ "Popular" = "Popular"; +/* Heading for the barcode info modal in POS, introducing barcode scanning feature */ +"pos.barcodeInfoModal.heading" = "Barcode scanning"; + +/* New message about Bluetooth barcode scanner settings */ +"pos.barcodeInfoModal.i2.bluetoothMessage" = "• Refer to your Bluetooth barcode scanner in iOS Bluetooth settings."; + +/* Accessible version of Bluetooth message without bullet character for screen readers */ +"pos.barcodeInfoModal.i2.bluetoothMessage.accessible" = "First: Refer to your Bluetooth barcode scanner in iOS Bluetooth settings."; + +/* New introductory message for barcode scanner information */ +"pos.barcodeInfoModal.i2.introMessage" = "You can scan barcodes using an external scanner to quickly build a cart."; + +/* New message about scanning barcodes on item list */ +"pos.barcodeInfoModal.i2.scanMessage" = "• Scan barcodes while on the item list to add products to the cart."; + +/* Accessible version of scan message without bullet character for screen readers */ +"pos.barcodeInfoModal.i2.scanMessage.accessible" = "Second: Scan barcodes while on the item list to add products to the cart."; + +/* New message about ensuring search field is disabled during scanning */ +"pos.barcodeInfoModal.i2.searchMessage" = "• Ensure the search field is not enabled while scanning barcodes."; + +/* Accessible version of search message without bullet character for screen readers */ +"pos.barcodeInfoModal.i2.searchMessage.accessible" = "Third: Ensure the search field is not enabled while scanning barcodes."; + +/* Introductory message in the barcode info modal in POS, explaining the use of external barcode scanners */ +"pos.barcodeInfoModal.introMessage" = "You can scan barcodes using an external scanner to quickly build a cart."; + +/* Link text in the barcode info modal in POS, leading to more details about barcode setup */ +"pos.barcodeInfoModal.moreDetailsLink" = "More details."; + +/* Accessible version of more details link in barcode info modal, announcing it as a link for screen readers */ +"pos.barcodeInfoModal.moreDetailsLink.accessible" = "More details, link."; + +/* Primary bullet point in the barcode info modal in POS, instructing where to set up barcodes in product details */ +"pos.barcodeInfoModal.primaryMessage" = "• Set up barcodes in the \"GTIN, UPC, EAN, ISBN\" field in Products > Product Details > Inventory. "; + +/* Accessible version of primary bullet point in barcode info modal, without bullet character for screen readers */ +"pos.barcodeInfoModal.primaryMessage.accessible" = "First: Set up barcodes in the \"G-T-I-N, U-P-C, E-A-N, I-S-B-N\" field by navigating to Products, then Product Details, then Inventory."; + +/* Link text for product barcode setup documentation. Used together with pos.barcodeInfoModal.productSetup.message. */ +"pos.barcodeInfoModal.productSetup.linkText" = "visit the documentation"; + +/* Message explaining how to set up barcodes in product inventory. %1$@ is replaced with a text and link to documentation. For example, visit the documentation. */ +"pos.barcodeInfoModal.productSetup.message" = "You can set up barcodes in the GTIN, UPC, EAN, ISBN field in the product's inventory tab. For more details %1$@."; + +/* Accessible version of product setup message, announcing link for screen readers */ +"pos.barcodeInfoModal.productSetup.message.accessible" = "You can set up barcodes in the G-T-I-N, U-P-C, E-A-N, I-S-B-N field in the product's inventory tab. For more details visit the documentation, link."; + +/* Quaternary bullet point in the barcode info modal in POS, instructing to scan barcodes on item list to add to cart */ +"pos.barcodeInfoModal.quaternaryMessage" = "• Scan barcodes while on the item list to add products to the cart."; + +/* Accessible version of quaternary bullet point in barcode info modal, without bullet character for screen readers */ +"pos.barcodeInfoModal.quaternaryMessage.accessible" = "Fourth: Scan barcodes while on the item list to add products to the cart."; + +/* Quinary message in the barcode info modal in POS, explaining scanner keyboard emulation and how to show software keyboard again */ +"pos.barcodeInfoModal.quinaryMessage" = "The scanner emulates a keyboard, so sometimes it will prevent the software keyboard from showing, e.g. in search. Tap on the keyboard icon to show it again."; + +/* Secondary bullet point in the barcode info modal in POS, instructing to set scanner to HID mode */ +"pos.barcodeInfoModal.secondaryMessage.2" = "• Refer to your Bluetooth barcode scanner's instructions to set HID mode. This usually requires scanning a special barcode in the manual."; + +/* Accessible version of secondary bullet point in barcode info modal, without bullet character for screen readers */ +"pos.barcodeInfoModal.secondaryMessage.accessible.2" = "Second: Refer to your Bluetooth barcode scanner's instructions to set H-I-D mode. This usually requires scanning a special barcode in the manual."; + +/* Tertiary bullet point in the barcode info modal in POS, instructing to connect scanner via Bluetooth settings */ +"pos.barcodeInfoModal.tertiaryMessage" = "• Connect your barcode scanner in iOS Bluetooth settings."; + +/* Accessible version of tertiary bullet point in barcode info modal, without bullet character for screen readers */ +"pos.barcodeInfoModal.tertiaryMessage.accessible" = "Third: Connect your barcode scanner in iOS Bluetooth settings."; + +/* Title for the back button in barcode scanner setup navigation */ +"pos.barcodeScannerSetup.back.button.title" = "Back"; + +/* Accessibility label of a barcode or QR code image that needs to be scanned by a barcode scanner. */ +"pos.barcodeScannerSetup.barcodeImage.accesibilityLabel" = "Image of a code to be scanned by a barcode scanner."; + +/* Message shown when scanner setup is complete */ +"pos.barcodeScannerSetup.complete.instruction.2" = "You are ready to start scanning products. Next time you need to connect your scanner, just turn it on and it will reconnect automatically."; + +/* Title shown when scanner setup is successfully completed */ +"pos.barcodeScannerSetup.complete.title" = "Scanner set up!"; + +/* Title for the done button in barcode scanner setup navigation */ +"pos.barcodeScannerSetup.done.button.title" = "Done"; + +/* Title for the back button in barcode scanner setup error step */ +"pos.barcodeScannerSetup.error.back.button.title" = "Back"; + +/* Instruction shown when scanner setup encounters an error, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.error.instruction" = "Please check the scanner's manual and reset it to factory settings, then retry the setup flow."; + +/* Title for the retry button in barcode scanner setup error step */ +"pos.barcodeScannerSetup.error.retry.button.title" = "Retry"; + +/* Title shown when there's an error during scanner setup */ +"pos.barcodeScannerSetup.error.title" = "Scanning issue found"; + +/* Instruction for scanning the Bluetooth HID barcode during scanner setup */ +"pos.barcodeScannerSetup.hidSetup.instruction" = "Use your barcode scanner to scan the code below to enable Bluetooth HID mode."; + +/* Title for Netum 1228BC scanner option in barcode scanner setup */ +"pos.barcodeScannerSetup.netum1228BC.title" = "Netum 1228BC"; + +/* Title for the next button in barcode scanner setup navigation */ +"pos.barcodeScannerSetup.next.button.title" = "Next"; + +/* Title for other scanner option in barcode scanner setup */ +"pos.barcodeScannerSetup.other.title" = "Other"; + +/* Instruction for pairing scanner via device settings with feedback indicators. %1$@ is the scanner model name. */ +"pos.barcodeScannerSetup.pairing.instruction.format" = "Enable Bluetooth and select your %1$@ scanner in the iOS Bluetooth settings. The scanner will beep and show a solid LED when paired."; + +/* Button title to open device Settings for scanner pairing */ +"pos.barcodeScannerSetup.pairing.settingsButton.title" = "Go to your device settings"; + +/* Title for the scanner pairing step */ +"pos.barcodeScannerSetup.pairing.title" = "Pair your scanner"; + +/* Instruction for scanning the Pair barcode to prepare scanner for pairing */ +"pos.barcodeScannerSetup.pairSetup.instruction" = "Use your barcode scanner to scan the code below to enter pairing mode."; + +/* Title format for a product barcode setup step */ +"pos.barcodeScannerSetup.productBarcodeInfo.title" = "How to set up barcodes on products"; + +/* Button title for accessing product barcode setup information */ +"pos.barcodeScannerSetup.productBarcodeInformation.button.title" = "How to set up barcodes on products"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scanner.setup.title.format" = "Scanner setup"; + +/* Title format for barcode scanner setup step */ +"pos.barcodeScannerSetup.scannerInfo.title" = "Scanner setup"; + +/* 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" = "Other 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" = "Set up a barcode scanner"; + +/* Instruction message for selecting a barcode scanner model from the list */ +"pos.barcodeScannerSetup.selection.introMessage" = "Select a model from the list:"; + +/* 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" = "Scan the barcode to test your scanner."; + +/* Instruction shown when scanner test times out, suggesting troubleshooting steps */ +"pos.barcodeScannerSetup.test.timeout.instruction" = "Scan the barcode to test your scanner. If the issue continues, please check Bluetooth settings and try again."; + +/* Title shown when scanner test times out without detecting a scan */ +"pos.barcodeScannerSetup.test.timeout.title" = "No scan data found yet"; + +/* Title for the scanner testing step */ +"pos.barcodeScannerSetup.test.title" = "Test your scanner"; + +/* Hint to add products to the Cart when this is empty. */ +"pos.cartView.addItemsToCartOrScanHint" = "Tap on a product to \n add it to the cart, or "; + +/* Title at the header for the Cart view. */ +"pos.cartView.cartTitle" = "Cart"; + +/* The title of the menu button to start a barcode scanner setup flow. */ +"pos.cartView.cartTitle.barcodeScanningSetup.button" = "Scan barcode"; + +/* Title for the 'Checkout' button to process the Order. */ +"pos.cartView.checkoutButtonTitle" = "Check out"; + +/* Title for the 'Clear cart' confirmation button to remove all products from the Cart. */ +"pos.cartView.clearButtonTitle.1" = "Clear cart"; + +/* Title shown on a toast view that appears when there's no internet connection */ +"pos.connectivity.title" = "No internet connection"; + +/* A button that dismisses coupon creation sheet */ +"pos.couponCreationSheet.selectCoupon.cancel" = "Cancel"; + +/* A title for the view that selects the type of coupon to create */ +"pos.couponCreationSheet.selectCoupon.title" = "Create coupon"; + +/* Body text of the exit Point of Sale modal alert */ +"pos.exitPOSModal.exitBody" = "Any orders in progress will be lost."; + +/* Button text of the exit Point of Sale modal alert */ +"pos.exitPOSModal.exitButtom" = "Exit"; + +/* Title of the exit Point of Sale modal alert */ +"pos.exitPOSModal.exitTitle" = "Exit Point of Sale mode?"; + +/* Button title to dismiss POS ineligible view */ +"pos.ineligible.dismiss.button.title" = "Exit POS"; + +/* Button title to enable the POS feature switch and refresh POS eligibility check */ +"pos.ineligible.enable.pos.feature.and.refresh.button.title.1" = "Enable POS feature"; + +/* Button title to refresh POS eligibility check */ +"pos.ineligible.refresh.button.title" = "Retry"; + +/* Suggestion for disabled feature switch: enable feature in WooCommerce settings */ +"pos.ineligible.suggestion.featureSwitchDisabled.3" = "Point of Sale must be enabled to proceed. Please enable the POS feature below or from your WordPress admin under WooCommerce settings > Advanced > Features and try again."; + +/* Suggestion for self deallocated: relaunch */ +"pos.ineligible.suggestion.selfDeallocated" = "Try relaunching the app to resolve this issue."; + +/* Suggestion for site settings unavailable: check connection or contact support */ +"pos.ineligible.suggestion.siteSettingsNotAvailable.1" = "We were unable to load the site settings info. Please check your internet connection and try again. If the issue persists, contact support for assistance."; + +/* Suggestion for unsupported currency with list of supported currencies. %1$@ is a placeholder for the localized country name, and %2$@ is a placeholder for the localized list of supported currency codes. */ +"pos.ineligible.suggestion.unsupportedCurrency.1" = "The POS system is not available for your store’s currency. In %1$@, it currently supports only %2$@. Please check your store currency settings or contact support for assistance."; + +/* Suggestion for unsupported WooCommerce version: update plugin. %1$@ is a placeholder for the minimum required version. */ +"pos.ineligible.suggestion.unsupportedWooCommerceVersion" = "Your WooCommerce version is not supported. The POS system requires WooCommerce version %1$@ or above. Please update WooCommerce to the latest version."; + +/* Suggestion for missing WooCommerce plugin: install plugin */ +"pos.ineligible.suggestion.wooCommercePluginNotFound.3" = "We were unable to load the WooCommerce plugin info. Please make sure the WooCommerce plugin is installed and activated from your WordPress admin. If there is still an issue, contact support for assistance."; + +/* Title shown in POS ineligible view */ +"pos.ineligible.title" = "Unable to load"; + +/* Subtitle appearing on error screens when there is a network connectivity error. */ +"pos.itemList.connectivityErrorSubtitle" = "Please check your internet connection and try again."; + +/* Title appearing on the coupon list screen when there's an error enabling coupons setting in the store. */ +"pos.itemList.enablingCouponsErrorTitle.2" = "Unable to enable coupons"; + +/* Text appearing on the coupon list screen when there's an error loading a page of coupons after the first. Shown inline with the previously loaded coupons above. */ +"pos.itemList.failedToLoadCouponsNextPageTitle.2" = "Unable to load more coupons"; + +/* Text appearing on the item list screen when there's an error loading a page of products after the first. Shown inline with the previously loaded items above. */ +"pos.itemList.failedToLoadProductsNextPageTitle.2" = "Unable to load more products"; + +/* Text appearing on the item list screen when there's an error loading products. */ +"pos.itemList.failedToLoadProductsTitle.2" = "Unable to load products"; + +/* Text appearing on the item list screen when there's an error loading a page of variations after the first. Shown inline with the previously loaded items above. */ +"pos.itemList.failedToLoadVariationsNextPageTitle.2" = "Unable to load more variations"; + +/* Text appearing on the item list screen when there's an error loading variations. */ +"pos.itemList.failedToLoadVariationsTitle.2" = "Unable to load variations"; + +/* Title appearing on the coupon list screen when there's an error refreshing coupons. */ +"pos.itemList.failedToRefreshCouponsTitle.2" = "Unable to refresh coupons"; + +/* Generic subtitle appearing on error screens when there's an error. */ +"pos.itemList.genericErrorSubtitle" = "Please try again."; + +/* Text of the button appearing on the coupon list screen when coupons are disabled. */ +"pos.itemList.loadingCouponsDisabledAction.2" = "Enable coupons"; + +/* Subtitle appearing on the coupon list screen when coupons are disabled. */ +"pos.itemList.loadingCouponsDisabledSubtitle.2" = "Enable coupon codes in your store to start creating them for your customers."; + +/* Title appearing on the coupon list screen when coupons are disabled. */ +"pos.itemList.loadingCouponsDisabledTitle.2" = "Start accepting coupons"; + +/* Title appearing on the coupon list screen when there's an error loading coupons. */ +"pos.itemList.loadingCouponsErrorTitle.2" = "Unable to load coupons"; + +/* Generic text for retry buttons appearing on error screens. */ +"pos.itemList.retryButtonTitle" = "Retry"; + +/* Title appearing on the item list screen when there's an error syncing the catalog for the first time. */ +"pos.itemList.syncCatalogErrorTitle" = "Unable to sync catalog"; + +/* Title at the top of the Point of Sale item list full screen. */ +"pos.itemListFullscreen.title" = "Products"; + +/* Label/placeholder text for the search field for Coupons in Point of Sale. */ +"pos.itemListView.coupons.searchField.label" = "Search coupons"; + +/* Title of the button at the top of Point of Sale to switch to Coupons list. */ +"pos.itemlistview.couponsTitle" = "Coupons"; + +/* Label/placeholder text for the search field for Products in Point of Sale. */ +"pos.itemListView.products.searchField.label.1" = "Search products"; + +/* Fallback label/placeholder text for the search field in Point of Sale. */ +"pos.itemListView.searchField.label" = "Search"; + +/* Message shown when the product catalog hasn't synced in the specified number of days. %1$ld will be replaced with the number of days. Reads like: The catalog hasn't been synced in the last 7 days. */ +"pos.itemlistview.staleSyncWarning.description" = "The catalog hasn't been synced in the last %1$ld days. Please ensure you're connected to the internet and sync again in POS Settings."; + +/* Warning title shown when the product catalog hasn't synced in several days */ +"pos.itemlistview.staleSyncWarning.title" = "Refresh catalog"; + +/* Title at the top of the Point of Sale product selector screen. */ +"pos.itemlistview.title" = "Products"; + +/* Text shown when there's nothing to show before a search term is typed in POS */ +"pos.itemsearch.before.search.emptyListText" = "Search your store"; + +/* Title for the list of popular products shown before a search term is typed in POS */ +"pos.itemsearch.before.search.popularProducts.title" = "Popular products"; + +/* Title for the list of recent searches shown before a search term is typed in POS */ +"pos.itemsearch.before.search.recentSearches.title" = "Recent searches"; + +/* Button text to exit Point of Sale when there's a critical error */ +"pos.listError.exitButton" = "Exit POS"; + +/* Accessibility label for button to dismiss a notice banner */ +"pos.noticeView.dismiss.button.accessibiltyLabel" = "Dismiss"; + +/* Accessibility label for order status badge. %1$@ is the status name (e.g., Completed, Failed, Processing). */ +"pos.orderBadgeView.accessibilityLabel" = "Order status: %1$@"; + +/* Text appearing in the order details pane when there are no orders available. */ +"pos.orderDetailsEmptyView.noOrderToDisplay" = "No order to display"; + +/* Title at the header for the Order Details empty view. */ +"pos.orderDetailsEmptyView.ordersTitle" = "Order"; + +/* Section title for the products list */ +"pos.orderDetailsLoadingView.productsTitle" = "Products"; + +/* Section title for the order totals breakdown */ +"pos.orderDetailsLoadingView.totalsTitle" = "Totals"; + +/* Accessibility label for discount total. %1$@ is the discount amount. */ +"pos.orderDetailsView.discount.accessibilityLabel" = "Discount total: %1$@"; + +/* Label for discount total in the totals section */ +"pos.orderDetailsView.discountTotalLabel" = "Discount total"; + +/* Accessibility hint for email receipt button on order details view */ +"pos.orderDetailsView.emailReceiptAction.accessibilityHint" = "Tap to send order receipt via email"; + +/* Label for email receipt action on order details view */ +"pos.orderDetailsView.emailReceiptAction.title" = "Email receipt"; + +/* Accessibility label for order header bottom content. %1$@ is order date and time, %2$@ is order status. */ +"pos.orderDetailsView.headerBottomContent.accessibilityLabel" = "Order date: %1$@, Status: %2$@"; + +/* Email portion of order header accessibility label. %1$@ is customer email address. */ +"pos.orderDetailsView.headerBottomContent.accessibilityLabel.email" = "Customer email: %1$@"; + +/* Accessibility label for net payment. %1$@ is the net payment amount after refunds. */ +"pos.orderDetailsView.netPayment.accessibilityLabel" = "Net payment: %1$@"; + +/* Label for net payment amount after refunds */ +"pos.orderDetailsView.netPaymentLabel" = "Net Payment"; + +/* Accessibility label for total paid. %1$@ is the paid amount. */ +"pos.orderDetailsView.paid.accessibilityLabel" = "Total paid: %1$@"; + +/* Payment method portion of paid accessibility label. %1$@ is the payment method. */ +"pos.orderDetailsView.paid.accessibilityLabel.method" = "Payment method: %1$@"; + +/* Label for the paid amount */ +"pos.orderDetailsView.paidLabel2" = "Total paid"; + +/* Accessibility label for product row. %1$@ is quantity, %2$@ is unit price, %3$@ is total price. */ +"pos.orderDetailsView.productRow.accessibilityLabel" = "Quantity: %1$@ at %2$@ each, Total %3$@"; + +/* Label for products subtotal in the totals section */ +"pos.orderDetailsView.productsLabel" = "Products"; + +/* Section title for the products list */ +"pos.orderDetailsView.productsTitle" = "Products"; + +/* Product quantity and price label. %1$d is the quantity, %2$@ is the unit price. */ +"pos.orderDetailsView.quantityLabel" = "%1$d × %2$@"; + +/* Label for refund reason. %1$@ is the reason text. */ +"pos.orderDetailsView.reasonLabel" = "Reason: %1$@"; + +/* Accessibility label for refunded amount. %1$@ is the refund amount. */ +"pos.orderDetailsView.refund.accessibilityLabel" = "Refunded: %1$@"; + +/* Reason portion of refund accessibility label. %1$@ is the refund reason. */ +"pos.orderDetailsView.refund.accessibilityLabel.reason" = "Reason: %1$@"; + +/* Label for a refund entry. %1$lld is the refund ID. */ +"pos.orderDetailsView.refundLabel" = "Refunded"; + +/* Accessibility label for products subtotal. %1$@ is the subtotal amount. */ +"pos.orderDetailsView.subtotal.accessibilityLabel" = "Products subtotal: %1$@"; + +/* Accessibility label for taxes. %1$@ is the tax amount. */ +"pos.orderDetailsView.tax.accessibilityLabel" = "Taxes: %1$@"; + +/* Label for taxes in the totals section */ +"pos.orderDetailsView.taxesLabel" = "Taxes"; + +/* Accessibility label for order total. %1$@ is the total amount. */ +"pos.orderDetailsView.total.accessibilityLabel" = "Order total: %1$@"; + +/* Label for the order total */ +"pos.orderDetailsView.totalLabel" = "Total"; + +/* Section title for the order totals breakdown */ +"pos.orderDetailsView.totalsTitle" = "Totals"; + +/* Text appearing on the order list screen when there's an error loading a page of orders after the first. Shown inline with the previously loaded orders above. */ +"pos.orderList.failedToLoadOrdersNextPageTitle" = "Unable to load more orders"; + +/* Text appearing on the order list screen when there's an error loading orders. */ +"pos.orderList.failedToLoadOrdersTitle" = "Unable to load orders"; + +/* Button text for opening an information view when orders when list is empty. */ +"pos.orderListView.emptyOrdersButtonTitle2" = "Learn more"; + +/* Hint text suggesting to modify search terms when no orders are found. */ +"pos.orderListView.emptyOrdersSearchHint" = "Try adjusting your search term."; + +/* Subtitle appearing when order search returns no results. */ +"pos.orderListView.emptyOrdersSearchSubtitle" = "We couldn't find any orders matching your search."; + +/* Title appearing when order search returns no results. */ +"pos.orderListView.emptyOrdersSearchTitle" = "No orders found"; + +/* Subtitle appearing when there are no orders to display. */ +"pos.orderListView.emptyOrdersSubtitle2" = "Explore how you can increase your store sales."; + +/* Title appearing when there are no orders to display. */ +"pos.orderListView.emptyOrdersTitle" = "No orders yet"; + +/* Accessibility hint for order row indicating the action when tapped. */ +"pos.orderListView.orderRow.accessibilityHint" = "Tap to view order details"; + +/* Accessibility label for order row. %1$@ is order number, %2$@ is total amount, %3$@ is date and time, %4$@ is order status. */ +"pos.orderListView.orderRow.accessibilityLabel" = "Order #%1$@, Total %2$@, %3$@, Status: %4$@"; + +/* Email portion of order row accessibility label. %1$@ is customer email address. */ +"pos.orderListView.orderRow.accessibilityLabel.email" = "Email: %1$@"; + +/* Title at the header for the Orders view. */ +"pos.orderListView.ordersTitle" = "Orders"; + +/* %1$@ is the order number. # symbol is shown as a prefix to a number. */ +"pos.orderListView.orderTitle" = "#%1$@"; + +/* Accessibility label for the search button in orders list. */ +"pos.orderListView.searchButton.accessibilityLabel" = "Search orders"; + +/* Placeholder for a search field in the Orders view. */ +"pos.orderListView.searchFieldPlaceholder" = "Search orders"; + +/* Text indicating that there are options available for a parent product */ +"pos.parentProductCard.optionsAvailable" = "Options available"; + +/* Text appearing on the coupons list screen as subtitle when there's no coupons found. */ +"pos.pointOfSaleItemListEmptyView.emptyCouponSearchSubtitle.2" = "We couldn’t find any coupons with that name — try adjusting your search term."; + +/* Text appearing on the coupons list screen as subtitle when there's no coupons found. */ +"pos.pointOfSaleItemListEmptyView.emptyCouponsSubtitle.2" = "Coupons can be an effective way to drive business. Would you like to create one?"; + +/* Text appearing on the coupon list screen when there's no coupons found. */ +"pos.pointOfSaleItemListEmptyView.emptyCouponsTitle2" = "No coupons found"; + +/* Text for the button appearing on the products list screen when there are no products found. */ +"pos.pointOfSaleItemListEmptyView.emptyProductsButtonTitle" = "Refresh"; + +/* Text hinting the merchant to create a product. */ +"pos.pointOfSaleItemListEmptyView.emptyProductsHint.1" = "To add one, exit POS and go to Products."; + +/* Text providing additional search tips when no products are found in the POS product search. */ +"pos.pointOfSaleItemListEmptyView.emptyProductsSearchHint" = "Variation names can't be searched, so use the parent product name."; + +/* Subtitle text suggesting to modify search terms when no products are found in the POS product search. */ +"pos.pointOfSaleItemListEmptyView.emptyProductsSearchSubtitle.2" = "We couldn't find any matching products — try adjusting your search term."; + +/* Text appearing on screen when a POS product search returns no results. */ +"pos.pointOfSaleItemListEmptyView.emptyProductsSearchTitle.2" = "No products found"; + +/* Subtitle text on screen when there are no products to load. */ +"pos.pointOfSaleItemListEmptyView.emptyProductsSubtitle.1" = "POS currently only supports simple and variable products."; + +/* Text appearing on screen when there are no products to load. */ +"pos.pointOfSaleItemListEmptyView.emptyProductsTitle.2" = "No supported products found"; + +/* Text hinting the merchant to create a product. */ +"pos.pointOfSaleItemListEmptyView.emptyVariableParentProductHint" = "To add one, exit POS and edit this product in the Products tab."; + +/* Subtitle text on screen when there are no products to load. */ +"pos.pointOfSaleItemListEmptyView.emptyVariableParentProductSubtitle" = "POS only supports enabled, non-downloadable variations."; + +/* Text appearing on screen when there are no variations to load. */ +"pos.pointOfSaleItemListEmptyView.emptyVariableParentProductTitle.2" = "No supported variations found"; + +/* Text for the button appearing on the coupons list screen when there's no coupons found. */ +"pos.pointOfSaleItemListEmptyView.noCouponsFoundButtonTitleButtonTitle" = "Create coupon"; + +/* Title for the OK button on the pos information modal */ +"pos.posInformationModal.ok.button.title" = "OK"; + +/* Accessibility label for the clear button in the Point of Sale search screen. */ +"pos.searchview.searchField.clearButton.accessibilityLabel" = "Clear Search"; + +/* Action text in the simple products information modal in POS */ +"pos.simpleProductsModal.action" = "Create an order in store management"; + +/* Hint in the simple products information modal in POS, explaining future plans when variable products are supported */ +"pos.simpleProductsModal.hint.variableAndSimple" = "To take payment for an unsupported product, exit POS and create a new order from the orders tab."; + +/* Message in the simple products information modal in POS, explaining future plans when variable products are supported */ +"pos.simpleProductsModal.message.future.variableAndSimple" = "Other product types will be available in future updates."; + +/* Message in the simple products information modal in POS when variable products are supported */ +"pos.simpleProductsModal.message.issue.variableAndSimple" = "Only simple and variable non-downloadable products can be used with POS right now."; + +/* Title of the simple products information modal in POS */ +"pos.simpleProductsModal.title" = "Why can't I see my products?"; + +/* Label to be displayed in the product's card when there's stock of a given product */ +"pos.stockStatusLabel.inStockWithQuantity" = "%1$@ in stock"; + +/* Label to be displayed in the product's card when out of stock */ +"pos.stockStatusLabel.outofstock" = "Out of stock"; + /* Title for the Point of Sale tab. */ "pos.tab.title" = "POS"; +/* Button title for new order button */ +"pos.totalsView.button.newOrder" = "New order"; + +/* Button title for the receipt button */ +"pos.totalsView.button.sendReceipt" = "Email receipt"; + +/* Title for the cash payment button title */ +"pos.totalsView.cash.button.title" = "Cash payment"; + +/* Title for discount total amount field */ +"pos.totalsView.discountTotal2" = "Discount total"; + +/* Title for subtotal amount field */ +"pos.totalsView.subtotal" = "Subtotal"; + +/* Title for taxes amount field */ +"pos.totalsView.taxes" = "Taxes"; + +/* Title for total amount field */ +"pos.totalsView.total" = "Total"; + +/* Detail for an error shown when the Point of Sale is used in iOS split view, but with not enough horizontal space. */ +"pos.unsupportedWidth.detail" = "Please adjust your screen split to give Point of Sale more space."; + +/* An error shown when the Point of Sale is used in iOS split view, but with not enough horizontal space. */ +"pos.unsupportedWidth.title" = "Point of Sale is not supported in this screen width."; + +/* Label for allow full sync on cellular data toggle in Point of Sale settings. */ +"posSettingsLocalCatalogDetailView.allowFullSyncOnCellular.1" = "Allow full update on cellular data"; + +/* Label for catalog size field in Point of Sale settings. */ +"posSettingsLocalCatalogDetailView.catalogSize" = "Catalog size"; + +/* Section title for catalog status in Point of Sale settings. */ +"posSettingsLocalCatalogDetailView.catalogStatus" = "Catalog Status"; + +/* Label for last full sync field in Point of Sale settings. */ +"posSettingsLocalCatalogDetailView.lastFullSync.1" = "Last full update"; + +/* Label for last incremental update field in Point of Sale settings. */ +"posSettingsLocalCatalogDetailView.lastIncrementalSync" = "Last update"; + +/* Section title for managing data usage in Point of Sale settings. */ +"posSettingsLocalCatalogDetailView.managingDataUsage.1" = "Managing Data Usage"; + +/* Section title for manual catalog update in Point of Sale settings. */ +"posSettingsLocalCatalogDetailView.manualCatalogUpdate" = "Manual Catalog Update"; + +/* Info text explaining when to use manual catalog update. */ +"posSettingsLocalCatalogDetailView.manualUpdateInfo" = "Use this refresh only when something seems off - POS keeps data current automatically."; + +/* Button text for refreshing the catalog manually. */ +"posSettingsLocalCatalogDetailView.refreshCatalog" = "Refresh catalog"; + +/* Navigation title for the local catalog details in POS settings. */ +"posSettingsLocalCatalogDetailView.title" = "Catalog Settings"; + +/* Format string for catalog size showing product count and variation count. %1$d will be replaced by the product count, and %2$ld will be replaced by the variation count. */ +"posSettingsLocalCatalogViewModel.catalogSizeFormat" = "%1$d products, %2$ld variations"; + +/* Text shown when catalog size cannot be determined. */ +"posSettingsLocalCatalogViewModel.catalogSizeUnavailable" = "Catalog size unavailable"; + +/* Text shown when no update has been performed yet. */ +"posSettingsLocalCatalogViewModel.neverSynced" = "Not updated"; + +/* Text shown when update date cannot be determined. */ +"posSettingsLocalCatalogViewModel.syncDateUnavailable" = "Update date unavailable"; + /* Text field postcode in Edit Address Form Text field postcode in Shipping Label Address Validation */ "Postcode" = "Postcode"; From 92e473ba18f3b146a16dbe10144f2d31c735f955 Mon Sep 17 00:00:00 2001 From: iamgabrielma Date: Mon, 24 Nov 2025 11:57:48 +0700 Subject: [PATCH 4/7] add POS module to generate_strings_file_for_glotpress lane When generating strings for Glotpress from the iOS strings, the path to the POS module is missing --- fastlane/Fastfile | 1 + 1 file changed, 1 insertion(+) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index e2701894742..27b7fd6bef3 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1223,6 +1223,7 @@ platform :ios do paths: [ 'WooCommerce/', 'Modules/Sources/WordPress*/', + 'Modules/Sources/PointOfSale/', 'Modules/Sources/WPMediaPicker/', 'Storage/Storage/', 'Networking/Networking/', From be73e198db797d37dc674ce9ba8b2ab5adcd135f Mon Sep 17 00:00:00 2001 From: Automattic Release Bot Date: Mon, 24 Nov 2025 01:33:10 -0800 Subject: [PATCH 5/7] =?UTF-8?q?Update=20app=20translations=20=E2=80=93=20`?= =?UTF-8?q?Localizable.strings`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Resources/ar.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/de.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/es.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/fr.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/he.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/id.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/it.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/ja.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/ko.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/nl.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/pt-BR.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/ru.lproj/Localizable.strings | 74 ++++++++++++++++--- .../Resources/sv.lproj/Localizable.strings | 71 +++++++++++++++--- .../Resources/tr.lproj/Localizable.strings | 74 ++++++++++++++++--- .../zh-Hans.lproj/Localizable.strings | 74 ++++++++++++++++--- .../zh-Hant.lproj/Localizable.strings | 74 ++++++++++++++++--- 16 files changed, 1021 insertions(+), 160 deletions(-) diff --git a/WooCommerce/Resources/ar.lproj/Localizable.strings b/WooCommerce/Resources/ar.lproj/Localizable.strings index b37bd6e724f..db8cce1b2bc 100644 --- a/WooCommerce/Resources/ar.lproj/Localizable.strings +++ b/WooCommerce/Resources/ar.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-03 19:54:06+0000 */ +/* Translation-Revision-Date: 2025-11-17 16: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 */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "اكتمل الحجز"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "اكتمل الإلغاء"; +"BookingAttendanceStatus.canceled" = "مُلغى"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "نجح تسجيل الحضور"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "عدم الحضور"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "غير معروف"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "الحضور"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "يتعذر تغيير حالة حضور الحجز رقم ⁦%1$d⁩"; +"BookingDetailsView.attendanceStatus.failureMessage." = "يتعذر تغيير حالة حضور الحجز رقم⁦%1$d⁩."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "إضافة ملحوظة"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "إضافة ملاحظة"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "هذه ملحوظة خاصة. لن نشاركها مع العميل."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "ملاحظات الحجز"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "ملحوظة الحجز"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "ملحوظة الحجز"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "لا، الاحتفاظ بالحجز"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "نعم، إلغاء الحجز"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "هل أنت متأكد من رغبتك في إلغاء هذا الحجز؟"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "لن يتمكن %1$@ من حضور \"%2$@\" في %3$@ بعد الآن."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "إلغاء الحجز"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "يتعذر إلغاء الحجز رقم⁦%1$d⁩."; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "عنوان الفوترة"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "الحالة"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "يتعذر وضع علامة على الحجز رقم⁦%1$d⁩ على أنه مدفوع."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "الحجز رقم ⁦%1$d⁩"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "الدفع"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "نشر مبلغ الاسترداد"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "وضع علامة كـ \"مدفوع\""; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "ينقل التعليق إلى سلة المهملات"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "إلغاء"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "تجاهل التغييرات"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "هل أنت متأكد من رغبتك في تجاهل هذه التغييرات؟"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "تم"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "متاجر متعددة"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "التسجيل في %1$@"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "الخدمة"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "صوت"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "تم"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "هل تريد بدء متجر جديد؟"; @@ -8410,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "الحجوزات"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "مدفوع"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "نجح استرداد المبلغ"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "غير معروف"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "غير مدفوعة"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "حاول ضبط مصطلح البحث الخاص بك لرؤية مزيد من النتائج"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "تعذر العثور على خدمة أو حدث"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "البحث عن الخدمة \/ الحدث"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "الخدمة \/ الحدث"; diff --git a/WooCommerce/Resources/de.lproj/Localizable.strings b/WooCommerce/Resources/de.lproj/Localizable.strings index 1b4069aa289..75d3e389999 100644 --- a/WooCommerce/Resources/de.lproj/Localizable.strings +++ b/WooCommerce/Resources/de.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-04 13:54:05+0000 */ +/* Translation-Revision-Date: 2025-11-20 13:54:08+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: de */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "Gebucht"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "Storniert"; +"BookingAttendanceStatus.canceled" = "Abgebrochen"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "Eingecheckt"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "Nicht angezeigt"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "Unbekannt"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "Teilnahme"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "Anwesenheitsstatus der Buchungsnummer %1$d kann nicht geändert werden"; +"BookingDetailsView.attendanceStatus.failureMessage." = "Anwesenheitsstatus von Buchung Nr. %1$d kann nicht geändert werden."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "Anmerkung hinzufügen"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "Hinweis hinzufügen"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "Dies ist eine private Notiz. Sie wird nicht mit dem Kunden geteilt."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "Buchungsnotizen"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "Buchungshinweis"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "Buchungshinweis"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "Nein, behalten"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "Ja, bitte stornieren"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "Bist du sicher, dass du diese Buchung stornieren möchtest?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ kann nicht mehr am %3$@ an „%2$@“ teilnehmen."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "Buchung stornieren"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "Buchung Nr. %1$d kann nicht storniert werden."; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "Rechnungsadresse"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "Status"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "Buchung Nr. %1$d kann nicht als bezahlt markiert werden."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "Buchungsnummer #%1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "Zahlung"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "Rückerstattung ausstellen"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "Als bezahlt markieren"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "Verschiebt den Kommentar in den Papierkorb"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "Abbrechen"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "Änderungen verwerfen"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "Bist du sicher, dass diese Änderungen verworfen werden sollen?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "Fertig"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "Mehrere Shops"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "%1$@ für die Registrierung"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "Dienst"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "Audio"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "Fertig"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "Erstellst du einen neuen Shop?"; @@ -8410,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "Buchungen"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "Bezahlt"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "Rückerstattet"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "Unbekannt"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "Unbezahlt"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "Anderen Suchbegriff probieren, um mehr Ergebnisse anzuzeigen"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "Kein Service\/keine Veranstaltung gefunden"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "Dienst\/Ereignis durchsuchen"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "Service\/Veranstaltung"; diff --git a/WooCommerce/Resources/es.lproj/Localizable.strings b/WooCommerce/Resources/es.lproj/Localizable.strings index 51147a4fae4..260114bc2d2 100644 --- a/WooCommerce/Resources/es.lproj/Localizable.strings +++ b/WooCommerce/Resources/es.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-04 09:54:04+0000 */ +/* Translation-Revision-Date: 2025-11-18 13:54:04+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: es */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "Reservado"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "Cancelado"; +"BookingAttendanceStatus.canceled" = "Cancelado"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "Registrado"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "No presentarse"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "Desconocido"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "Asistencia"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "No se ha podido cambiar el estado de asistencia de la reserva n.º %1$d"; +"BookingDetailsView.attendanceStatus.failureMessage." = "No se ha podido cambiar el estado de asistencia de la reserva n.º %1$d."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "Añadir nota"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "Añadir una nota"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "Esta es una nota privada. No se compartirá con el cliente."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "Notas de la reserva"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "Nota de reserva"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "Nota de reserva"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "No, quiero mantenerla"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "Sí, quiero cancelarla"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "¿Seguro que quieres cancelar esta reserva?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ ya no podrá asistir a \"%2$@\" el %3$@."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "Cancelar reserva"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "No se puede cancelar la reserva n.º %1$d"; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "Dirección de facturación"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "Estado"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "No se ha podido marcar la reserva%1$d como de pago."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "Reserva n.º %1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "Pago"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "Emitir reembolso"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "Marcar como pagado"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "Traslada el comentario a la papelera"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "Cancelar"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "Descartar cambios"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "¿Seguro que quieres descartar estos cambios?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "Hecho"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "Varias tiendas"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "%1$@ de inscripción"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "Servicio"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "audio"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "Hecho"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "¿Deseas crear una nueva tienda?"; @@ -8410,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "Reservas"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "De pago"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "Reembolsado"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "Desconocido"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "Sin pagar"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "Prueba a ajustar el término de búsqueda para ver más resultados"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "No se ha encontrado ningún servicio o evento"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "Buscar servicios \/ eventos"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "Servicio\/Evento"; diff --git a/WooCommerce/Resources/fr.lproj/Localizable.strings b/WooCommerce/Resources/fr.lproj/Localizable.strings index f2f9995448e..503d46ccdc8 100644 --- a/WooCommerce/Resources/fr.lproj/Localizable.strings +++ b/WooCommerce/Resources/fr.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-04 09:54:04+0000 */ +/* Translation-Revision-Date: 2025-11-20 13:54:04+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: fr */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "Réservé"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "Annulé"; +"BookingAttendanceStatus.canceled" = "Annulé"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "Présent"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "Absence"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "Inconnu"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "Présence"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "Impossible de modifier l’état de présence de la réservation nº %1$d"; +"BookingDetailsView.attendanceStatus.failureMessage." = "Impossible de modifier l’état de présence de la réservation nº %1$d."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "Ajouter une note"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "Ajouter une note"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "Ceci est une note privée. Il ne sera pas partagé avec le client."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "Notes de réservation"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "Note de réservation"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "Note de réservation"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "Non, la garder"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "Oui, l’annuler"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "Voulez-vous vraiment annuler cette réservation ?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ ne pourra plus assister à « %2$@ » le %3$@."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "Annuler la réservation"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "Impossible d’annuler la réservation nº %1$d."; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "Adresse de facturation"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "État"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "Impossible de marquer la réservation nº %1$d comme payée."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "Réservation nº %1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "Paiement"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "Effectuer le remboursement"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "Marquer comme payée"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "Déplace le commentaire dans la corbeille"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "Annuler"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "Annuler les modifications"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "Voulez-vous vraiment annuler ces modifications ?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "Terminé"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "Plusieurs boutiques"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "Inscription à %1$@"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "Service"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "audio"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "Terminé"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "Vous lancez une nouvelle boutique ?"; @@ -8410,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "Réservations"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "Payée"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "Remboursée"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "Inconnu"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "Non payée"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "Essayez d’ajuster votre terme de recherche pour voir plus de résultats"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "Aucun service ou événement trouvé"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "Rechercher un service \/ événement"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "Service\/Événement"; diff --git a/WooCommerce/Resources/he.lproj/Localizable.strings b/WooCommerce/Resources/he.lproj/Localizable.strings index ebf7be226fa..7dc366edacc 100644 --- a/WooCommerce/Resources/he.lproj/Localizable.strings +++ b/WooCommerce/Resources/he.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-04 13:54:04+0000 */ +/* Translation-Revision-Date: 2025-11-20 13:54:10+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: he_IL */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "הזמנות שבוצעו"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "בוטל"; +"BookingAttendanceStatus.canceled" = "בוטל"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "לקוח נכנס לפגישה"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "לקוח לא הגיע"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "לא ידוע"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "נוכחות"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "לא ניתן לשנות את סטטוס הנוכחות של הזמנה מס' ⁦%1$d⁩"; +"BookingDetailsView.attendanceStatus.failureMessage." = "לא ניתן לשנות את סטטוס הנוכחות של הזמנה מס' ⁦%1$d⁩."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "להוסיף הערה"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "הוספת הערה"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "זוהי הערה פרטית. לא נשתף אותה עם הלקוח."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "הערות להזמנה"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "הערה להזמנה"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "הערה להזמנה"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "לא, אני רוצה להשאיר"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "כן, אני רוצה לבטל"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "האם ברצונך לבטל את ההזמנה הזאת?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "המשתמש %1$@ לא יוכל עוד להשתתף במפגש \"%2$@\" בתאריך %3$@."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "לבטל את ההזמנה"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "לא ניתן לבטל את הזמנה מס' ⁦%1$d⁩."; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "כתובת לחיוב"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "סטטוס"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "לא ניתן לסמן את הזמנה מס' ⁦%1$d⁩ כ'שולמה'."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "הזמנה מס' ⁦%1$d⁩"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "תשלום"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "נמצאה בעיה"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "לסמן כ'שולמה'"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "העברת התגובות לפח"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "לבטל"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "לבטל שינויים"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "האם ברצונך לבטל את השינויים האלה?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "בוצע"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "מספר חנויות"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "%1$@ הרשמה"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "שירות"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "אודיו"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "בוצע"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "רוצה לפתוח חנות חדשה?"; @@ -8410,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "הזמנות"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "שולם"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "הוחזר"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "לא ידוע"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "לא שולם"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "כדאי לשנות את מונח החיפוש כדי להציג תוצאות נוספות"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "לא נמצא שירות או אירוע"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "לחפש שירותים \/ אירוע"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "שירות \/ אירוע"; diff --git a/WooCommerce/Resources/id.lproj/Localizable.strings b/WooCommerce/Resources/id.lproj/Localizable.strings index a127c268f89..6d54131b42c 100644 --- a/WooCommerce/Resources/id.lproj/Localizable.strings +++ b/WooCommerce/Resources/id.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-04 11:54:04+0000 */ +/* Translation-Revision-Date: 2025-11-18 09:54:05+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: id */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "Dipesan"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "Dibatalkan"; +"BookingAttendanceStatus.canceled" = "Dibatalkan"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "Hadir"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "Tidak hadir"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "Tidak Diketahui"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "Kehadiran"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "Tidak dapat mengubah status kehadiran Pemesanan #%1$d"; +"BookingDetailsView.attendanceStatus.failureMessage." = "Tidak dapat mengubah status kehadiran untuk Pemesanan #%1$d."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "Tambahkan catatan"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "Tambahkan catatan"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "Ini adalah catatan pribadi. Catatan ini tidak akan dibagikan kepada pelanggan."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "Catatan pemesanan"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "Catatan pemesanan"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "Catatan pemesanan"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "Tidak, simpan"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "Ya, batalkan"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "Apakah Anda yakin ingin membatalkan pemesanan ini?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ tidak dapat lagi menghadiri “%2$@” pada %3$@."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "Batalkan pemesanan"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "Tidak dapat membatalkan Pemesanan #%1$d."; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "Alamat penagihan"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "Status"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "Tidak dapat menandai Pemesanan #%1$d sudah dibayar."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "Pemesanan #%1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "Pembayaran"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "Minta pengembalian dana"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "Tandai sudah dibayar"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "Pindahkan komentar ke Tempat Sampah"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "Batalkan"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "Buang perubahan"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "Apakah Anda yakin ingin membuang perubahan ini?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "Selesai"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "Beberapa Toko"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "pendaftaran %1$@"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "Layanan"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7467,6 +7500,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "audio"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "Selesai"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "Membuat toko baru?"; @@ -8407,9 +8443,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "Pemesanan"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "Sudah dibayar"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "Dana dikembalikan"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "Tidak diketahui"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "Belum dibayar"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "Coba sesuaikan istilah pencarian Anda untuk melihat hasil lainnya"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "Layanan atau aktivitas tidak ditemukan"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "Cari layanan\/acara"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "Layanan \/ Acara"; diff --git a/WooCommerce/Resources/it.lproj/Localizable.strings b/WooCommerce/Resources/it.lproj/Localizable.strings index 2069d3548f8..34bacdcf26d 100644 --- a/WooCommerce/Resources/it.lproj/Localizable.strings +++ b/WooCommerce/Resources/it.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-06 10:54:03+0000 */ +/* Translation-Revision-Date: 2025-11-18 11:54:04+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: it */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "Prenotato"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "Annullato"; +"BookingAttendanceStatus.canceled" = "Annullato"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "Check-in effettuato"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "Assente"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "Sconosciuto"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "Partecipazione"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "Impossibile modificare lo stato della partecipazione alla Prenotazione n. %1$d"; +"BookingDetailsView.attendanceStatus.failureMessage." = "Impossibile modificare lo stato della partecipazione alla Prenotazione n. %1$d."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "Aggiungi nota"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "Aggiungi una nota"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "Questa è una nota privata. Non verrà condivisa con il cliente."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "Note di prenotazione"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "Nota prenotazione"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "Nota prenotazione"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "No, mantieni la prenotazione"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "Sì, cancella la prenotazione"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "Desideri annullare questa prenotazione?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ non potrà più partecipare a \"%2$@\" il giorno %3$@."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "Cancella la prenotazione"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "Impossibile annullare la Prenotazione n. %1$d."; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "Indirizzo di fatturazione"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "Stato"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "Impossibile contrassegnare la Prenotazione n. %1$d come pagata."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "Prenotazione n. %1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "Pagamento"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "Emetti il rimborso"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "Contrassegna come pagato"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "Sposta i commenti nel cestino"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "Annulla"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "Annulla le modifiche"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "Desideri eliminare queste modifiche?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "Fatto"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "Più negozi"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "Registrati per %1$@"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "Servizio"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "audio"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "Fatto"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "Creare un altro negozio?"; @@ -8410,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "Prenotazioni"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "A pagamento"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "Rimborsato"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "Sconosciuto"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "Non pagato"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "Prova a modificare il termine di ricerca per vedere più risultati"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "Nessun servizio o evento trovato"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "Cerca servizio \/ evento"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "Servizio \/ Evento"; diff --git a/WooCommerce/Resources/ja.lproj/Localizable.strings b/WooCommerce/Resources/ja.lproj/Localizable.strings index 33af0944a5b..edae68f0d35 100644 --- a/WooCommerce/Resources/ja.lproj/Localizable.strings +++ b/WooCommerce/Resources/ja.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-04 09:54:05+0000 */ +/* Translation-Revision-Date: 2025-11-18 09:54:05+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: ja_JP */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "予約済み"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "キャンセル済み"; +"BookingAttendanceStatus.canceled" = "キャンセル済み"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "チェックイン"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "ノーショー"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "不明"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "出席率"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "予約番号%1$dの出席状況を変更できません"; +"BookingDetailsView.attendanceStatus.failureMessage." = "予約 #%1$dの出席状況を変更できません。"; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "メモを追加"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "メモを追加"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "これは非公開のメモです。 顧客と共有されることはありません。"; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "予約メモ"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "予約メモ"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "予約メモ"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "いいえ、そのままにします"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "はい、キャンセルします"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "この予約をキャンセルしてもよいですか ?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ が %3$@ の「%2$@」に出席できなくなりました。"; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "予約をキャンセル"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "予約 #%1$dをキャンセルできません。"; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "請求先住所"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "ステータス"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "予約 #%1$dを支払い済みとしてマークできません。"; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "予約番号%1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "支払い"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "返金を実行"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "支払い済みとしてマーク"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "コメントをゴミ箱に移動する"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "キャンセル"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "変更を破棄"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "この変更を破棄してもよいですか ?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "完了"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "複数のストア"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "%1$@ でサインアップ"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "サービス"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "音声ファイル"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "完了"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "新しいストアを始めますか ?"; @@ -8410,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "予約"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "有料"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "返金済み"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "不明"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "未払い"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "より多くの結果を表示するには、検索キーワードを調整してみてください"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "サービスまたはイベントが見つかりません"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "サービス \/ イベントを検索"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "サービス \/ イベント"; diff --git a/WooCommerce/Resources/ko.lproj/Localizable.strings b/WooCommerce/Resources/ko.lproj/Localizable.strings index 228f17bfd5f..24243320a02 100644 --- a/WooCommerce/Resources/ko.lproj/Localizable.strings +++ b/WooCommerce/Resources/ko.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-04 09:54:05+0000 */ +/* Translation-Revision-Date: 2025-11-18 09:54:05+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: ko_KR */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "예약됨"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "취소됨"; +"BookingAttendanceStatus.canceled" = "취소됨"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "체크인됨"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "참석 안 함"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "알 수 없음"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "참석자"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "%1$d번 예약의 참석 상태를 변경할 수 없음"; +"BookingDetailsView.attendanceStatus.failureMessage." = "%1$d 예약의 참석 상태를 변경할 수 없습니다."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "메모 추가"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "메모 추가"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "비공개 메모입니다. 고객과 공유되지 않습니다."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "예약 메모"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "예약 메모"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "예약 메모"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "아니요, 유지합니다"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "예, 취소합니다"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "예약을 취소하시겠어요?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ 님은 더 이상 %3$@에 열리는 \"%2$@\"에 참석할 수 없습니다."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "예약 취소"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "%1$d 예약을 취소할 수 없음"; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "청구 주소"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "상태"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "%1$d 예약 번호를 결제됨으로 표시할 수 없습니다."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "예약 #%1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "결제"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "환불 발행"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "결제됨으로 표시"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "댓글을 휴지통으로 이동"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "취소"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "변경 사항 취소"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "이 변경 사항을 취소하시겠습니까?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "완료"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "여러 스토어"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "가입 %1$@"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "서비스"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "오디오"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "완료"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "새 스토어를 시작하시나요?"; @@ -8410,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "예약"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "유료"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "환불됨"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "알 수 없음"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "미결제"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "더 많은 결과를 보려면 검색어를 조정해 보세요."; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "서비스 또는 이벤트를 찾을 수 없음"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "서비스 검색"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "서비스\/이벤트"; diff --git a/WooCommerce/Resources/nl.lproj/Localizable.strings b/WooCommerce/Resources/nl.lproj/Localizable.strings index 31fd1885fd1..a570fc2f8ca 100644 --- a/WooCommerce/Resources/nl.lproj/Localizable.strings +++ b/WooCommerce/Resources/nl.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-04 17:54:04+0000 */ +/* Translation-Revision-Date: 2025-11-18 11:54:04+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: nl */ @@ -794,7 +794,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "Geboekt"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "Geannuleerd"; +"BookingAttendanceStatus.canceled" = "Geannuleerd"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "Ingecheckt"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "No-show"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "Onbekend"; @@ -827,13 +833,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "Aanwezigheid"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "Kan de aanwezigheidsstatus van boeking #%1$d niet wijzigen"; +"BookingDetailsView.attendanceStatus.failureMessage." = "Kan de aanwezigheidsstatus van reserveringsnr. %1$d niet wijzigen."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "Opmerking toevoegen"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "Een opmerking toevoegen"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "Dit is een privébericht. Het wordt niet gedeeld met de klant."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "Opmerkingen bij boeking"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "Opmerking bij reservering"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "Opmerking bij reservering"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "Nee, houden"; @@ -841,12 +853,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "Ja, annuleren"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "Weet je zeker dat je deze reservering wilt annuleren?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ kan niet meer deelnemen aan '%2$@' op %3$@."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "Boeking annuleren"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "Kan reserveringsnr. %1$d niet annuleren."; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "Factuuradres"; @@ -862,6 +880,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "Status"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "Kan reserveringsnr. %1$d niet markeren als betaald."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "Reserveringsnr. %1$d"; @@ -880,9 +901,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "Betaling"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "Restitueren"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "Markeren als betaald"; @@ -3552,6 +3570,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "Verplaatst de reactie naar de prullenbak"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "Annuleren"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "Wijzigingen annuleren"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "Weet je zeker dat je deze wijzigingen wilt annuleren?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "Klaar"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "Meerdere winkels"; @@ -4566,6 +4596,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "%1$@aanmeldkosten"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "Dienst"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7467,6 +7500,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "audio"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "Klaar"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "Begin je een nieuwe winkel?"; @@ -8407,9 +8443,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "Boekingen"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "Betaald"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "Terugbetaald"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "Onbekend"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "Onbetaald"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "Probeer je zoekterm aan te passen om meer resultaten te zien"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "Geen dienst of gebeurtenis gevonden"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "Dienst\/evenement zoeken"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "Dienst\/gebeurtenis"; diff --git a/WooCommerce/Resources/pt-BR.lproj/Localizable.strings b/WooCommerce/Resources/pt-BR.lproj/Localizable.strings index 823d2e0c858..2c2301bb799 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-11-03 21:54:18+0000 */ +/* Translation-Revision-Date: 2025-11-18 15:54:04+0000 */ /* Plural-Forms: nplurals=2; plural=(n > 1); */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: pt_BR */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "Reservado"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "Cancelado"; +"BookingAttendanceStatus.canceled" = "Cancelada"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "Check-in feito"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "Não comparecimento"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "Desconhecido"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "Comparecimento"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "Não foi possível alterar o status de presença da reserva n.º %1$d"; +"BookingDetailsView.attendanceStatus.failureMessage." = "Não é possível alterar o status de presença da reserva %1$d."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "Adicionar nota"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "Adicionar nota"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "Esta é uma nota particular. Não será compartilhada com o cliente."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "Anotações da reserva"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "Nota de reserva"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "Nota de reserva"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "Não, continuar"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "Sim, cancelar"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "Tem certeza de que deseja cancelar esta reserva?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ não poderá mais participar de \"%2$@\" em %3$@."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "Cancelar reserva"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "Não é possível cancelar a reserva %1$d."; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "Endereço de faturamento"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "Status"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "Não foi possível marcar a reserva %1$d como paga."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "Reserva n.º %1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "Pagamento"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "Emitir reembolso"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "Marcar como paga"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "Move o comentário para a lixeira"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "Cancelar"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "Descartar alterações"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "Tem certeza de que deseja descartar essas alterações?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "Concluído"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "Várias lojas"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "%1$@ de taxa de inscrição"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "Serviço"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "áudio"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "Concluído"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "Quer começar uma nova loja?"; @@ -8410,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "Reservas"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "Paga"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "Reembolsada"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "Desconhecida"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "Não paga"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "Tente ajustar o termo de busca para ver mais resultados"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "Nenhum serviço ou evento encontrado"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "Pesquisar serviço\/evento"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "Serviço\/Evento"; diff --git a/WooCommerce/Resources/ru.lproj/Localizable.strings b/WooCommerce/Resources/ru.lproj/Localizable.strings index 890dbaa4da3..0de2f0d27e9 100644 --- a/WooCommerce/Resources/ru.lproj/Localizable.strings +++ b/WooCommerce/Resources/ru.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-04 17:54:05+0000 */ +/* Translation-Revision-Date: 2025-11-18 18:54:12+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 */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "Забронировано"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "Отмена"; +"BookingAttendanceStatus.canceled" = "Отменено"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "Регистрация состоялась"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "Регистрация не состоялась"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "Неизвестно"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "Встреча"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "Не удалось изменить статус участия бронирования номер %1$d"; +"BookingDetailsView.attendanceStatus.failureMessage." = "Не удалось изменить статус участия в бронировании № %1$d."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "Добавить примечание"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "Добавить примечание"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "Это конфиденциальное примечание. Оно не будет передано клиенту."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "Примечания к бронированию"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "Примечание к бронированию"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "Примечание к бронированию"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "Нет, не отменять"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "Да, отменить"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "Вы действительно хотите отменить бронирование?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ больше не сможет участвовать в «%2$@» в %3$@."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "Отменить бронирование"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "Не удалось отменить бронирование № %1$d"; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "Платёжный адрес"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "Статус"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "Не удалось отметить бронирование № %1$d как оплаченное."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "Номер бронирования: %1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "Оплата"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "Оформить возврат"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "Отметить как оплаченное"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "Отправить комментарий в Корзину"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "Отмена"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "Отменить изменения"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "Вы действительно хотите отменить эти изменения?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "Готово"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "Несколько магазинов"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "Регистрация %1$@"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "Услуга"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "аудио"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "Готово"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "Запускаете новый магазин?"; @@ -8410,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "Бронирование"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "Оплачено"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "Произведён возврат средств"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "Неизвестно"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "Не оплачено"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "Уточните поисковый запрос, чтобы получить больше результатов"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "Сервис или событие не найдены"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "Поиск услуги\/события"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "Сервис\/событие"; diff --git a/WooCommerce/Resources/sv.lproj/Localizable.strings b/WooCommerce/Resources/sv.lproj/Localizable.strings index e6043c801c7..31992fc0c18 100644 --- a/WooCommerce/Resources/sv.lproj/Localizable.strings +++ b/WooCommerce/Resources/sv.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-06 10:54:03+0000 */ +/* Translation-Revision-Date: 2025-11-18 18:54:03+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: sv_SE */ @@ -797,11 +797,14 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "Bokad"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "Avbruten"; +"BookingAttendanceStatus.canceled" = "Avbruten"; /* Title for 'Checked In' booking attendance status. */ "BookingAttendanceStatus.checkedIn" = "Incheckad"; +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "Uteblivande"; + /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "Okänd"; @@ -833,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "Deltagande"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "Kan inte ändra närvarostatus för bokning %1$d"; +"BookingDetailsView.attendanceStatus.failureMessage." = "Det gick inte att ändra närvarostatus för bokning %1$d."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "Lägg till anteckning"; + +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "Detta är en privat anteckning. Den kommer inte att delas med kunden."; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "Lägg till en anteckning"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "Bokningsanteckning"; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "Bokningsanteckningar"; +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "Bokningsanteckning"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "Nej, behåll den"; @@ -847,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "Ja, annullera den"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "Är du säker på att du vill avbryta den här bokningen?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ kommer inte längre att kunna närvara på ”%2$@” den %3$@."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "Annullera bokning"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "Det gick inte att avbryta bokning %1$d."; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "Faktureringsadress"; @@ -868,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "Status"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "Det gick inte att markera bokning %1$d som betald."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "Bokning %1$d"; @@ -886,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "Betalning"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "Utfärda återbetalning"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "Markera som betald"; @@ -3558,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "Flyttar kommentaren till papperskorgen"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "Avbryt"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "Ignorera ändringarna"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "Är du säker på att du vill åsidosätta de här ändringarna?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "Klar"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "Flera butiker"; @@ -4572,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "Registrering för %1$@"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "Tjänst"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7473,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "ljud"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "Klar"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "Ska du starta en ny butik?"; @@ -8413,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "Bokningar"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "Betald"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "Återbetald"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "Okänd"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "Obetald"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "Prova att justera din sökterm för att se fler resultat"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "Ingen tjänst eller händelse hittades"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "Sök tjänst\/händelse"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "Tjänst\/händelse"; diff --git a/WooCommerce/Resources/tr.lproj/Localizable.strings b/WooCommerce/Resources/tr.lproj/Localizable.strings index 91e053b3616..a5522ca6043 100644 --- a/WooCommerce/Resources/tr.lproj/Localizable.strings +++ b/WooCommerce/Resources/tr.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2025-11-03 13:54:21+0000 */ +/* Translation-Revision-Date: 2025-11-20 13:54:07+0000 */ /* Plural-Forms: nplurals=2; plural=(n > 1); */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: tr */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "Rezerve Etti"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "İptal Etti"; +"BookingAttendanceStatus.canceled" = "İptal edildi"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "Giriş yaptı"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "Gelmedi"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "Bilinmiyor"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "Katılım"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "%1$d Numaralı Rezervasyonun katılım durumu değiştirilemiyor"; +"BookingDetailsView.attendanceStatus.failureMessage." = "%1$d numaralı Rezervasyonun katılım durumu değiştirilemiyor."; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "Not ekle"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "Not ekle"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "Bu özel bir nottur. Bu, müşteriyle paylaşılmayacak."; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "Rezervasyon notları"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "Rezervasyon notu"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "Rezervasyon notu"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "Hayır, sakla"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "Evet, iptal et"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "Bu rezervasyonu iptal etmek istediğinizden emin misiniz?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ artık şuna %3$@ tarihinde katılamayacak: “%2$@”."; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "Rezervasyonu iptal edin"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "%1$d numaralı Rezervasyon iptal edilemiyor."; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "Fatura adresi"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "Durum"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "%1$d numaralı Rezervasyon ödendi olarak işaretlenemedi."; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "Rezervasyon No.%1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "Ödeme"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "Para iadesi düzenle"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "Ödendi olarak işaretle"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "Yorumu Çöp Kutusu'na taşır"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "İptal Et"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "Değişiklikleri iptal et"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "Bu değişiklikleri atmak istediğinizden emin misiniz?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "Tamam"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "Birden Fazla Mağaza"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "%1$@ kayıt ücreti"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "Hizmet"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7467,6 +7500,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "ses"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "Tamam"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "Yeni bir mağaza mı açıyorsunuz?"; @@ -8407,9 +8443,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "Rezervasyonlar"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "Ücretli"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "Geri ödeme yapıldı"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "Bilinmiyor"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "Ödenmemiş"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "Daha fazla sonuç görmek için arama teriminizi düzenlemeyi deneyin"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "Hizmet veya etkinlik bulunamadı"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "Hizmet\/etkinlik ara"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "Hizmet\/Etkinlik"; diff --git a/WooCommerce/Resources/zh-Hans.lproj/Localizable.strings b/WooCommerce/Resources/zh-Hans.lproj/Localizable.strings index d70cf27c29b..1885f365e58 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-11-04 11:54:04+0000 */ +/* Translation-Revision-Date: 2025-11-19 09:54:13+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: zh_CN */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "已预订"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "已取消"; +"BookingAttendanceStatus.canceled" = "已取消"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "已签到"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "失约"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "未知"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "出席情况"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "无法更改预订 #%1$d 的出勤状态"; +"BookingDetailsView.attendanceStatus.failureMessage." = "无法更改预订 #%1$d 的出勤状态。"; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "添加备注"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "添加说明"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "这是一条私人备注。 它将不会与客户共享。"; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "预订说明"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "预订备注"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "预订备注"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "否,保留"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "是,取消"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "是否确定要取消此预订?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ 将无法再参加 %3$@ 的“%2$@”。"; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "取消预订"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "无法取消预订 #%1$d。"; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "账单地址"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "状态"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "无法将预订 #%1$d 标记为已支付。"; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "预订编号:%1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "付款"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "发放退款"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "标记为已付款"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "将评论移动至回收站"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "取消"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "放弃更改"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "是否确定要放弃这些更改?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "完成"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "多个商店"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "%1$@ 注册费"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "服务"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "音频"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "完成"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "开设新商店?"; @@ -8410,9 +8446,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "预订"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "已支付"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "已退款"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "未知"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "未支付"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "尝试调整您的搜索字词,以查看更多结果"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "未找到服务或事件"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "搜索服务\/事件"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "服务\/事件"; diff --git a/WooCommerce/Resources/zh-Hant.lproj/Localizable.strings b/WooCommerce/Resources/zh-Hant.lproj/Localizable.strings index be18c6e7e97..cb309049726 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-11-04 09:54:04+0000 */ +/* Translation-Revision-Date: 2025-11-18 09:54:05+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/2.4.0-alpha */ /* Language: zh_TW */ @@ -797,7 +797,13 @@ which should be translated separately and considered part of this sentence. */ "BookingAttendanceStatus.booked" = "已預訂"; /* Title for 'Cancelled' booking attendance status. */ -"BookingAttendanceStatus.cancelled" = "已取消"; +"BookingAttendanceStatus.canceled" = "已取消"; + +/* Title for 'Checked In' booking attendance status. */ +"BookingAttendanceStatus.checkedIn" = "已報到"; + +/* Title for 'No Show' booking attendance status. */ +"BookingAttendanceStatus.noShow" = "缺席"; /* Title for 'Unknown' booking attendance status. */ "BookingAttendanceStatus.unknown" = "不明"; @@ -830,13 +836,19 @@ which should be translated separately and considered part of this sentence. */ "BookingDetailsView.attendance.headerTitle" = "出席"; /* Content of error presented when updating the attendance status of a Booking fails. It reads: Unable to change status of Booking #{Booking number}. Parameters: %1$d - Booking number */ -"BookingDetailsView.attendanceStatus.updateFailed.message" = "無法變更預訂編號 #%1$d 的出席狀態"; +"BookingDetailsView.attendanceStatus.failureMessage." = "無法變更預訂編號 %1$d 的出席狀態。"; + +/* Add a booking note section in booking details view. */ +"BookingDetailsView.bookingNote.addNoteRow.title" = "新增備註"; -/* Add a note row title in booking notes section in booking details view. */ -"BookingDetailsView.bookingNotes.addANoteRow.title" = "新增備註"; +/* Footer text for the `Booking note` section in the booking details screen. */ +"BookingDetailsView.bookingNote.footerText" = "這是私人備註。 不會與顧客分享。"; -/* Header title for the 'Booking notes' section in the booking details screen. */ -"BookingDetailsView.bookingNotes.headerTitle" = "預訂備註"; +/* Header title for the 'Booking note' section in the booking details screen. */ +"BookingDetailsView.bookingNote.headerTitle" = "預訂備註"; + +/* Title of navigation bar when editing a booking note. */ +"BookingDetailsView.bookingNote.navbar.title" = "預訂備註"; /* Cancel button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.cancelAction" = "不,保留"; @@ -844,12 +856,18 @@ which should be translated separately and considered part of this sentence. */ /* Confirm button title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.confirmAction" = "是,取消"; +/* Generic message for the booking cancellation confirmation alert. */ +"BookingDetailsView.cancelation.alert.genericMessage" = "你確定要取消此筆預訂嗎?"; + /* Message for the booking cancellation confirmation alert. %1$@ is customer name, %2$@ is product name, %3$@ is booking date. */ "BookingDetailsView.cancelation.alert.message" = "%1$@ 將無法於 %3$@ 出席「%2$@」。"; /* Title for the booking cancellation confirmation alert. */ "BookingDetailsView.cancelation.alert.title" = "取消預訂"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to cancel Booking #{Booking number}. Parameters: %1$d - Booking number */ +"BookingDetailsView.cancellation.failureMessage" = "無法取消預訂編號 %1$d。"; + /* Billing address row title in customer section in booking details view. */ "BookingDetailsView.customer.billingAddress.title" = "帳單地址"; @@ -865,6 +883,9 @@ which should be translated separately and considered part of this sentence. */ /* 'Status' row title in attendance section in booking details view. */ "BookingDetailsView.customer.status.title" = "狀態"; +/* Content of error presented when cancelling a Booking fails. It reads: Unable to mark Booking #{Booking number} as paid. Parameters: %1$d - Booking number */ +"BookingDetailsView.markAsPaid.failureMessage" = "無法將預訂編號 %1$d 標示為已付款。"; + /* Booking Details screen nav bar title. %1$d is a placeholder for the booking ID. */ "BookingDetailsView.navTitle" = "預訂 #%1$d"; @@ -883,9 +904,6 @@ which should be translated separately and considered part of this sentence. */ /* Header title for the 'Payment' section in the booking details screen. */ "BookingDetailsView.payment.headerTitle" = "付款"; -/* Title for 'Issue refund' button in payment section in booking details view. */ -"BookingDetailsView.payment.issueRefund.title" = "核發退款"; - /* Title for 'Mark as paid' button in payment section in booking details view. */ "BookingDetailsView.payment.markAsPaid.title" = "標示為已付款"; @@ -3555,6 +3573,18 @@ If your translation of that term also happens to contains a hyphen, please be su /* Trash Action Spoken hint */ "Moves the comment to Trash" = "將這則留言移到垃圾桶"; +/* Cancel button title for the discard changes confirmation dialog in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.cancelAction" = "取消"; + +/* Destructive action button title to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.discardAction" = "捨棄變更"; + +/* Title for the confirmation dialog when the user attempts to discard changes in the multiline text editor. */ +"MultilineEditableTextDetailView.discardChanges.alert.title" = "你確定要捨棄這些變更?"; + +/* Navigation bar button title used to save changes and close the multiline text editor. */ +"MultilineEditableTextDetailView.doneButton.title" = "完成"; + /* Title of multiple stores as part of Jetpack benefits. */ "Multiple Stores" = "經營多家商店"; @@ -4569,6 +4599,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Description of the subscription conditions for a subscription product, with signup fees but no trial.Reads as: '$25.00 signup'. */ "ProductRowViewModel.formattedProductSubscriptionConditionsWithoutTrial" = "註冊費只需 %1$@"; +/* Bookable product type label interpretation as Service. Presented in product type picker in filters. */ +"ProductType.service" = "服務"; + /* Display label for the composite product's component option type Product section title if there is more than one product. Product section title in Review Order screen if there is more than one product. @@ -7470,6 +7503,9 @@ If your translation of that term also happens to contains a hyphen, please be su /* Label displayed on audio media items. */ "audio" = "音訊"; +/* Button to dismiss a web view */ +"authenticatableWebView.done" = "完成"; + /* Title for the link for site creation guide. */ "authenticationConstants.siteCreationGuideButtonTitle" = "是否開設新商店?"; @@ -8407,9 +8443,27 @@ If your translation of that term also happens to contains a hyphen, please be su /* Title of the booking list view */ "bookingListView.view.title" = "預訂"; +/* Status of a paid booking */ +"bookingPaymentStatus.title.paid" = "已付款"; + +/* Status of a refunded booking */ +"bookingPaymentStatus.title.refunded" = "已退款"; + +/* Status of a booking with unexpected payment status */ +"bookingPaymentStatus.title.unknown" = "未知"; + +/* Status of an unpaid booking */ +"bookingPaymentStatus.title.unpaid" = "未付款"; + +/* Message on the empty search result view of the booking service/event selector view */ +"bookingServiceEventSelectorView.emptySearchDescription" = "請嘗試調整搜尋字詞以查看更多結果"; + /* Text on the empty view of the booking service/event selector view */ "bookingServiceEventSelectorView.noMembersFound" = "找不到服務或活動"; +/* Prompt in the search bar of the booking service/event selector view */ +"bookingServiceEventSelectorView.searchPrompt" = "搜尋服務\/事件"; + /* Title of the booking service/event selector view */ "bookingServiceEventSelectorView.title" = "服務\/活動"; From 0548ef5efdbef27ba0cd5d03763cbc85b63b9567 Mon Sep 17 00:00:00 2001 From: Automattic Release Bot Date: Mon, 24 Nov 2025 01:33:14 -0800 Subject: [PATCH 6/7] Update metadata translations --- fastlane/metadata/ar-SA/release_notes.txt | 2 +- fastlane/metadata/de-DE/release_notes.txt | 2 +- fastlane/metadata/default/release_notes.txt | 2 +- fastlane/metadata/es-ES/release_notes.txt | 2 +- fastlane/metadata/fr-FR/release_notes.txt | 2 +- fastlane/metadata/he/release_notes.txt | 2 +- fastlane/metadata/id/release_notes.txt | 2 +- fastlane/metadata/it/release_notes.txt | 2 +- fastlane/metadata/ja/release_notes.txt | 2 +- fastlane/metadata/ko/release_notes.txt | 2 +- fastlane/metadata/nl-NL/release_notes.txt | 2 +- fastlane/metadata/pt-BR/release_notes.txt | 2 +- fastlane/metadata/ru/release_notes.txt | 2 +- fastlane/metadata/sv/release_notes.txt | 2 +- fastlane/metadata/tr/release_notes.txt | 2 +- fastlane/metadata/zh-Hans/release_notes.txt | 2 +- fastlane/metadata/zh-Hant/release_notes.txt | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/fastlane/metadata/ar-SA/release_notes.txt b/fastlane/metadata/ar-SA/release_notes.txt index 02039c077f4..e38cf41c9bc 100644 --- a/fastlane/metadata/ar-SA/release_notes.txt +++ b/fastlane/metadata/ar-SA/release_notes.txt @@ -1 +1 @@ -يعمل هذا التحديث على تحسين استقرار التطبيق وقابليته للاستخدام. لقد حسّنّا التوافق مع المتاجر التي تستخدم عناوين مواقع عبر بروتوكول HTTP، كما قمنا بتحسين آلية تحميل علامات التبويب بناءً على الحالات المحفوظة، وأصلحنا مشكلة كانت تمنع إغلاق لوحة المفاتيح أثناء تحرير عناوين المنتجات. +يوفر هذا التحديث ميزة الضغط للدفع (Tap to Pay) في المملكة المتحدة بكل سهولة عبر Stripe، وتلميحات خطأ إعداد البطاقة بشكل أوضح، وتسجيل الدخول التلقائي إلى SSO للوصول إلى مهام المشرف الرئيسية. يختار إنشاء الطلب الآن التباينات المناسبة، ويمكن للتجار المؤهلين مشاركة ملاحظات نقطة البيع السريعة. diff --git a/fastlane/metadata/de-DE/release_notes.txt b/fastlane/metadata/de-DE/release_notes.txt index 0e319ae31eb..35adf1ce3b5 100644 --- a/fastlane/metadata/de-DE/release_notes.txt +++ b/fastlane/metadata/de-DE/release_notes.txt @@ -1 +1 @@ -Dieses Update verbessert die Stabilität und Benutzerfreundlichkeit der App. Wir haben die Kompatibilität für Shops mit HTTP-Website-Adressen verbessert, das Laden von Tabs basierend auf gespeicherten Staaten optimiert und ein Problem behoben, durch das die Tastatur beim Bearbeiten von Produkttiteln nicht ausgeblendet werden konnte. +Dieses Update bietet in Großbritannien reibungsloses Tap to Pay über Stripe, verständlichere Tipps zu Fehlern beim Onboarding von Karten und automatische SSO-Anmeldungen für wichtige Administratoraufgaben. Bei der Erstellung von Bestellungen werden jetzt die richtigen Varianten ausgewählt, und berechtigte Händler können schnelles POS-Feedback teilen. diff --git a/fastlane/metadata/default/release_notes.txt b/fastlane/metadata/default/release_notes.txt index fd8754ac190..a3580be3cd3 100644 --- a/fastlane/metadata/default/release_notes.txt +++ b/fastlane/metadata/default/release_notes.txt @@ -1 +1 @@ -This update improves app stability and usability. We’ve enhanced compatibility for stores using HTTP site addresses, optimized how tabs load based on saved states, and fixed an issue that prevented dismissing the keyboard when editing product titles. \ No newline at end of file +This update brings smooth UK Tap to Pay via Stripe, clearer card onboarding error tips, and automatic SSO sign-ins for key admin tasks. Order creation now picks the right variations, and eligible merchants can share quick POS feedback. \ 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 54342fafcd9..97a7cdd492e 100644 --- a/fastlane/metadata/es-ES/release_notes.txt +++ b/fastlane/metadata/es-ES/release_notes.txt @@ -1 +1 @@ -Esta actualización mejora la estabilidad y usabilidad de la aplicación. Hemos mejorado la compatibilidad para tiendas que usan direcciones de sitios HTTP, hemos optimizado la carga de las pestañas en función de los estados guardados y hemos corregido un problema que impedía descartar el teclado al editar los títulos de los productos. +Con esta actualización, podrás disfrutar de un Tap to Pay vía Stripe en el Reino Unido, consejos de error de incorporación de tarjetas más claros e inicios de sesión SSO automáticos para tareas clave de administración. La creación de pedidos ahora elige las variaciones adecuadas, y los vendedores elegibles pueden compartir comentarios rápidos del punto de venta. diff --git a/fastlane/metadata/fr-FR/release_notes.txt b/fastlane/metadata/fr-FR/release_notes.txt index 218b27d65ea..cd2bfc188c2 100644 --- a/fastlane/metadata/fr-FR/release_notes.txt +++ b/fastlane/metadata/fr-FR/release_notes.txt @@ -1 +1 @@ -Cette mise à jour améliore la stabilité et la convivialité de l’application. Nous avons amélioré la compatibilité pour les boutiques utilisant des adresses de site HTTP, optimisé le chargement des onglets en fonction des états enregistrés et résolu un problème qui empêchait le masquage du clavier lors de la modification des titres de produits. +Cette mise à jour apporte un service Tap to Pay fluide au Royaume-Uni via Stripe, des conseils d’erreur d’intégration de carte plus clairs et des connexions SSO automatiques pour les tâches d’administration principales. La création de commande sélectionne désormais les bonnes variantes et les commerçants éligibles peuvent partager des retours PDV rapides. diff --git a/fastlane/metadata/he/release_notes.txt b/fastlane/metadata/he/release_notes.txt index 586abfbaa45..9ffe755f42c 100644 --- a/fastlane/metadata/he/release_notes.txt +++ b/fastlane/metadata/he/release_notes.txt @@ -1 +1 @@ -העדכון הזה משפר את היציבות והשימושיות של האפליקציה. שיפרנו את התאימות לחנויות באמצעות כתובות אתרים של HTTP, שיפרנו את הטעינה של לשוניות לפי מצבים שמורים ותיקנו בעיה שמנעה את ביטול המקלדת כאשר עורכים כותרות מוצרים. +בעדכון זה הוספנו את Tap To Pay בבריטניה לעבודה חלקה דרך Stripe, עצות ברורות יותר לגבי שגיאות בכרטיס ההצטרפות והתחברות אוטומטתית עם כניסה יחידה (SSO) במשירות העיקריות של מנהל המערכת. האפשרות ליצירת הזמנה בוחרת כעת את הסוגים המתאימים, והסוחרים הרלוונטיים יכולים לשתף משוב מהיר על POS. diff --git a/fastlane/metadata/id/release_notes.txt b/fastlane/metadata/id/release_notes.txt index 469c8fa7b07..2c9df1a2f76 100644 --- a/fastlane/metadata/id/release_notes.txt +++ b/fastlane/metadata/id/release_notes.txt @@ -1 +1 @@ -Pembaruan ini meningkatkan kestabilan dan kebergunaan aplikasi. Kami telah menyempurnakan kompatibilitas untuk toko yang menggunakan alamat situs HTTP, mengoptimalkan pemuatan tab berdasarkan status tersimpan, dan memperbaiki masalah yang mencegah ditutupnya keyboard saat mengedit judul produk. +Pembaruan ini memberikan kemudahan lewat fitur Ketuk untuk Bayar via Stripe di wilayah Inggris, tips yang lebih jelas untuk memperbaiki error dalam penyiapan kartu, dan SSO otomatis untuk tugas-tugas utama admin. Kini pembuatan pesanan dapat memilih variasi yang tepat, dan penjual yang memenuhi syarat dapat membagikan feedback cepat dari POS. diff --git a/fastlane/metadata/it/release_notes.txt b/fastlane/metadata/it/release_notes.txt index 60306d4d5db..5ea5f23c45c 100644 --- a/fastlane/metadata/it/release_notes.txt +++ b/fastlane/metadata/it/release_notes.txt @@ -1 +1 @@ -Questo aggiornamento migliora la stabilità e l'usabilità dell'app. Abbiamo migliorato la compatibilità per i negozi che usano gli indirizzi dei siti HTTP, ottimizzato il caricamento delle schede in base agli stati salvati e risolto un problema che impediva di ignorare la tastiera durante la modifica dei titoli dei prodotti. +Questo aggiornamento offre Tocca per pagare in Gran Bretagna tramite Stripe, suggerimenti più chiari per l'errore di avviamento della carta e accessi SSO automatici per le attività di amministrazione principali. La creazione degli ordini ora sceglie le varianti giuste e i venditori idonei possono condividere un rapido feedback POS. diff --git a/fastlane/metadata/ja/release_notes.txt b/fastlane/metadata/ja/release_notes.txt index a77fb84ffef..66f5cf6240e 100644 --- a/fastlane/metadata/ja/release_notes.txt +++ b/fastlane/metadata/ja/release_notes.txt @@ -1 +1 @@ -今回の更新により、アプリの安定性と使いやすさが向上します。 HTTP サイトアドレスを使用するストアの互換性を強化したほか、保存された状態に基づいてタブを読み込む方法を最適化しました。また商品タイトルの編集時にキーボードを非表示にできなかった問題を修正しました。 +今回の更新により、Stripe 経由の英国の Tap to Pay がスムーズに利用できるようになるほか、カードのオンボーディングエラーに関するヒントがより明確になります。また、主要な管理タスクで自動 SSO ログインが可能になります。 注文の作成で適切なバリエーションが選択されるようになり、また対象販売者が POS フィードバックを簡単に共有できるようになります。 diff --git a/fastlane/metadata/ko/release_notes.txt b/fastlane/metadata/ko/release_notes.txt index d1cde2efdf9..f63ff8a4c3b 100644 --- a/fastlane/metadata/ko/release_notes.txt +++ b/fastlane/metadata/ko/release_notes.txt @@ -1 +1 @@ -이 업데이트를 통해 앱 안정성과 유용성이 개선됩니다. HTTP 사이트 주소를 사용하는 스토어의 호환성을 강화하고, 저장된 상태에 따라 탭이 로드되는 방식을 최적화했으며, 상품 제목을 편집할 때 키보드를 닫을 수 없는 문제를 해결했습니다. +이번 업데이트로 Stripe를 통해 영국에서 Tap to Pay를 더욱 원활하게 사용할 수 있고, 카드 등록 과정에서 발생하는 오류에 대한 안내가 더 명확해졌으며, 주요 관리자 작업에는 SSO를 통한 자동 로그인이 지원됩니다. 이제 주문을 생성할 때 적합한 옵션이 선택되고, 적격 판매자는 POS 피드백을 빠르게 공유할 수 있습니다. diff --git a/fastlane/metadata/nl-NL/release_notes.txt b/fastlane/metadata/nl-NL/release_notes.txt index 217310f718b..9182fcc8adf 100644 --- a/fastlane/metadata/nl-NL/release_notes.txt +++ b/fastlane/metadata/nl-NL/release_notes.txt @@ -1 +1 @@ -Deze update verbetert de stabiliteit en bruikbaarheid van de app. We hebben de compatibiliteit verbeterd voor winkels die HTTP-siteadressen gebruiken, geoptimaliseerd hoe tabbladen laden op basis van opgeslagen statussen en een probleem opgelost waardoor het toetsenbord niet kon worden verborgen bij het bewerken van producttitels. +Deze update zorgt voor een soepele Tap to Pay-functie in het VK via Stripe, duidelijkere tips voor foutmeldingen voor onboarding van kaarten en automatische SSO-aanmeldingen voor belangrijke beheertaken. Bij het aanmaken van bestellingen worden nu de juiste variaties gekozen en verkopers die hiervoor in aanmerking komen, kunnen snelle POS-feedback delen. diff --git a/fastlane/metadata/pt-BR/release_notes.txt b/fastlane/metadata/pt-BR/release_notes.txt index 64a20c44a86..f851e501167 100644 --- a/fastlane/metadata/pt-BR/release_notes.txt +++ b/fastlane/metadata/pt-BR/release_notes.txt @@ -1 +1 @@ -Esta atualização melhora a estabilidade e usabilidade do aplicativo. Aprimoramos a compatibilidade para lojas que usam endereços de sites HTTP, otimizamos o carregamento das guias com base em estados salvos e corrigimos um problema que impedia o fechamento do teclado ao editar títulos de produtos. +Esta atualização oferece um Tap to Pay via Stripe simples no Reino Unido, dicas para o caso de erro de integração de cartão mais claras e login automático com SSO para tarefas de administração importantes. A criação do pedido agora escolhe as variações certas, e os comerciantes elegíveis podem compartilhar feedback rápido sobre o ponto de venda. diff --git a/fastlane/metadata/ru/release_notes.txt b/fastlane/metadata/ru/release_notes.txt index 7a4650bf813..4fefee8100c 100644 --- a/fastlane/metadata/ru/release_notes.txt +++ b/fastlane/metadata/ru/release_notes.txt @@ -1 +1 @@ -Это обновление повышает стабильность работы и удобство пользования приложениями. Мы повысили совместимость с магазинами, которые пользуются адресами HTTP, оптимизировали загрузку вкладок на основе сохранённых состояний и исправили ошибку, из-за которой не удавалось скрыть клавиатуру при редактировании названий товаров. +В этом обновлении: стабильная работа Tap to Pay через Stripe в Великобритании, более понятные подсказки при ошибках регистрации карт и автоматический вход в систему через SSO при выполнении ключевых задач администратора. Теперь при создании заказа выбираются нужные варианты, а продавцы, соответствующие требованиям, могут оставлять экспресс-отзывы на POS. diff --git a/fastlane/metadata/sv/release_notes.txt b/fastlane/metadata/sv/release_notes.txt index 2bc549e90f3..ca2f940b04e 100644 --- a/fastlane/metadata/sv/release_notes.txt +++ b/fastlane/metadata/sv/release_notes.txt @@ -1 +1 @@ -Denna uppdatering förbättrar appens stabilitet och användbarhet. Vi har förbättrat kompatibiliteten för butiker som använder HTTP-webbplatsadresser, optimerat hur flikar laddas baserat på sparade tillstånd och åtgärdat ett problem som förhindrade att tangentbordet avfärdades vid redigering av produktrubriker. +Den här uppdateringen inkluderar Tryck för att betala via Stripe i Storbritannien, tydligare felsökningstips för kortregistrering och automatiska SSO-inloggningar för viktiga administratörsuppgifter. Beställningsskapande väljer nu rätt variationer och berättigade handlare kan snabbt dela POS-feedback. diff --git a/fastlane/metadata/tr/release_notes.txt b/fastlane/metadata/tr/release_notes.txt index 3896e12c23b..a6fee2f71a8 100644 --- a/fastlane/metadata/tr/release_notes.txt +++ b/fastlane/metadata/tr/release_notes.txt @@ -1 +1 @@ -Bu güncelleme uygulama istikrarını ve kullanılabilirliğini artırır. HTTP site adreslerini kullanan mağazalar için uyumluluğu artırdık, sekmelerin kaydedilmiş durumlara göre nasıl yükleneceğini optimize ettik ve ürün başlıklarını düzenlerken klavyenin kapatılmasını engelleyen bir sorunu düzelttik. +Bu güncelleme İngiltere'de sorunsuz Stripe üzerinden Tap to Pay, daha net kart karşılama hata ipuçları ve önemli yönetici görevleri için otomatik SSO girişleri sunar. Sipariş oluşturma işlemi artık doğru varyasyonları seçer ve uygun satıcılar POS geri bildirimlerini hızlı bir şekilde paylaşabilir. diff --git a/fastlane/metadata/zh-Hans/release_notes.txt b/fastlane/metadata/zh-Hans/release_notes.txt index 21eff81b0c5..fb8cb2ec0a9 100644 --- a/fastlane/metadata/zh-Hans/release_notes.txt +++ b/fastlane/metadata/zh-Hans/release_notes.txt @@ -1 +1 @@ -本次更新提升了应用程序的稳定性和易用性。 我们增强了使用 HTTP 站点地址的商店的兼容性,优化了选项卡基于已保存状态的加载方式,并修复了导致编辑产品标题时无法关闭键盘的问题。 +本次更新带来了通过 Stripe 实现的流畅英国 Tap to Pay,更清晰的银行卡绑定错误提示,以及针对关键管理任务的 SSO 登录功能。 订单创建系统现可自动选择正确的变体,符合条件的商家可以快速共享 POS 反馈。 diff --git a/fastlane/metadata/zh-Hant/release_notes.txt b/fastlane/metadata/zh-Hant/release_notes.txt index f14d8613dad..86ebb97e91e 100644 --- a/fastlane/metadata/zh-Hant/release_notes.txt +++ b/fastlane/metadata/zh-Hant/release_notes.txt @@ -1 +1 @@ -本次更新提升了應用程式穩定度和可用度。 我們針對使用 HTTP 網站位址的商店強化相容性、根據儲存狀態將分頁載入方式最佳化,並且修正了導致編輯商品標題時無法關閉鍵盤的問題。 +這項更新可讓 Stripe 順利完成英國地區的「點選支付」、提供更明確的卡片申請錯誤秘訣,實現重要管理員工作的 SSO 自動登入。 現在訂單建立功能會挑選正確的款式,符合資格的商家則可分享簡短 POS 意見回饋。 From 23d538f034c3edcc8d1f8761d5f0f93cdfb1838b Mon Sep 17 00:00:00 2001 From: Automattic Release Bot Date: Mon, 24 Nov 2025 01:33:28 -0800 Subject: [PATCH 7/7] Bump version number --- config/Version.Public.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/Version.Public.xcconfig b/config/Version.Public.xcconfig index f0766cdb2c8..27a41bf1df1 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.7.0.0 +VERSION_LONG = 23.7.0.1 VERSION_SHORT = 23.7