diff --git a/CHANGELOG.md b/CHANGELOG.md index e24205fe71d..5d2c878b89f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ +## 21.5 +Get ready for a smoother WooCommerce experience! This update brings smarter AI-powered product previews, instant dashboard stats, and improved email receipts for failed payments. We’ve also fine-tuned order creation, enhanced Jetpack setups, and enabled previews for coming-soon stores. Plus, we’ve addressed navigation, database recovery, and streamlined workflows. + ## 21.4 This update introduces the ability to hide specific stores from the store picker, perfect for agencies managing multiple sites. We’ve also enhanced plugin info fetching to handle unexpected data types, ensuring smoother performance. Additionally, a bug on iPad causing order creation issues with custom amounts has been resolved. Enjoy a more focused and reliable experience! diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 9053b14cd55..efbee196248 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,5 +1,9 @@ *** PLEASE FOLLOW THIS FORMAT: [] [] *** Use [*****] to indicate smoke tests of all critical flows should be run on the final IPA before release (e.g. major library or OS update). +21.6 +----- + + 21.5 ----- - [*] Blaze: if the AI is unable to provide suggestions in the creation form, the form will now automatically use product information to ensure all fields of the preview are populated. [https://github.com/woocommerce/woocommerce-ios/pull/14868] diff --git a/WooCommerce/Resources/AppStoreStrings.pot b/WooCommerce/Resources/AppStoreStrings.pot index 32ead6926ad..8df3be87baa 100644 --- a/WooCommerce/Resources/AppStoreStrings.pot +++ b/WooCommerce/Resources/AppStoreStrings.pot @@ -61,9 +61,9 @@ msgctxt "app_store_promo_text" msgid "Run your store from anywhere" msgstr "" -msgctxt "v21.4-whats-new" +msgctxt "v21.5-whats-new" msgid "" -"This update introduces the ability to hide specific stores from the store picker, perfect for agencies managing multiple sites. We’ve also enhanced plugin info fetching to handle unexpected data types, ensuring smoother performance. Additionally, a bug on iPad causing order creation issues with custom amounts has been resolved. Enjoy a more focused and reliable experience!\n" +"Get ready for a smoother WooCommerce experience! This update brings smarter AI-powered product previews, instant dashboard stats, and improved email receipts for failed payments. We’ve also fine-tuned order creation, enhanced Jetpack setups, and enabled previews for coming-soon stores. Plus, we’ve addressed navigation, database recovery, and streamlined workflows.\n" msgstr "" #. translators: This is a promo message that will be attached on top of a screenshot in the App Store. diff --git a/WooCommerce/Resources/en.lproj/Localizable.strings b/WooCommerce/Resources/en.lproj/Localizable.strings index 38a062928e4..2dec813e740 100644 --- a/WooCommerce/Resources/en.lproj/Localizable.strings +++ b/WooCommerce/Resources/en.lproj/Localizable.strings @@ -2225,7 +2225,6 @@ which should be translated separately and considered part of this sentence. */ Title for the button to cancel the payment methods screen Title of an option to dismiss the bulk edit action sheet Title of dismiss button presented when site credential login fails - Title of the alert dismiss action when the site cannot be launched from store onboarding > launch store screen. Title of the dismiss button on the store onboarding payments setup screen. */ "Cancel" = "Cancel"; @@ -2254,13 +2253,6 @@ which should be translated separately and considered part of this sentence. */ /* Title of the alert when there is an error adding new product tags. */ "Cannot Add Tags" = "Cannot Add Tags"; -/* Order gift card error notice message when the gift card cannot be applied. - Order gift card error notice title when the gift card cannot be applied. */ -"Cannot apply gift card to order" = "Cannot apply gift card to order"; - -/* Order gift card error thrown when the gift card cannot be applied. %1$@ is the detailed reason. */ -"Cannot apply gift card to order error: %1$@" = "Cannot apply gift card to order error: %1$@"; - /* The title of the alert when there is an error duplicating the product */ "Cannot duplicate product" = "Cannot duplicate product"; @@ -2270,8 +2262,7 @@ which should be translated separately and considered part of this sentence. */ /* Title of the alert when there is an error creating a new product category */ "Cannot Update Category" = "Cannot Update Category"; -/* The title of the alert when there is an error removing the image from a Product Variation if WooCommerce <4.7 - The title of the alert when there is an error updating the product */ +/* The title of the alert when there is an error updating the product */ "Cannot update product" = "Cannot update product"; /* Title of the notice when there is an error updating selected products */ @@ -2692,6 +2683,15 @@ 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."; +/* Error message when the cash amount entered is less than the order total. */ +"collectcashviewhelper.cashpaymentamountnotenough.errormessage" = "Amount must be more or equal to total."; + +/* Change due when the cash amount entered exceeds the order total.Reads as 'Change due: $1.23' */ +"collectcashviewhelper.changedue" = "Change due: %1$@"; + +/* Error message when the system fails to collect a cash payment. */ +"collectcashviewhelper.failedtocollectcashpayment.errormessage" = "Error trying to process payment. Try again."; + /* Error message when collecting an In-Person Payment and the order total has changed remotely. */ "collectOrderPaymentUseCase.error.message.orderTotalChanged" = "Order total has changed since the beginning of payment. Please go back and check the order is correct, then try the payment again."; @@ -3037,9 +3037,6 @@ which should be translated separately and considered part of this sentence. */ /* Error message informing the user that there was a problem subscribing to a site or feed. */ "Could not follow the site at the address specified." = "Could not follow the site at the address specified."; -/* Title of the alert when the site cannot be launched from store onboarding > launch store screen. */ -"Could not launch your store" = "Could not launch your store"; - /* Error message informing the user that there was a problem unsubscribing to a site or feed. */ "Could not unfollow the site at the address specified." = "Could not unfollow the site at the address specified."; @@ -3152,9 +3149,6 @@ which should be translated separately and considered part of this sentence. */ Text on the button that starts shipping label creation */ "Create Shipping Label" = "Create Shipping Label"; -/* The title of the shipping labels top banner in order details */ -"Create shipping labels from your device!" = "Create shipping labels from your device!"; - /* Title on the variations list screen when there are no variations */ "Create your first variation" = "Create your first variation"; @@ -3791,7 +3785,6 @@ which should be translated separately and considered part of this sentence. */ Dismiss the media picking action sheet Dismiss the shipment tracking action sheet Label for the banner Dismiss button - The title of the button to dismiss the banner in order details The title of the button to dismiss the banner on the products tab Title of the button to dismiss the banner notice in the add-ons view Title of the dismiss action button on the coupon list screen */ @@ -4091,9 +4084,6 @@ which should be translated separately and considered part of this sentence. */ /* Error message when updating notification settings fails when saving the store list for the store picker */ "editStoreListView.errorUpdatingNotificationSettings" = "There was an error when updating notification settings. Please try again."; -/* Footer of the Other Stores section on the Edit Store List view */ -"editStoreListView.otherStoresFooter" = "Stores that are not selected will be excluded from the store picker"; - /* Header of the Other Stores section on the Edit Store List view */ "editStoreListView.otherStoresHeader" = "Other stores"; @@ -4106,6 +4096,9 @@ which should be translated separately and considered part of this sentence. */ /* Title of the Edit Store List view */ "editStoreListView.title" = "Visible Stores"; +/* Footer of the Other Stores section on the Edit Store List view */ +"editStoreListView.unselectedStoresNote" = "Unselected stores will be excluded from the store picker and won't receive push notifications for new orders or product."; + /* Country option for a site address. */ "Egypt" = "Egypt"; @@ -4629,6 +4622,27 @@ which should be translated separately and considered part of this sentence. */ /* Header bar label on top of order list when filters are applied */ "Filtered Orders" = "Filtered Orders"; +/* Apply button on the Filter History view */ +"filterHistoryView.apply" = "Apply"; + +/* Cancel button on the Filter History view */ +"filterHistoryView.cancel" = "Cancel"; + +/* Button to clear all history on the Filter History view */ +"filterHistoryView.clearHistory" = "Clear History"; + +/* Message to confirm clearing all history on the Filter History view */ +"filterHistoryView.clearHistoryConfirmation" = "Are you sure you want to clear all the filter history?"; + +/* Label on the empty state of the Filter History view */ +"filterHistoryView.emptyState" = "No past filters found"; + +/* Header label of the Filter History view */ +"filterHistoryView.recent" = "Recent"; + +/* Title of the Filter History view */ +"filterHistoryView.title" = "Filter History"; + /* Accessibility hint for the filter history button on the filter list screen */ "filterListViewController.historyBarButtonItem.accessibilityHint" = "Filter history"; @@ -4847,13 +4861,6 @@ which should be translated separately and considered part of this sentence. */ /* Header of the gift card code text field in the order form. */ "Gift card code" = "Gift card code"; -/* Order gift card error notice message when the gift card is invalid. - Order gift card error notice title when the gift card is invalid. */ -"Gift card is invalid" = "Gift card is invalid"; - -/* Order gift card error notice title when the gift card is invalid. */ -"Gift card is not applied" = "Gift card is not applied"; - /* No comment provided by engineer. */ "Gift cards" = "Gift cards"; @@ -4862,7 +4869,6 @@ which should be translated separately and considered part of this sentence. */ "Gift Cards" = "Gift Cards"; /* The title of the button to give feedback about products beta features on the banner on the products tab - The title of the button to give feedback about shipping labels features on the banner in order details Title of the button to give feedback about the add-ons feature Title of the feedback action button on the coupon list screen Title on the navigation bar for the products feedback survey */ @@ -5504,21 +5510,12 @@ which should be translated separately and considered part of this sentence. */ /* Error message generated when announcement service is unable to return a valid endpoint. */ "Invalid endpoint" = "Invalid endpoint"; -/* Order gift card error thrown when the gift card is invalid. %1$@ is the detailed reason. */ -"Invalid gift card error: %1$@" = "Invalid gift card error: %1$@"; - /* Error when an empty Identifier is returned from the barcode scanner */ "Invalid Identifier" = "Invalid Identifier"; /* Error message for invalid format of ITN in Customs screen of Shipping Label flow */ "Invalid ITN format" = "Invalid ITN format"; -/* The title of the alert when there is an error with the package name */ -"Invalid Package Name" = "Invalid Package Name"; - -/* The title of the alert when there is an error updating the product SKU */ -"Invalid Product SKU" = "Invalid Product SKU"; - /* No comment provided by engineer. */ "Invalid Site Address" = "Invalid Site Address"; @@ -6037,6 +6034,9 @@ which should be translated separately and considered part of this sentence. */ /* Button title. Takes the user to the Enter account password screen. */ "Login with account password" = "Login with account password"; +/* Label indicating that the store is being synced in the Jetpack setup flow */ +"loginJetpackSetupCoordinator.syncingStore" = "Syncing store..."; + /* Subtitle displayed in the simplified prologue screen */ "loginProloguePageType.getStartedText" = "From your first sale to millions in revenue, Woo is with you. See why merchants trust us to power 3.9 million online stores."; @@ -6769,8 +6769,7 @@ which should be translated separately and considered part of this sentence. */ Dismiss button on the alert when there is an error uploading image(s) Dismisses the alert Ok button for dismissing alert helping users understand their site address - Submit button on prompt for user information. - Title of the alert dismiss action when the site cannot be launched from store onboarding > launch store screen. */ + Submit button on prompt for user information. */ "OK" = "OK"; /* +2 Days Section Header */ @@ -6804,9 +6803,6 @@ which should be translated separately and considered part of this sentence. */ /* Content of the banner notice on the Payment Method screen when user does not have permission to change the payment method. %1$@ is a placeholder for the store owner's name. %2$@ is a placeholder for the store owner's username. */ "Only the site owner can manage the shipping label payment methods. Please contact %1$@ (%2$@) to manage payment methods." = "Only the site owner can manage the shipping label payment methods. Please contact %1$@ (%2$@) to manage payment methods."; -/* Message of the alert when the site cannot be launched from store onboarding > launch store screen. */ -"Oops, some unexpected errors happened." = "Oops, some unexpected errors happened."; - /* Opens iOS's Device Settings for the app */ "Open Device Settings" = "Open Device Settings"; @@ -7554,9 +7550,6 @@ which should be translated separately and considered part of this sentence. */ /* Error message shown when Tap to Pay on iPhone cannot be used because the device does not meet minimum requirements. */ "Please check that your phone meets these requirements: iPhone XS or newer running iOS 16.7 or above. Contact support if this error shows on a supported device." = "Please check that your phone meets these requirements: iPhone XS or newer running iOS 16.7 or above. Contact support if this error shows on a supported device."; -/* Order gift card error notice message when the gift card is invalid. */ -"Please check the remaining balance of the gift card." = "Please check the remaining balance of the gift card."; - /* Error message shown when Tap to Pay on iPhone cannot be used because the Terms of Service acceptance flow failed, possibly due to issues with the Apple ID */ "Please check your Apple ID is valid, and then try again. A valid Apple ID is required to accept Apple's Terms of Service." = "Please check your Apple ID is valid, and then try again. A valid Apple ID is required to accept Apple's Terms of Service."; @@ -7866,6 +7859,9 @@ which should be translated separately and considered part of this sentence. */ /* 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"; @@ -8064,6 +8060,9 @@ which should be translated separately and considered part of this sentence. */ /* 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."; + /* 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"; @@ -8156,13 +8155,40 @@ which should be translated separately and considered part of this sentence. */ "pos.exitPOSModal.exitTitle" = "Exit Point of Sale mode?"; /* Text for the button appearing on the item list screen when there's an error loading products. */ -"pos.itemList.failedToLoadButtonTitle" = "Retry"; +"pos.itemList.failedToLoadProductsButtonTitle" = "Retry"; + +/* Text for the button 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.failedToLoadProductsNextPageButtonTitle" = "Try again"; + +/* Text appearing on the item list screen as subtitle when there's an error loading a page of products after the first. Shown inline with the previously loaded items above. */ +"pos.itemList.failedToLoadProductsNextPageSubtitle" = "An error occurred while loading products."; + +/* 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" = "Failed to load more items"; /* Text appearing on the item list screen as subtitle when there's an error loading products. */ -"pos.itemList.failedToLoadSubtitle" = "Give it another go?"; +"pos.itemList.failedToLoadProductsSubtitle" = "Give it another go?"; /* Text appearing on the item list screen when there's an error loading products. */ -"pos.itemList.failedToLoadTitle" = "Error loading products"; +"pos.itemList.failedToLoadProductsTitle" = "Error loading products"; + +/* Text for the button appearing on the item list screen when there's an error loading variations. */ +"pos.itemList.failedToLoadVariationsButtonTitle" = "Retry"; + +/* Text for the button 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.failedToLoadVariationsNextPageButtonTitle" = "Try again"; + +/* Text appearing on the item list screen as subtitle when there's an error loading a page of variations after the first. Shown inline with the previously loaded items above. */ +"pos.itemList.failedToLoadVariationsNextPageSubtitle" = "An error occurred while loading variations."; + +/* 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" = "Failed to load more items"; + +/* Text appearing on the item list screen as subtitle when there's an error loading variations. */ +"pos.itemList.failedToLoadVariationsSubtitle" = "Give it another go?"; + +/* Text appearing on the item list screen when there's an error loading variations. */ +"pos.itemList.failedToLoadVariationsTitle" = "Error loading variations"; /* Title at the top of the Point of Sale item list full screen. */ "pos.itemListFullscreen.title" = "Products"; @@ -8173,15 +8199,24 @@ which should be translated separately and considered part of this sentence. */ /* Additional text within the product selector header banner, which explains current POS limitations */ "pos.itemlistview.headerBanner.hint" = "Other product types, such as variable and virtual, will become available in future updates."; +/* Additional text within the product selector header banner, which explains current POS limitations */ +"pos.itemlistview.headerBanner.hint.simpleAndVariable" = "Other product types will become available in future updates."; + /* Link to more information within the product selector header banner, which explains current POS limitations */ "pos.itemlistview.headerBanner.learnMoreHint" = "Learn More"; /* Subtitle of the product selector header banner, which explains current POS limitations */ "pos.itemlistview.headerBanner.subtitle" = "Only simple physical products are available with POS right now."; +/* Subtitle of the product selector header banner, which explains current POS limitations */ +"pos.itemlistview.headerBanner.subtitle.simpleAndVariable" = "Only simple and variable non-downloadable products can be used with POS right now."; + /* Title of the product selector header banner, which explains current POS limitations */ "pos.itemlistview.headerBanner.title" = "Showing simple products only"; +/* Title of the product selector header banner, which explains current POS limitations */ +"pos.itemlistview.headerBanner.title.simpleAndVariable" = "Showing simple and variable products only"; + /* Title at the top of the Point of Sale product selector screen. */ "pos.itemlistview.title" = "Products"; @@ -8189,13 +8224,22 @@ which should be translated separately and considered part of this sentence. */ "pos.parentProductCard.optionsAvailable" = "Options available"; /* Text hinting the merchant to create a product. */ -"pos.pointOfSaleItemListEmptyView.emptyProductsHint" = "To add one, exit POS and go to Products"; +"pos.pointOfSaleItemListEmptyView.emptyProductsHint.1" = "To add one, exit POS and go to Products."; /* Subtitle text on screen when there are no products to load. */ -"pos.pointOfSaleItemListEmptyView.emptyProductsSubtitle" = "POS currently only supports simple products."; +"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" = "No supported products found"; +"pos.pointOfSaleItemListEmptyView.emptyProductsTitle.1" = "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" = "No supported variations found."; /* Action text in the simple products information modal in POS */ "pos.simpleProductsModal.action" = "Create an order in store management"; @@ -8203,12 +8247,21 @@ which should be translated separately and considered part of this sentence. */ /* Hint in the simple products information modal in POS */ "pos.simpleProductsModal.hint" = "To take payment for a non-simple product, exit POS and create a new order from the orders tab."; +/* 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 */ "pos.simpleProductsModal.message.future" = "Other product types, such as variable and virtual, will be available in future updates."; +/* 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 */ "pos.simpleProductsModal.message.issue" = "Only simple physical products can be used with POS right now."; +/* 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 for the OK button on the simple products information modal in POS */ "pos.simpleProductsModal.ok.button.title" = "OK"; @@ -8517,21 +8570,6 @@ which should be translated separately and considered part of this sentence. */ /* Text detection failed error message on the starting information screen. */ "productCreationAIStartingInfoViewModel.textDetectionFailed" = "An error occurred while scanning the photo. Please select another packaging photo or enter product details manually."; -/* Description in Product Creation AI survey confirmation view. */ -"productCreationAISurveyConfirmationView.description" = "Got a minute? Help us improve our AI-assisted features with your quick feedback."; - -/* Start Survey button title in Product Creation AI survey confirmation view. */ -"productCreationAISurveyConfirmationView.startTheSurvey" = "Start the Survey"; - -/* Title in Product Creation AI survey confirmation view. */ -"productCreationAISurveyConfirmationView.title" = "We value your input!"; - -/* Dismiss button title in Product Creation AI survey confirmation view. */ -"productCreationAISurveyConfirmationViewModel.dontShowItAgain" = "Don’t Show it Again"; - -/* Dismiss button title in Product Creation AI survey confirmation view. */ -"productCreationAISurveyConfirmationViewModel.remindMeLater" = "Remind Me Later"; - /* Category label for other product creation types */ "productCreationCategory.other" = "Other"; @@ -8688,9 +8726,6 @@ which should be translated separately and considered part of this sentence. */ /* Title of the cell in Product Inventory Settings > GTIN, UPC, EAN, or ISBN */ "productInventorySettings.globalUniqueIdentifier.title" = "GTIN, UPC, EAN, ISBN"; -/* The message of the alert when there is an error updating the product global unique identifier */ -"productInventorySettings.invalidGlobalUniqueIdentifier.error" = "Please enter only numbers and hyphens (-)."; - /* Title of the billing interval row on the Product Price screen */ "productPriceSettingsViewController.billingIntervalRowTitle" = "Billing interval"; @@ -9681,8 +9716,7 @@ which should be translated separately and considered part of this sentence. */ The action to be agreed upon when tapping the Connect Jetpack button on the Wrong Account screen. */ "share details" = "share details"; -/* Title of the feedback action button on the In-Person Payments feedback banner - Title of the feedback button in the action sheet. */ +/* Title of the feedback action button on the In-Person Payments feedback banner */ "Share feedback" = "Share feedback"; /* Payment Link method title on the select payment method screen */ @@ -9935,9 +9969,6 @@ which should be translated separately and considered part of this sentence. */ Title of the product search filter to search for products that match the SKU. */ "SKU" = "SKU"; -/* The message of the alert when there is an error updating the product SKU */ -"SKU already in use by another product" = "SKU already in use by another product"; - /* Label about the SKU of a product in the product list. Reads, `SKU: productSku` SKU label for a product in the bundled products screen. The variable shows the SKU of the product. SKU label in order details > product row. The variable shows the SKU of the product. */ @@ -10003,9 +10034,6 @@ which should be translated separately and considered part of this sentence. */ /* This error message occurs when a user tries to create a username that contains an invalid phrase for WordPress.com. The %@ may include the phrase in question if it was sent down by the API */ "Sorry, but your username contains an invalid phrase%@." = "Sorry, but your username contains an invalid phrase%@."; -/* The title of the alert when there is an error removing the image from a Product Variation if WooCommerce <4.7 */ -"Sorry, image removal on product variations is supported in WooCommerce 4.7 or greater, please update your site." = "Sorry, image removal on product variations is supported in WooCommerce 4.7 or greater, please update your site."; - /* No comment provided by engineer. */ "Sorry, site addresses can only contain lowercase letters (a-z) and numbers." = "Sorry, site addresses can only contain lowercase letters (a-z) and numbers."; @@ -10919,18 +10947,9 @@ which should be translated separately and considered part of this sentence. */ /* Label within the modal dialog that appears when starting Tap to Pay on iPhone */ "The first time you use Tap to Pay on iPhone, you may be prompted to accept Apple's Terms of Service." = "The first time you use Tap to Pay on iPhone, you may be prompted to accept Apple's Terms of Service."; -/* Order gift card error thrown when the gift card is not applied. */ -"The gift card is not applied." = "The gift card is not applied."; - /* Description shown when a user logs in with Google but no matching WordPress.com account is found */ "The Google account \"%@\" doesn't match any account on WordPress.com" = "The Google account \"%@\" doesn't match any account on WordPress.com"; -/* The message of the alert when another custom package has the same name */ -"The new custom package name is not unique." = "The new custom package name is not unique."; - -/* The message of the alert when another service package has the same name */ -"The new service package name is not unique." = "The new service package name is not unique."; - /* Fetching an Order Failed */ "The Order couldn't be loaded!" = "The Order couldn't be loaded!"; @@ -11273,9 +11292,6 @@ which should be translated separately and considered part of this sentence. */ /* Footer text in Product Catalog Visibility */ "This setting determines which shop pages products will be listed on." = "This setting determines which shop pages products will be listed on."; -/* The message of the alert when there is an error updating the product SKU */ -"This SKU is used on another product or is invalid." = "This SKU is used on another product or is invalid."; - /* Footer text for editing external product button text */ "This text will be shown on the button linking to the external product." = "This text will be shown on the button linking to the external product."; @@ -11509,8 +11525,7 @@ which should be translated separately and considered part of this sentence. */ "Try Again" = "Try Again"; /* Button to dismiss the alert presented when connecting to a specific reader fails. This allows the search to continue. - Button to dismiss the alert presented when starting Tap to Pay on iPhone fails. This allows the search to continue. - Title of the try again action when the site cannot be launched from store onboarding > launch store screen. */ + Button to dismiss the alert presented when starting Tap to Pay on iPhone fails. This allows the search to continue. */ "Try again" = "Try again"; /* Title of the action button to log in with WP-Admin page in a web view, presented when site credential login fails */ @@ -11817,9 +11832,7 @@ which should be translated separately and considered part of this sentence. */ /* Undo Action */ "Undo" = "Undo"; -/* The message of the alert when there is an unexpected error adding the package - The message of the alert when there is an unexpected error updating the product - Title of the alert when the site cannot be launched from store onboarding > launch store screen. */ +/* The message of the alert when there is an unexpected error adding the package */ "Unexpected error" = "Unexpected error"; /* Country option for a site address. */ @@ -12162,9 +12175,6 @@ which should be translated separately and considered part of this sentence. */ /* Title of the banner notice in the add-ons view */ "View add-ons from your device!" = "View add-ons from your device!"; -/* Title of the feedback banner on the coupon list screen */ -"View and edit coupons" = "View and edit coupons"; - /* View application log cell title */ "View Application Log" = "View Application Log"; @@ -12360,9 +12370,6 @@ which should be translated separately and considered part of this sentence. */ /* Error message displayed when we're unable to fetch In-App Purchases plans from the server. */ "We encountered an error loading plan information" = "We encountered an error loading plan information"; -/* Message of the alert when the site cannot be launched from store onboarding > launch store screen. */ -"We found that the store has already launched." = "We found that the store has already launched."; - /* Message on the expired WPCom plan alert */ "We have paused your store. You can purchase another plan by logging in to WordPress.com on your browser." = "We have paused your store. You can purchase another plan by logging in to WordPress.com on your browser."; @@ -12471,9 +12478,6 @@ which should be translated separately and considered part of this sentence. */ /* Subtitle of the Store details task to add details about the store. */ "We’ll use the info to get a head start on your shipping, tax, and payments settings." = "We’ll use the info to get a head start on your shipping, tax, and payments settings."; -/* Content of the feedback banner on the coupon list screen */ -"We’ve been working on making it possible to view and edit coupons from your device!" = "We’ve been working on making it possible to view and edit coupons from your device!"; - /* Title of alert informing users of what email they can use to sign in.Presented when users attempt to log in with an email that does not match a WP.com account */ "What email do I use to sign in?" = "What email do I use to sign in?"; @@ -12702,6 +12706,90 @@ which should be translated separately and considered part of this sentence. */ /* Label for row showing the total for shipment costs on the shipping label creation screen */ "wooShipping.createLabels.bottomSheet.total" = "Total"; +/* Button to add a company field when editing an address in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.addCompany" = "Add company"; + +/* Button label indicating the address is missing information for a Woo Shipping label */ +"wooShipping.createLabels.editAddress.addMissingInformation" = "Add Missing Information"; + +/* Label for the address field when editing an address in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.address" = "Address"; + +/* Button to cancel editing an address in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.cancel" = "Cancel"; + +/* Label for the city field when editing an address in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.city" = "City"; + +/* Button to close the address editing view in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.close" = "Close"; + +/* Label for the company field when editing an address in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.company" = "Company"; + +/* Label for the country field when editing an address in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.country" = "Country"; + +/* Label for the default address toggle in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.defaultAddress" = "Save as default origin address"; + +/* Button to dismiss the keyboard */ +"wooShipping.createLabels.editAddress.done" = "Done"; + +/* Label for the email field when editing an address in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.email" = "Email Address"; + +/* Label when the address is missing information in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.missingInformation" = "Missing information"; + +/* Label for the name field when editing an address in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.name" = "Name"; + +/* Text indicating that a field is optional */ +"wooShipping.createLabels.editAddress.optional" = "Optional"; + +/* Label for the phone field when editing an address in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.phone" = "Phone"; + +/* Label for the postal code field when editing an address in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.postalCode" = "Postal code"; + +/* Label for the state field when editing an address in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.state" = "State"; + +/* Label when the address is unverified in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.unverified" = "Unverified address"; + +/* Button label indicating the address needs to be validated and saved for a Woo Shipping label */ +"wooShipping.createLabels.editAddress.validateAddress" = "Validate & Save"; + +/* Validation message when the address field is empty in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.validation.address" = "Please provide a valid address."; + +/* Validation message when the city field is empty in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.validation.city" = "Please provide a valid city."; + +/* Validation message when the country field is empty in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.validation.country" = "Please select a country."; + +/* Validation message when the email field is empty in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.validation.email" = "Please provide a valid email address."; + +/* Validation message when the name and company fields are empty in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.validation.nameOrCompany" = "Please provide a valid name or company name."; + +/* Validation message when the phone field is empty in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.validation.phone" = "Please provide a valid phone number."; + +/* Validation message when the postal code field is empty in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.validation.postalCode" = "Please provide a valid postal code."; + +/* Validation message when the state field is empty in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.validation.state" = "Please provide a valid state."; + +/* Label when the address has been verified in the Woo Shipping label creation flow */ +"wooShipping.createLabels.editAddress.verified" = "Address verified"; + /* Label for plural items to ship during shipping label creation. Reads like: '3 items' */ "wooShipping.createLabels.items.count" = "%1$@ items"; @@ -12798,6 +12886,12 @@ which should be translated separately and considered part of this sentence. */ /* Cancel button in navigation bar to dismiss the screen */ "wooShipping.customs.cancel" = "Cancel"; +/* Title for the Content Details text field in the Shipping Customs Form */ +"wooShipping.customs.contentDetails" = "Content Details"; + +/* Footnote for the Content Details text field in the Shipping Customs Form */ +"wooShipping.customs.contentDetailsFootnote" = "Please describe what kind of goods this package contains"; + /* Title for the Content Type menu in the Shipping Customs Form */ "wooShipping.customs.contentType" = "Content Type"; @@ -12825,6 +12919,9 @@ which should be translated separately and considered part of this sentence. */ /* Explanatory text for the international transaction number in customs */ "wooShipping.customs.internationalTransactionNumber.infoText" = "More info about ITN"; +/* Customs validation warning for the ITN field */ +"wooShipping.customs.itnValidation" = "Please enter a valid ITN"; + /* Product Details Section title */ "wooShipping.customs.productDetails" = "Product Details"; @@ -12843,6 +12940,12 @@ which should be translated separately and considered part of this sentence. */ /* Info label for shipping restriction type sanitary */ "wooShipping.customs.restrictionType.sanitary" = "Sanitary/Phitosanitary Inspection"; +/* Title for the Content Details text field in the Shipping Customs Form */ +"wooShipping.customs.restrictionTypeDetails" = "Restriction Details"; + +/* Footnote for the Restriction Type text field in the Shipping Customs Form */ +"wooShipping.customs.restrictionTypeDetailsFootnote" = "Please describe what kind of restrictions this package must have"; + /* Info label for a toggle to return the package to a sender if necessary toggle */ "wooShipping.customs.returnToSenderMessage" = "Return to sender if package is not able to be delivered"; @@ -12852,6 +12955,9 @@ which should be translated separately and considered part of this sentence. */ /* Title for the Customs screen */ "wooShipping.customs.title" = "Customs"; +/* Footnote when a required value is missing */ +"wooShipping.customs.valueRequiredWarning" = "Value required"; + /* Title for the customs items description text field for customs items */ "wooShipping.customsItems.description" = "Description"; @@ -12867,6 +12973,9 @@ which should be translated separately and considered part of this sentence. */ /* Title for the origin country text field */ "wooShipping.customsItems.originCountry" = "Origin Country"; +/* Warning text when the shipping customs tariff number is not valid */ +"wooShipping.customsItems.tariffNumberRulesWarning" = "The tariff number must be between 6 and 12 digits long"; + /* Title for the customs items value per unit text field for customs items */ "wooShipping.customsItems.valuePerUnit" = "Value per unit"; @@ -12879,6 +12988,9 @@ which should be translated separately and considered part of this sentence. */ /* Indicates that the address is the default origin address on the shipping label creation screen */ "wooShipping.originAddresses.defaultAddress" = "(default)"; +/* Title for the edit origin address screen in the shipping label creation flow */ +"wooShipping.originAddresses.editOrigin" = "Edit Origin"; + /* Heading for the list of origin addresses to choose from on the shipping label creation screen */ "wooShipping.originAddresses.shipFrom" = "Ship From"; @@ -13037,9 +13149,6 @@ which should be translated separately and considered part of this sentence. */ /* Instructions guiding the merchant to manage a site's plan upgrade. */ "You can manage your subscription in your iPhone Settings → Your Name → Subscriptions" = "You can manage your subscription in your iPhone Settings → Your Name → Subscriptions"; -/* The info of the shipping labels top banner in order details */ -"You can now create shipping labels for all physical orders directly from your device with the free WooCommerce Shipping plugin. Tap on Create Shipping Label to try our beta feature!" = "You can now create shipping labels for all physical orders directly from your device with the free WooCommerce Shipping plugin. Tap on Create Shipping Label to try our beta feature!"; - /* Title of the no variations warning row in the product form when a variable subscription product has no variations. */ "You can only add variable subscriptions in the web dashboard" = "You can only add variable subscriptions in the web dashboard"; diff --git a/WooCommerce/Resources/release_notes.txt b/WooCommerce/Resources/release_notes.txt index f92eaef812b..8ff263974e4 100644 --- a/WooCommerce/Resources/release_notes.txt +++ b/WooCommerce/Resources/release_notes.txt @@ -1 +1 @@ -This update introduces the ability to hide specific stores from the store picker, perfect for agencies managing multiple sites. We’ve also enhanced plugin info fetching to handle unexpected data types, ensuring smoother performance. Additionally, a bug on iPad causing order creation issues with custom amounts has been resolved. Enjoy a more focused and reliable experience! \ No newline at end of file +Get ready for a smoother WooCommerce experience! This update brings smarter AI-powered product previews, instant dashboard stats, and improved email receipts for failed payments. We’ve also fine-tuned order creation, enhanced Jetpack setups, and enabled previews for coming-soon stores. Plus, we’ve addressed navigation, database recovery, and streamlined workflows. \ No newline at end of file diff --git a/config/Version.Public.xcconfig b/config/Version.Public.xcconfig index 8de527633ab..74ad6d1c3ba 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 = 21.4.0.3 -VERSION_SHORT = 21.4 +VERSION_LONG = 21.5.0.0 +VERSION_SHORT = 21.5