From f99c695bf62f0418b92732d133cf9d1fa2befdbe Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Thu, 14 Apr 2022 16:44:43 -0400 Subject: [PATCH 001/166] Add onboarding questions view controller --- ...oardingQuestionsPromptViewController.swift | 185 ++++++++++++++++ ...nboardingQuestionsPromptViewController.xib | 200 ++++++++++++++++++ 2 files changed, 385 insertions(+) create mode 100644 WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift create mode 100644 WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift new file mode 100644 index 000000000000..bcacd902c047 --- /dev/null +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift @@ -0,0 +1,185 @@ +import UIKit +import WordPressUI +import WordPressShared + +extension NSNotification.Name { + static let installJetpack = NSNotification.Name(rawValue: "Meowww") +} + +enum OnboardingOption { + case stats + case writing + case notifications + case reader + case other +} + +class OnboardingQuestionsPromptViewController: UIViewController, UINavigationControllerDelegate { + @IBOutlet weak var stackView: UIStackView! + @IBOutlet weak var titleLabel: UILabel! + + @IBOutlet weak var statsButton: UIButton! + @IBOutlet weak var postsButton: UIButton! + @IBOutlet weak var notificationsButton: UIButton! + @IBOutlet weak var readButton: UIButton! + @IBOutlet weak var notSureButton: UIButton! + @IBOutlet weak var skipButton: UIButton! + + override func viewDidLoad() { + super.viewDidLoad() + + navigationController?.navigationBar.isHidden = true + navigationController?.delegate = self + + applyStyles() + updateButtonTitles() + } + + // MARK: - View Methods + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + + configureButtons() + } + + override var supportedInterfaceOrientations: UIInterfaceOrientationMask { + return [.portrait, .portraitUpsideDown] + } + + private func pushToNotificationsPrompt(option: OnboardingOption ) { + let controller = OnboardingEnableNotificationsViewController() + controller.promptSelection = option + navigationController?.pushViewController(controller, animated: true) + } +} + +// MARK: - IBAction's +extension OnboardingQuestionsPromptViewController { + @IBAction func didTapStats(_ sender: Any) { + pushToNotificationsPrompt(option: .stats) + } + + @IBAction func didTapWriting(_ sender: Any) { + pushToNotificationsPrompt(option: .writing) + } + + @IBAction func didTapNotifications(_ sender: Any) { + pushToNotificationsPrompt(option: .notifications) + } + + @IBAction func didTapReader(_ sender: Any) { + pushToNotificationsPrompt(option: .reader) + } + + @IBAction func didTapNotSure(_ sender: Any) { + pushToNotificationsPrompt(option: .other) + } + + @IBAction func skip(_ sender: Any) { + dismiss(animated: true) + } +} + +// MARK: - Private Helpers +private extension OnboardingQuestionsPromptViewController { + private func applyStyles() { + titleLabel.font = WPStyleGuide.serifFontForTextStyle(.title1, fontWeight: .semibold) + titleLabel.textColor = .text + + stackView.setCustomSpacing(32, after: titleLabel) + } + + private func updateButtonTitles() { + statsButton.setTitle(Strings.stats, for: .normal) + statsButton.setImage("šŸ“Š".image(), for: .normal) + + postsButton.setTitle(Strings.writing, for: .normal) + postsButton.setImage("āœļø".image(), for: .normal) + + notificationsButton.setTitle(Strings.notifications, for: .normal) + notificationsButton.setImage("šŸ””".image(), for: .normal) + + readButton.setTitle(Strings.reader, for: .normal) + readButton.setImage("šŸ“š".image(), for: .normal) + + notSureButton.setTitle(Strings.notSure, for: .normal) + notSureButton.setImage("šŸ¤”".image(), for: .normal) + + skipButton.setTitle(Strings.skip, for: .normal) + } + + private func configureButtons() { + [statsButton, postsButton, notificationsButton, readButton, notSureButton].forEach { + style(button: $0) + } + } + + private func style(button: UIButton) { + button.titleLabel?.font = WPStyleGuide.fontForTextStyle(.headline) + button.setTitleColor(.text, for: .normal) + button.titleLabel?.textAlignment = .left + button.titleEdgeInsets.left = 10 + button.imageView?.contentMode = .scaleAspectFit + } +} + +// MARK: - UINavigation Controller Delegate +extension OnboardingQuestionsPromptViewController { + func navigationControllerSupportedInterfaceOrientations(_ navigationController: UINavigationController) -> UIInterfaceOrientationMask { + return supportedInterfaceOrientations + } +} + + +// MARK: - CGSize Helper Extension +private extension CGSize { + + /// Get the center point of the size in the given rect + /// - Parameter rect: The rect to center the size in + /// - Returns: The center point + func centered(in rect: CGRect) -> CGPoint { + let x = rect.midX - (self.width * 0.5) + let y = rect.midY - (self.height * 0.5) + + return CGPoint(x: x, y: y) + } +} + +// MARK: - Emoji Drawing Helper Extension +private extension String { + func image() -> UIImage { + let size = Constants.iconSize + let imageSize = CGSize(width: size, height: size) + let rect = CGRect(origin: .zero, size: imageSize) + + UIGraphicsBeginImageContextWithOptions(imageSize, false, 0) + + UIColor.clear.set() + UIRectFill(rect) + + let attributes: [NSAttributedString.Key: Any] = [.font: UIFont.systemFont(ofSize: size)] + + let string = self as NSString + let drawingSize = string.size(withAttributes: attributes) + string.draw(at: drawingSize.centered(in: rect), withAttributes: attributes) + + let image = UIGraphicsGetImageFromCurrentImageContext() + UIGraphicsEndImageContext() + + return image?.withRenderingMode(.alwaysOriginal) ?? UIImage() + } +} + +// MARK: - Helper Structs +private struct Strings { + static let stats = NSLocalizedString("Checking stats", comment: "Title of a button") + static let writing = NSLocalizedString("Writing blog posts", comment: "Title of a button") + static let notifications = NSLocalizedString("Staying up to date with notifications", comment: "Title of a button") + static let reader = NSLocalizedString("Reading posts from other sites", comment: "Title of a button") + static let notSure = NSLocalizedString("Not sure, show me around", comment: "Title of a button") + static let skip = NSLocalizedString("Skip", comment: "Title of a button") +} + +private struct Constants { + static let iconSize = 24.0 +} diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib new file mode 100644 index 000000000000..198371e77bca --- /dev/null +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 2500947b644489996b3ef6059c54f4244cc8aff0 Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Thu, 14 Apr 2022 16:44:52 -0400 Subject: [PATCH 002/166] Add enable notifications view controller --- ...ingEnableNotificationsViewController.swift | 81 +++++++ ...rdingEnableNotificationsViewController.xib | 225 ++++++++++++++++++ 2 files changed, 306 insertions(+) create mode 100644 WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift create mode 100644 WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift new file mode 100644 index 000000000000..27ffe330340c --- /dev/null +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift @@ -0,0 +1,81 @@ +import UIKit + +class OnboardingEnableNotificationsViewController: UIViewController { + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var subTitleLabel: UILabel! + @IBOutlet weak var detailView: UIView! + + var promptSelection: OnboardingOption? + + override func viewDidLoad() { + super.viewDidLoad() + + navigationController?.navigationBar.isHidden = true + titleLabel.font = WPStyleGuide.serifFontForTextStyle(.title1, fontWeight: .semibold) + titleLabel.textColor = .text + + subTitleLabel.font = WPStyleGuide.serifFontForTextStyle(.title1, fontWeight: .regular) + subTitleLabel.textColor = .text + + let option = promptSelection ?? .notifications + + let text: String + let detail: UIView + + switch option { + case .stats: + text = "Know when your traffic spikes, or when your site passes a milestone." + detail = UIView.embedSwiftUIView(UnifiedPrologueStatsContentView()) + + case .writing: + text = "Stay in touch with your audience with like and comment notifications." + detail = UIView.embedSwiftUIView(UnifiedPrologueNotificationsContentView()) + + case .notifications: + text = "Tap the Allow button to enable notifications." + detail = UIView.embedSwiftUIView(UnifiedPrologueNotificationsContentView()) + + case .reader: + text = "Know when your favorite authors post new content." + detail = UIView.embedSwiftUIView(UnifiedPrologueReaderContentView()) + + case .other: + text = "Tap the Allow button to enable notifications." + detail = UIView.embedSwiftUIView(UnifiedPrologueNotificationsContentView()) + } + + subTitleLabel.text = text + + detail.frame.size.width = detailView.frame.width + detailView.addSubview(detail) + + detail.pinSubviewToAllEdges(detailView) + + if option == .notifications { + + } + } + + private func showPrompt() { + InteractiveNotificationsManager.shared.requestAuthorization { authorized in + DispatchQueue.main.async { + self.dismiss(animated: true) + } + } + } + + @IBAction func enableButtonTapped(_ sender: Any) { + showPrompt() + } + + @IBAction func skipButtonTappe(_ sender: Any) { + navigationController?.popViewController(animated: true) + } + + private func configure(button: UIButton) { + button.titleLabel?.font = WPStyleGuide.fontForTextStyle(.headline) + button.setTitleColor(.text, for: .normal) + button.titleLabel?.textAlignment = .left + button.titleEdgeInsets.left = 10 + } +} diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib new file mode 100644 index 000000000000..120f16f1b6bb --- /dev/null +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From cacb49f901293f01d247172ec722114701de714d Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Thu, 14 Apr 2022 16:45:12 -0400 Subject: [PATCH 003/166] Add files to project --- WordPress/WordPress.xcodeproj/project.pbxproj | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index cd29cd0b1f34..ba1c3d8308fa 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -2193,6 +2193,14 @@ C76F48DC25BA202600BFEC87 /* JetpackScanHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C76F48DB25BA202600BFEC87 /* JetpackScanHistoryViewController.swift */; }; C76F48EE25BA20EF00BFEC87 /* JetpackScanHistoryCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C76F48ED25BA20EF00BFEC87 /* JetpackScanHistoryCoordinator.swift */; }; C76F490025BA23B000BFEC87 /* JetpackScanHistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C76F48FF25BA23B000BFEC87 /* JetpackScanHistoryViewController.xib */; }; + C77FC90928009C7000726F00 /* OnboardingQuestionsPromptViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C77FC90728009C7000726F00 /* OnboardingQuestionsPromptViewController.swift */; }; + C77FC90A28009C7000726F00 /* OnboardingQuestionsPromptViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C77FC90728009C7000726F00 /* OnboardingQuestionsPromptViewController.swift */; }; + C77FC90B28009C7000726F00 /* OnboardingQuestionsPromptViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C77FC90828009C7000726F00 /* OnboardingQuestionsPromptViewController.xib */; }; + C77FC90C28009C7000726F00 /* OnboardingQuestionsPromptViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C77FC90828009C7000726F00 /* OnboardingQuestionsPromptViewController.xib */; }; + C77FC90F2800CAC100726F00 /* OnboardingEnableNotificationsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C77FC90D2800CAC100726F00 /* OnboardingEnableNotificationsViewController.swift */; }; + C77FC9102800CAC100726F00 /* OnboardingEnableNotificationsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C77FC90D2800CAC100726F00 /* OnboardingEnableNotificationsViewController.swift */; }; + C77FC9112800CAC100726F00 /* OnboardingEnableNotificationsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C77FC90E2800CAC100726F00 /* OnboardingEnableNotificationsViewController.xib */; }; + C77FC9122800CAC100726F00 /* OnboardingEnableNotificationsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C77FC90E2800CAC100726F00 /* OnboardingEnableNotificationsViewController.xib */; }; C78543D225B889CC006CEAFB /* JetpackScanThreatViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C78543D125B889CC006CEAFB /* JetpackScanThreatViewModel.swift */; }; C789952525816F96001B7B43 /* JetpackScanCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C789952425816F96001B7B43 /* JetpackScanCoordinator.swift */; }; C79C307C26EA915100E88514 /* ReferrerDetailsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 931215E3267F5003008C3B69 /* ReferrerDetailsTableViewController.swift */; }; @@ -6930,6 +6938,10 @@ C76F48DB25BA202600BFEC87 /* JetpackScanHistoryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackScanHistoryViewController.swift; sourceTree = ""; }; C76F48ED25BA20EF00BFEC87 /* JetpackScanHistoryCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackScanHistoryCoordinator.swift; sourceTree = ""; }; C76F48FF25BA23B000BFEC87 /* JetpackScanHistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JetpackScanHistoryViewController.xib; sourceTree = ""; }; + C77FC90728009C7000726F00 /* OnboardingQuestionsPromptViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingQuestionsPromptViewController.swift; sourceTree = ""; }; + C77FC90828009C7000726F00 /* OnboardingQuestionsPromptViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = OnboardingQuestionsPromptViewController.xib; sourceTree = ""; }; + C77FC90D2800CAC100726F00 /* OnboardingEnableNotificationsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingEnableNotificationsViewController.swift; sourceTree = ""; }; + C77FC90E2800CAC100726F00 /* OnboardingEnableNotificationsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = OnboardingEnableNotificationsViewController.xib; sourceTree = ""; }; C78543D125B889CC006CEAFB /* JetpackScanThreatViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackScanThreatViewModel.swift; sourceTree = ""; }; C789952425816F96001B7B43 /* JetpackScanCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackScanCoordinator.swift; sourceTree = ""; }; C7D30C642638B07A00A1695B /* JetpackPrologueStyleGuide.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackPrologueStyleGuide.swift; sourceTree = ""; }; @@ -12642,6 +12654,7 @@ AC34397B0E11443300E5D79B /* Blog */ = { isa = PBXGroup; children = ( + C77FC90628009C3C00726F00 /* Onboarding Questions Prompt */, 3F170D2A2654615900F6F670 /* Blogging Reminders */, FA73D7E72798766300DF24B3 /* Site Picker */, 1716AEFA25F2926C00CF49EC /* My Site */, @@ -13612,6 +13625,17 @@ path = System; sourceTree = ""; }; + C77FC90628009C3C00726F00 /* Onboarding Questions Prompt */ = { + isa = PBXGroup; + children = ( + C77FC90728009C7000726F00 /* OnboardingQuestionsPromptViewController.swift */, + C77FC90828009C7000726F00 /* OnboardingQuestionsPromptViewController.xib */, + C77FC90D2800CAC100726F00 /* OnboardingEnableNotificationsViewController.swift */, + C77FC90E2800CAC100726F00 /* OnboardingEnableNotificationsViewController.xib */, + ); + path = "Onboarding Questions Prompt"; + sourceTree = ""; + }; C7E5F2422799BB1E009BC263 /* cool-blue */ = { isa = PBXGroup; children = ( @@ -15854,6 +15878,7 @@ C7E5F2532799BD54009BC263 /* cool-blue-icon-app-60x60@3x.png in Resources */, 1761F17E26209AEE000815EF /* open-source-icon-app-76x76.png in Resources */, 17222DAE261DDDF90047B163 /* spectrum-classic-icon-app-76x76.png in Resources */, + C77FC9112800CAC100726F00 /* OnboardingEnableNotificationsViewController.xib in Resources */, 17222D9F261DDDF90047B163 /* pink-classic-icon-app-76x76@2x.png in Resources */, 439F4F38219B636500F8D0C7 /* Revisions.storyboard in Resources */, 4019B27120885AB900A0C7EB /* ActivityDetailViewController.storyboard in Resources */, @@ -15960,6 +15985,7 @@ 1761F17326209AEE000815EF /* open-source-dark-icon-app-60x60@2x.png in Resources */, 1761F18B26209AEE000815EF /* hot-pink-icon-app-83.5x83.5@2x.png in Resources */, C7E5F25A2799C2B0009BC263 /* blue-icon-app-76x76.png in Resources */, + C77FC90B28009C7000726F00 /* OnboardingQuestionsPromptViewController.xib in Resources */, 17222DA6261DDDF90047B163 /* spectrum-icon-app-76x76.png in Resources */, E149771A1C0DCB6F0057CD60 /* MediaSizeSliderCell.xib in Resources */, 17222D98261DDDF90047B163 /* pink-icon-app-83.5x83.5@2x.png in Resources */, @@ -16383,6 +16409,7 @@ FABB202A2602FC2C00C8785C /* PostSignUpInterstitialViewController.xib in Resources */, FABB202B2602FC2C00C8785C /* CollapsableHeaderViewController.xib in Resources */, FABB202C2602FC2C00C8785C /* ReaderRelatedPostsSectionHeaderView.xib in Resources */, + C77FC90C28009C7000726F00 /* OnboardingQuestionsPromptViewController.xib in Resources */, FABB202D2602FC2C00C8785C /* PostingActivityMonth.xib in Resources */, FABB202E2602FC2C00C8785C /* Menus.storyboard in Resources */, FABB202F2602FC2C00C8785C /* CountriesMapView.xib in Resources */, @@ -16402,6 +16429,7 @@ FABB20422602FC2C00C8785C /* Reader.storyboard in Resources */, FABB20442602FC2C00C8785C /* RestoreWarningView.xib in Resources */, FABB20452602FC2C00C8785C /* JetpackLoginViewController.xib in Resources */, + C77FC9122800CAC100726F00 /* OnboardingEnableNotificationsViewController.xib in Resources */, FABB20472602FC2C00C8785C /* StatsNoDataRow.xib in Resources */, FABB20482602FC2C00C8785C /* JetpackScanThreatCell.xib in Resources */, FABB20492602FC2C00C8785C /* JetpackScanStatusCell.xib in Resources */, @@ -18789,6 +18817,7 @@ FF619DD51C75246900903B65 /* CLPlacemark+Formatting.swift in Sources */, 98467A3F221CD48500DF51AE /* SiteStatsDetailTableViewController.swift in Sources */, E11450DF1C4E47E600A6BD0F /* MessageAnimator.swift in Sources */, + C77FC90F2800CAC100726F00 /* OnboardingEnableNotificationsViewController.swift in Sources */, FA4F65A72594337300EAA9F5 /* JetpackRestoreOptionsViewController.swift in Sources */, 7E14635720B3BEAB00B95F41 /* WPStyleGuide+Loader.swift in Sources */, 087EBFA81F02313E001F7ACE /* MediaThumbnailService.swift in Sources */, @@ -18816,6 +18845,7 @@ 3F3DD0AF26FCDA3100F5F121 /* PresentationButton.swift in Sources */, 988AC37522F10DD900BC1433 /* FileDownloadsStatsRecordValue+CoreDataProperties.swift in Sources */, E1A03EE217422DCF0085D192 /* BlogToAccount.m in Sources */, + C77FC90928009C7000726F00 /* OnboardingQuestionsPromptViewController.swift in Sources */, 8BE6F92C27EE27DB0008BDC7 /* BlogDashboardPostCardGhostCell.swift in Sources */, FA4F660525946B5F00EAA9F5 /* JetpackRestoreHeaderView.swift in Sources */, 436D55DF210F866900CEAA33 /* StoryboardLoadable.swift in Sources */, @@ -20122,6 +20152,7 @@ FABB221E2602FC2C00C8785C /* PostEditorNavigationBarManager.swift in Sources */, FABB221F2602FC2C00C8785C /* Charts+LargeValueFormatter.swift in Sources */, FABB22202602FC2C00C8785C /* CustomHighlightButton.m in Sources */, + C77FC9102800CAC100726F00 /* OnboardingEnableNotificationsViewController.swift in Sources */, FABB22212602FC2C00C8785C /* UniversalLinkRouter.swift in Sources */, FABB22222602FC2C00C8785C /* LightNavigationController.swift in Sources */, FA20751527A86B73001A644D /* UIScrollView+Helpers.swift in Sources */, @@ -20146,6 +20177,7 @@ FABB22332602FC2C00C8785C /* ReaderTableCardCell.swift in Sources */, FABB22342602FC2C00C8785C /* ShareNoticeNavigationCoordinator.swift in Sources */, FABB22352602FC2C00C8785C /* CameraCaptureCoordinator.swift in Sources */, + C77FC90A28009C7000726F00 /* OnboardingQuestionsPromptViewController.swift in Sources */, FABB22362602FC2C00C8785C /* HomeWidgetCache.swift in Sources */, FABB22372602FC2C00C8785C /* JetpackRestoreStatusCoordinator.swift in Sources */, FABB22382602FC2C00C8785C /* EventLoggingDelegate.swift in Sources */, From ae561af5489e35ca5f38ccf63acab2787c09608f Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Thu, 14 Apr 2022 17:02:31 -0400 Subject: [PATCH 004/166] Add the ability to override the text content in the notification prologue view --- ...fiedPrologueNotificationsContentView.swift | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/WordPress/Classes/ViewRelated/NUX/ContentViews/Editor/UnifiedPrologueNotificationsContentView.swift b/WordPress/Classes/ViewRelated/NUX/ContentViews/Editor/UnifiedPrologueNotificationsContentView.swift index 67b350b07d7e..c2f04b71c10d 100644 --- a/WordPress/Classes/ViewRelated/NUX/ContentViews/Editor/UnifiedPrologueNotificationsContentView.swift +++ b/WordPress/Classes/ViewRelated/NUX/ContentViews/Editor/UnifiedPrologueNotificationsContentView.swift @@ -1,7 +1,19 @@ import SwiftUI +struct UnifiedPrologueNotificationsTextContent { + let topElementTitle: String + let middleElementTitle: String + let bottomElementTitle: String +} + /// Prologue notifications page contents struct UnifiedPrologueNotificationsContentView: View { + private let textContent: UnifiedPrologueNotificationsTextContent + + init(_ textContent: UnifiedPrologueNotificationsTextContent? = nil) { + self.textContent = textContent ?? Appearance.textContent + } + var body: some View { GeometryReader { content in let spacingUnit = content.size.height * 0.06 @@ -13,12 +25,13 @@ struct UnifiedPrologueNotificationsContentView: View { weight: .regular, design: .default) + VStack { Spacer() RoundRectangleView { HStack { NotificationIcon(image: Appearance.topImage, size: notificationIconSize) - Text(string: Appearance.topElementTitle) + Text(string: textContent.topElementTitle) .font(notificationFont) .fixedSize(horizontal: false, vertical: true) .lineLimit(.none) @@ -50,7 +63,7 @@ struct UnifiedPrologueNotificationsContentView: View { RoundRectangleView { HStack { NotificationIcon(image: Appearance.middleImage, size: notificationIconSize) - Text(string: Appearance.middleElementTitle) + Text(string: textContent.middleElementTitle) .font(notificationFont) .fixedSize(horizontal: false, vertical: true) .lineLimit(.none) @@ -67,7 +80,7 @@ struct UnifiedPrologueNotificationsContentView: View { RoundRectangleView { HStack { NotificationIcon(image: Appearance.bottomImage, size: notificationIconSize) - Text(string: Appearance.bottomElementTitle) + Text(string: textContent.bottomElementTitle) .font(notificationFont) .fixedSize(horizontal: false, vertical: true) .lineLimit(.none) @@ -113,5 +126,10 @@ private extension UnifiedPrologueNotificationsContentView { static let topElementTitle: String = NSLocalizedString("*Madison Ruiz* liked your post", comment: "Example Like notification displayed in the prologue carousel of the app. Username should be marked with * characters and will be displayed as bold text.") static let middleElementTitle: String = NSLocalizedString("You received *50 likes* on your site today", comment: "Example Likes notification displayed in the prologue carousel of the app. Number of likes should marked with * characters and will be displayed as bold text.") static let bottomElementTitle: String = NSLocalizedString("*Johann Brandt* responded to your post", comment: "Example Comment notification displayed in the prologue carousel of the app. Username should be marked with * characters and will be displayed as bold text.") + + static let textContent = UnifiedPrologueNotificationsTextContent(topElementTitle: Self.topElementTitle, + middleElementTitle: Self.middleElementTitle, + bottomElementTitle: Self.bottomElementTitle) + } } From c960ff52bf12b0d138b40423c545ffea70897382 Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Thu, 14 Apr 2022 17:32:40 -0400 Subject: [PATCH 005/166] Add ability to customize the images on the prologue notifications view --- ...fiedPrologueNotificationsContentView.swift | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/WordPress/Classes/ViewRelated/NUX/ContentViews/Editor/UnifiedPrologueNotificationsContentView.swift b/WordPress/Classes/ViewRelated/NUX/ContentViews/Editor/UnifiedPrologueNotificationsContentView.swift index c2f04b71c10d..773e6047155f 100644 --- a/WordPress/Classes/ViewRelated/NUX/ContentViews/Editor/UnifiedPrologueNotificationsContentView.swift +++ b/WordPress/Classes/ViewRelated/NUX/ContentViews/Editor/UnifiedPrologueNotificationsContentView.swift @@ -1,19 +1,23 @@ import SwiftUI -struct UnifiedPrologueNotificationsTextContent { +struct UnifiedPrologueNotificationsContent { let topElementTitle: String let middleElementTitle: String let bottomElementTitle: String + + var topImage: String = UnifiedPrologueNotificationsContentView.Appearance.topImage + var middleImage: String = UnifiedPrologueNotificationsContentView.Appearance.middleImage + var bottomImage: String = UnifiedPrologueNotificationsContentView.Appearance.bottomImage } /// Prologue notifications page contents struct UnifiedPrologueNotificationsContentView: View { - private let textContent: UnifiedPrologueNotificationsTextContent + private let textContent: UnifiedPrologueNotificationsContent - init(_ textContent: UnifiedPrologueNotificationsTextContent? = nil) { + init(_ textContent: UnifiedPrologueNotificationsContent? = nil) { self.textContent = textContent ?? Appearance.textContent } - + var body: some View { GeometryReader { content in let spacingUnit = content.size.height * 0.06 @@ -30,7 +34,7 @@ struct UnifiedPrologueNotificationsContentView: View { Spacer() RoundRectangleView { HStack { - NotificationIcon(image: Appearance.topImage, size: notificationIconSize) + NotificationIcon(image: textContent.topImage, size: notificationIconSize) Text(string: textContent.topElementTitle) .font(notificationFont) .fixedSize(horizontal: false, vertical: true) @@ -62,7 +66,7 @@ struct UnifiedPrologueNotificationsContentView: View { RoundRectangleView { HStack { - NotificationIcon(image: Appearance.middleImage, size: notificationIconSize) + NotificationIcon(image: textContent.middleImage, size: notificationIconSize) Text(string: textContent.middleElementTitle) .font(notificationFont) .fixedSize(horizontal: false, vertical: true) @@ -79,7 +83,7 @@ struct UnifiedPrologueNotificationsContentView: View { RoundRectangleView { HStack { - NotificationIcon(image: Appearance.bottomImage, size: notificationIconSize) + NotificationIcon(image: textContent.bottomImage, size: notificationIconSize) Text(string: textContent.bottomElementTitle) .font(notificationFont) .fixedSize(horizontal: false, vertical: true) @@ -127,7 +131,7 @@ private extension UnifiedPrologueNotificationsContentView { static let middleElementTitle: String = NSLocalizedString("You received *50 likes* on your site today", comment: "Example Likes notification displayed in the prologue carousel of the app. Number of likes should marked with * characters and will be displayed as bold text.") static let bottomElementTitle: String = NSLocalizedString("*Johann Brandt* responded to your post", comment: "Example Comment notification displayed in the prologue carousel of the app. Username should be marked with * characters and will be displayed as bold text.") - static let textContent = UnifiedPrologueNotificationsTextContent(topElementTitle: Self.topElementTitle, + static let textContent = UnifiedPrologueNotificationsContent(topElementTitle: Self.topElementTitle, middleElementTitle: Self.middleElementTitle, bottomElementTitle: Self.bottomElementTitle) From e3c7ca9c652071eca342f5dd97c208eeb5db22ef Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Fri, 15 Apr 2022 13:32:12 -0400 Subject: [PATCH 006/166] Improve accessibility of the enable notifications view --- ...ingEnableNotificationsViewController.swift | 15 ++ ...rdingEnableNotificationsViewController.xib | 160 +++--------------- 2 files changed, 42 insertions(+), 133 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift index 27ffe330340c..b61d0a7e99e7 100644 --- a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift @@ -10,6 +10,21 @@ class OnboardingEnableNotificationsViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() +// MARK: - Trait Collection Handling +extension OnboardingEnableNotificationsViewController { + func updateContent(for traitCollection: UITraitCollection) { + let contentSize = traitCollection.preferredContentSizeCategory + + // Hide the detail image if the text is too large + detailView.isHidden = contentSize.isAccessibilityCategory + } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + updateContent(for: traitCollection) + } +} navigationController?.navigationBar.isHidden = true titleLabel.font = WPStyleGuide.serifFontForTextStyle(.title1, fontWeight: .semibold) titleLabel.textColor = .text diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib index 120f16f1b6bb..5786fa6ed1a7 100644 --- a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib @@ -1,6 +1,7 @@ + @@ -12,10 +13,10 @@ - - - - + + + + @@ -24,22 +25,33 @@ - - + + + + + + + + + + + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + From bd433b2b8e937c72c63aad3572cd5692440ff1fb Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Fri, 15 Apr 2022 13:34:46 -0400 Subject: [PATCH 007/166] Add images to use on the enable notifications view --- .../Notification Prompt/Contents.json | 6 +++++ .../traffic-surge-icon.imageset/Contents.json | 23 ++++++++++++++++++ .../traffic-surge-icon.png | Bin 0 -> 974 bytes .../traffic-surge-icon@2x.png | Bin 0 -> 2038 bytes .../traffic-surge-icon@3x.png | Bin 0 -> 2996 bytes .../view-milestone-1k.imageset/Contents.json | 23 ++++++++++++++++++ .../view-milestone-1k.png | Bin 0 -> 1607 bytes .../view-milestone-1k@2x.png | Bin 0 -> 3786 bytes .../view-milestone-1k@3x.png | Bin 0 -> 6145 bytes 9 files changed, 52 insertions(+) create mode 100644 WordPress/Resources/AppImages.xcassets/Notification Prompt/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/traffic-surge-icon.png create mode 100644 WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/traffic-surge-icon@2x.png create mode 100644 WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/traffic-surge-icon@3x.png create mode 100644 WordPress/Resources/AppImages.xcassets/Notification Prompt/view-milestone-1k.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Notification Prompt/view-milestone-1k.imageset/view-milestone-1k.png create mode 100644 WordPress/Resources/AppImages.xcassets/Notification Prompt/view-milestone-1k.imageset/view-milestone-1k@2x.png create mode 100644 WordPress/Resources/AppImages.xcassets/Notification Prompt/view-milestone-1k.imageset/view-milestone-1k@3x.png diff --git a/WordPress/Resources/AppImages.xcassets/Notification Prompt/Contents.json b/WordPress/Resources/AppImages.xcassets/Notification Prompt/Contents.json new file mode 100644 index 000000000000..73c00596a7fc --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/Notification Prompt/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/Contents.json b/WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/Contents.json new file mode 100644 index 000000000000..01b1925c2ee3 --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "traffic-surge-icon.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "traffic-surge-icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "traffic-surge-icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/traffic-surge-icon.png b/WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/traffic-surge-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cd121815efe019277da02955920e19d03caf6f4d GIT binary patch literal 974 zcmV;<12O!GP)yDe7AJ4QugVm){fB_9Nku*Y zM?VgJ0}dXI6fZ^-V~rXQN@4^P8cl@Q7$XWrUQ4m#p2%(w`A;g3bq9D{MRNrB!>QEJ)4I$cztcoE)3a5k+ znSBs$B~xvyt_Gwc44xRr4iUA_#Mh+cCI6GG8|W)N@UXhbuHjT5%v zqzO?ok)?sj&=bu5a2v?T8CC;QzmFY1;%M!@leq=E@#L+U;xh} z7Np8B)pe9?Ko+epC2q|g2D0WiFjhZ#-XvP$q_3UlSa*Av*Nnlxk2oDxR8SHvaYhC&(AU$U`ieAE z3@~WW$Yb_IGSQ+^y$di*0~*HL+*dY=CDrQnGvM>LpA^eny}drc!_`VZq8M_Rot1rUS{XNJ3b#B8rUOVrdZk` z9@B~G_P!2efa!U=u+cS*axh=)dcL|P$Ip#yK z5T~-caUDwCVm=utTGKM4`?3dFS;9dk`f^rX=;r_s0a5R$<%2!Oya9b1llJ7uVvzjR-{^N^o wIT_+V{nfzEkO|S?pFQkuDOE6N(C;>X0d&@Bttr->$^ZZW07*qoM6N<$g3Wcp1poj5 literal 0 HcmV?d00001 diff --git a/WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/traffic-surge-icon@2x.png b/WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/traffic-surge-icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c6df465ce9a01387993ef03acd3fba2927f323ba GIT binary patch literal 2038 zcmVs7XXYRCt{2oo`PRM;ymLcl?o3D`<>{TJ+?I(!}0bLu1oaSrQwb zVp<=2z5`zZeFyjsjt6~W($=TOrXHqk(u5F>_5qlJXK6I0v3lBo2y%TeEG*0I-R|tn z?jE!ye z%ge2yy)ub#g!u}cupM9kIbam%3OMgFa0kc}qBFv9KsRs`Vfa%)XYRmbgd@g*7eQtm zqytjG7;rtP3?-RBl(Q5>X2}5ZNFna7M?~NFAjVv-l@t*-ZcW^@0prBRmm!Ob*ipS2U?74}G4c#k zBZ^wj0VVcVR5J`7Q)6PMmIRFv8(#&ds4=1AR0C3ohBxl@sG*E#kW2OtoNB-rvGG;X zg+ncpZ8_PZRA3%Vp>Vr0{N`eA7ITh4rAb%2t` zEEVTztaasd+Xx<)7l-+^leSYF=9NPaM@Z zL`o834`_95o$r4BjTir|*8JYw(lYm^A4=!rM|Os@{d{#Pqie7>6j}{1Wv8C;O=RWB zkL(O*`^oh60Qv%W)n>%B^J-5v`A?<$g` zKpfy#cAT&e*8IwjTjQGyWzzUvW}T>L-Ymjtkfjn+4rKfJGRC*^@2eG#yw@r9TdfXI zEjv0eGHJ&KHwd&zkS^I#iQhY41xa=`xKoCo-cCn*8=su%Rb8Y#M8WvLr1BczM|L{e z+Zg@q9LEnIO$WG^hHm+UHaQyH= z00w%Gapl4pRYlt-O2!8YNfhmk=0|oq547>+rOck5#6a&chO_-DiU$bUiIDLDO06hx zfFId8)Y-w+&(G2Q?mJaK&-C@s-qzwvj-nT_#iJw5tJR1N!SU-6}*2O{6j9B$Qh?oS#9rXy`Or$G z!Z$xoOWpZSy&V~57oT#!_(#>xA~MLTMVYOYGS>M3ce{He5`1v9yZ#q#bhN88J_tFg z)+RK7@xfwis{`_Gf9-Xtk2%6sWqgxNUk^qmy;Cj^@%)gRg$Cn;{xju46n>1x+m(F+QSOq?OoEs_ zFCnV$X&PhPFo7s*4$a1gU}}J!Zp0SuIik}>JVvxxDoqZ5@Brf6*^IJfE@$TfT!5m+0m_I%r$QXgpQYph{5gr53%Fy U06VDk(EtDd07*qoM6N<$f*yz2lK=n! literal 0 HcmV?d00001 diff --git a/WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/traffic-surge-icon@3x.png b/WordPress/Resources/AppImages.xcassets/Notification Prompt/traffic-surge-icon.imageset/traffic-surge-icon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c9414d0f69fe070037777f8ed8e5a9aeb49be88a GIT binary patch literal 2996 zcmV;l3rqBgP)~p?ma(gBy7g_9$)|GdH&})Z$q1#o8*WhPzFk!SGn`OB5*q5wU&VwomT^B zc3zFn_j18d#syUAyvm)|R7&@4A%xTb>YZ06$(n%5zzjk(XZ1E^2TKScEh2=K39=xd zGEhYbC#?vRlomorH7pmCtpX|mv)Cn?UU*`fM|dc!uuVWS2;rEPo@B9v5YnRVhJ?ii z0TmI#nZy2Q6P6a@_g%#B9-YYoDk7rIEKtzg7G1Ov5osPng=DILs^lx;48n^@HNDN) ziD?3=ARdwvPB1ORhpVo)8E+WY-GB}yM85wQPCWgXLOi2I#52>52?Cl$)I!edZiq#k zM?AAx-3`&1!b*sAmDMhJS}Y;bT2sf(bw!{V#3#s!Cpl*k&vHh`&2LiZ(Wsfm&C(K38PWB0Q70YRh?0o%f!Z`uSQYphC!RDZ zAf9yzWIIk$FfEIBTW}7LHa0N&b0o8B=qgmiI33_I6JPJaoC0y#t1Cdf$ln6AB z6Hgu}ApX{&2pfSahy`tq{P2516p6zMsEJ!Knm1a6s8WYXVO5-X^2ih+23!Y4pd!LJ zI|1dB7Q#^X+*)S$fD6px#1olE-~YhpU*6Z-C0yDa_m8$q|ub zN8aI&zy5{pX2@a|p@l&D31|k_ZI8|I$qD{^<|HG#cIj?PQVR50ci&GybJClVGmah} z=TE@h(f&t6t2#svfEud;@P02YHd!nlUi*5nA^pzr(dZKL_@e9bMFAW?l9N^vJsP1M& zVOtvW3&=$u4P3wbkpDhw>uyF=wzT3GP$m6#7sqSXPq2m3+Kb^xB4^v`& z<0roO>H&|QJlEZnxNK>~i$E1U?Z_vVi^rn^85YpLzx|G9?U%Znv4iV(A7(*3&?TU9 z@AuiqgVm?p{Ldpkz4?t%BC^=?1W|?z3h4IAD*wFu5P(-}>s-09%wx@;__g&7KEHJ@ zOX2~afQn?K{&W5AL%w{_+V;KI>l=J_>z+0dt*vix<;HSW(w3hopg2rMqR*i8aP7{D zmUMRQ&IJ z{9wVPv9prZDJ;nI3_`UhQt5e4Oipld`jklnuw~CgTSw9^u_{lb%JUpMJkB3FbBGL@ zlvcD-Kw&)3AXIoFRi5WifM5)nlvW(ZvYl2RtUisLwtDeuZC#p(R22yi6%KH5`V=Dp zDa(M>9;Zz>H$F7}BB3mj8te6qpOhKqW1R_Sdq;Y2VW4{jtTh6PW0=E|#8|5u7(FpL z!MQUh10zp2I#JiQ+)mHcgj3Z(zMl&N8kUzu_Ny&xi%OkAk)O7nq!B@ z`QZKcl!+$|25qvL8m6SJv^X(2Aw6yBzz7eNH}R%W+&i+Hi_@oc4>aze-@vG)yx5H<0jV;~W25^ycjhExqx%^f-Os)~ zBV4<)!t3=7>Gz6477TL$FNR5YZg?D26$uX&4)B*snX%FRTi-Kb3l*6~Lc?eb6Y-49 zq^R;dUU~?c`k-?LUzQAW0L@edq{{P*jqdL$9uFO()fqF)K{SUpH#dvGkE-va((_#S z?JxP+TYE#j|M8ROsd%D{dY*2^yyKplC|sSYdb(%7$P>h~_DinZSXL&YtP}|c(4w=f z2NW7<)5HU6JyFIzkDms-sYELgkSfC*#`6q9g(u2^=kc>mKy}$ySM7O{h{r?bc z*wTvsuhKyD?PJx0_KfUeWY;d%HssY-`~#zDaeQ)O-~en+iiEvr;p??`PbiBWg^rBB zEp>Hd(7n7gU@zvvc_m&Rg~baiAJ zhB++$4@8a)v!8A03xX%rF9IJYxr^r`zW8b-k|&Z`B$UPR$qC+mYaj0xNAsMvJa$-| zp@3CACE&4)yFGsLoX>9E3-w+T(w1W&N9mgW6SOL$iKL=pSWo1{V+BhD%pL2stY==< zT?ct0lRS^3FM*l}N?{&NB+d~En#dJ(GMGafEqZJR-EU#xoXi$<*H*kbj}wm-%=P+@ zei5jMh(ZOKEqVOpIk)aNUD~pTHX`~2F8}H$AP~y?oAf3*Y~t_4j6fiwP=kz|=HrM= z3vrS`&&8*MHdlCoWH02fia7?XTpkpGJes&Dls9_zy!?dS-ldwPB@Qd8hIvz10o8%4 zaa-cBj;n;6p&B-Yfe2>}BzNl_#?eL?=Vq8UN7LIyR3o(DzVIB*_Tu>1wh52b< z*@=ga9W0aJ;N_(IM9&~{r^8O#h`(WMk_xCvMAz;xiV6w0IFzwdeFL~G;X00Vxr~H; zp=2F(P{WDHCN7h35vhmFvodP9o|z3SAW1wR|FD%RPDCcNfaDsUiqm?kI1!nMbn$?? zusKpY!#57GNNZ)HDtBIKMJVr7n+8HO^_1?LI$0M`H${YyN}X4^^SvU` qmuN2|dPpx2LTPqh4Gix&$>jfV&>Hp-J?i8D0000|meN9L6+na@DoJS}2}x|%iJi4~ z=i|Y*v$ofp&`|!;D$edVv;Y6h_sx7Wvr0r*0`!+$y};@!c4NRO5GlD92NCgm^^3@W zh{VJ{V!1l{{qpcjJhBMV)e!L`q!Hs@5gGg!h*x4T_pT)saGxyBRSHNZZTV2sJ65d9D|wR5kOhz~)-@={oNl zU8klr9$i3xUO+>zqq9uEyPNo@KSIVqX-)5Ij}`=EM*k-M<}PH; zLTioE8m$ycYeJW=qG`?fs1}ep3v1^vaw>{a3Ka|xxN;SN>sFTus)5D?I7y4?_xCXU z-nWRAK`DjSIy+31p#8SB1iIUpdVVlFTN;CCjc#wI>&g2Its7Xig62Ecl6pNt@Tv=F ze&A;Gim+EY1p&QYEHg6+jy(7xp_SbPy2E6~qbSIa#R%mhbhxFMv*+vx1K} zdoN8lTtdsk>ruL1a=ZY&L8>pn%Mb{+aQPdXY3k|Zk7wQ?{pSp#fqYI<0U`Iyh^w8X zZ4xhiMzHTfS~uL{hdjV)&!u#86HPsxA9$YFY;Ml zehO6*bL#=fwZ4np+=t&Yzwam_LTcy-BvX4;v*ZGxyj5KVxb%`qrAfTEm)Q^Y74A7R zvsin6JF@~rC=i#NpS#-$BBm(7$}m4XTGBHHF+%E-gNW^~7yR{r2N#l@07`mFb+pp+ z#QhKomX&p;5?FhW_!iJ`g6|#!l_Dx^Ojd;MXeE5twPnIYgw&2hh+`V1GN#GyRW>F7 zimqY2$3Wh${hk|9ZOvst?u0O^hR!q-9~h!!Zp`64TbwP^*tP73T$&0!C?I zizP8N&re_c#l-Q1CwpTr`b2aim6?OvY$*+Fug^v;F{b`bvvG{>y;?T98QA8fNy6QsT1P|$jD0mr?0A~P+heqx6Yx@XDYjANs43`nGlz}2zYU+# zxM9VmAy)Ra(%cG%jADk20au)42rI!~0$Pym2dW7d= zR<8n(v;3gD^y-(h^iu;jAp^3^AA5K?srQ0@mg#ewe*pC2Zgz22)L#Gq002ovPDHLk FV1n3&0($@e literal 0 HcmV?d00001 diff --git a/WordPress/Resources/AppImages.xcassets/Notification Prompt/view-milestone-1k.imageset/view-milestone-1k@2x.png b/WordPress/Resources/AppImages.xcassets/Notification Prompt/view-milestone-1k.imageset/view-milestone-1k@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f310ce1602116faaae78b37b12fc2b97741cea42 GIT binary patch literal 3786 zcmV;*4mI(KP)RCt{2oqKRx)qTf5XCIPQ=xI9``60;=uw!sB;|ZpOheDiY zGJzn%WG2%jMUZBOq|TS0)xNJdMh8Z>@Ka0Gb7MVYQ(Vm!(BzH^$N{m%t58O8WB zXA=DAU(Yi)mnlcoBd9WNbt`WHm*n)LTuxp3`qfu85C{l<`P>u}6G;LA!NCKwtXtPe zOH0{x@J5s?8bI|Us)8E~cof)0ohl!|?-#6J-w43rSLZl*U>1NKpYA{iQHjWQRG9~= z&0Dnw7y|yO+Dz0EnkE_97h!TTm3MB-A6!wb_$N?0s2J6>f`+K`c6~S;=bs-x$GLOK zg6F%s8u-ia_t4o{wI?2?LN-*&fFbH!`2fM7VCzjS+;&?V8#jgW&X0{H8T_j-)6@Cv zC=(A*ArmTLzz`lQe>5>ci$BE5KwHH!QYnpx22PSrOCI{#Rczc8VrnwY^mK}wZ*HZv z&6V~@*-R)m)kpDI`Tscn3m(7lEX}?~c3m^brcif9a)Lo0>$@A7iKO||jt+c2L3d@M zis1oN3u(yd4du9?ewHBMJ~^$Ptwgm1&(FM8m8_ngMsB~O9iOkFmXA|Bfzp*DI5ogl zN?G;nUO4zI$RyP7=(svoCGPIn4nRmW@X6L2tCIDVudb&5zExG{$pMCN*jaNL1CF3N zAd6%C5Il1$blnEspM^L67H<3&Z2uc4@{8hBVvIIlh>rw2s+Q#;j^e-wP7JUUC&LSg z2>hhe_#JG8ubzgcl_hVzjPV#MZZ3*aE~pPD${#xjyYIIiYg!5M>5{iz=6D2SLP0^4 zVnCQuqne2byl^kfpM!<7MhpOG?1X#w!YbFsu0DturO1PwV$IM&oD3;9c0hl27RVbv zfWv`?!w;P_n2fq9swDp#C>*a#~ zIt#BxU{eb`+zk!N$!!tn*TrWvkk%sZVo zR%ACo2k@bfnl(lzrpaIS7*Mp+unbpV(XpKYVd`i$!(|Ffzrf6ZK9-g51$r>`j?D%b z@H!_SVhreC%q}QG9nWmI%rJv$@Z=cK$FlOhL_1kGq>lyld7T3-k>b+Rhe(_nM@`KU z2mvd;(nmwjNAj*u{(gelrw)MtfdC;;w+YMr>bNjn2SNx!_iQ83Yn7XN?G&juPUq$Z z6`Lc}_~0Fg2Dj$10ZQj1o*O`mrFe=LI_px?BDj!-(2v%Ok{!R;ggnY zbN7Pvx8*z_1dVrmEMMkWg!G$X%k{df{EIcWRG^~|j2KY+RT@$a$?*BN!O=}TBzg1=| zN&200BzC=yyf~Y0h_(=c+cy%pu^ZpoPN-}aT``CN9@PHmyJwjA_uWL_8qF%&uz0qp z$XwY9*98#_(6pt8rY$|lM4H&)lj?Z3{z$W|tYCjj6Ybx=cTv|NLJb7BZ9toxBk|1t zs{17n@DaTGCW3cu&NG_J=nLTDOkX=mv5* ziJYP>@{n1hfPdYJl73spQzQ?Z0I7`VTir&}*ZT1Hc=GVRH$b*IO$-1d@JaxG@h7fQN}^AUpp8dB2!b2C2z_G*BGll# zu+^crCN3y;YK+LfV+g;G<{Nrxzil)AmJsKExGSq1-C2;UdF6Rm30dY8WmJg?2g!Z! zkbM0#LO^iS8bW{mnOeIXJNjI0SLtY6w~DL({y~~==poSB48X$g!a02i69aP1NzC=Q z1PuM7^C!mu6QhbrOTBxJ=#z&4N#OeRG(Wte_5Q&Nb*^hJm%dD{sE)zF3#qBRDAalv`94XTCd=(0i+%zvxYF&d0mT6r^`$Ia>JU^#v!{A=70JUiKC;I z^tEV`*e_qNu3S~XQv>AGlhavFi+Rc`A;`)Ao4i5{i0(N?bkDKuc@txhBwjv_7Flqk zh-G6*7_gZ8aJpDTkLNiC^!58ei0Btn`y zUQ+MKX8QudF$<)*HzD==jkc)-lJA~n;+y}0HW!DCW@@79gKoMci0^xw(A_s7n)9bJ z)DoUCAXm#54WMQCe_i8+7-e!tGMOelHHS>4&39sF01{*@Nqmp@Eb!0;nOZt#my-*i zWi^778Kun-Hh1J-vx4@A?xNw^E>lZO8Zk)ESN30Q_Yt&9-o}C@XaE}pHk3!13?OGM zd-ygpz`wGEmd|XZ^^1RKxy>+y!2q2FvFE&P5&1ASxT`s&y}$+BkrNu|O0+T{KOpO9 z*wRg4{Yn$#u%&9aqxga2Ub0|+-7vuHj-1Fa{_3)Nt!v2~V2ELuLmd3I@yH*^!+v=+-9h1`*Z*sqVFP0v?YSjPx^>w+*BHs2jNRsUiE)WQH;AlA|H zxovrae+A{ml0=`bZeh3sjOanQ<}D#T=;jsH=8l|7E7YF1GpdlhrfpZ_zf#RXv$~>u zMkQW3L1tp6lHxkSelYq0BehCJhfJnz3@98x&Aryeg=O`-i2Jbjj?EB$A8lXygk{`G zH=PlTv+^`q%YMNKcxZt6w@y1^Kc`g&$^iTI6Yx`TyLjjP4$0$Qr;rJ9-G0)`n@x6cayxnZ&tC z=8v5wYO2+0ii&miny`O-g3w3T(0qM2P2E?r^8Q;%PDGe~`W5C6pCmOlU0@m_1?BnM zLR@kCX4?C=6S&fte=Mcs;AF#NHd@r2!znUcW-g%~;JIvURUjQI6dV#5DULkpYDkmq8QFeJ! zl9`P$_p9HMJTqy@hY*66ySG{LRd}#Y$xDx4B6YH~dvu5){fqf|zzAyjOi#7aeN7Fl z`?Grro)f13gz>}pE{rLL2yze18`rO5^`HJxPDffw#!ps-V#GfH2D}s0D^8F!1T_b~Vdb3}tUu6Q%}x<$s8=lSPL8tKYJ08Kq#^ zn!t`y&x8lu%t;|=8I5Gj!3gLF7X!sky0>j*1-Ljm&+dOYP9mCS`+YrZ`IIX?&3Z!B z+g6elP?HCwr(T~TKA%Qv@XkvUwMb$qaTEvJ|2UnNGC&Q6tJh!Ofym~dXG>@Ci_1iE zzN~k{xQ!W{x^I0H(7~r))&MgXVsh;LS*dB7Ycf-@jC_6|EXRMlAf=RY;>`tl^e2<9 z$#;N$=}@obzCU09wL5s-W6w9wuy7$w$2E;a-cPXk%bi^J1yA;#evle%Ur$zW-S?8y zaSeZy4gQ9{?#ZwpKN98!>dRqG%|^rFrZ@PL-p$e22eq#?$Ej}h%YF( z_C7V97-;m-*yj35_y?(Sw7{*msn+GI3>PL+T(LS>`oi*|xAUuhm7$xjv(?`-Q{9VR z>K{i@%0J?UFgF)y=x-T)%te{?hQ~188tV#{U+C-%qkMo~=nN{Oy{IV|HJkG20cKET z=%q&UXKVdVc~F@jq|TbF4ls<$ces{`c(F(?jH2%b>a_D_!!RnZ19-4{$O{J8(SaH# zAE16>#3(9e?Zh^3r`A{s1DMf=GDJV#_aSCb?f4-)T&88mQX9aGKGWyU8l|xxrELAP z_F5Q> zZEVX$sF+HDS4ALp4v+~&Qk8@KBMC{U!ZrkAND8eW0Xqb1RY|aATd=~E@g=;n4Z198 zSNFA&R(sC*^2h6*>2t20neN%0Pt|PC^z^*n>+bLVe!utn^=m~4!7QQ`=mI*`SC_i3 z6T3`fQeT7Wx>zPi*`N15ynBZV{w45+Ue$xIVa7qA&Anp?cB ziiJH$A@w7LH6xe_0_p;KkisdKhjGg=Qb>JNxR@$cK%Kx=DoZp@XkvO4nL||+l_sFg zNa6S`JQa&QNFnumU6EX=1Oc@oh0{yrdz)MtM(%GvK5x@whHtF^cp^ zkK$7y`BgwY%r1|U4b3C+I&WW4`5Rq(YYjWcIXsMKcmAj8^F zsSVlTl?U34{12M3;yJK?l0W+FVRrV9IBqjBktl|#Tad?cb1@3b7cT_V2kc;mH_dD7 zOtTM=zMwo*%z~XLR}R#L zYG9!;#eIni_>zEPcE`_34G&c~@I0OphYFL`r_4wj3d>2Y8)XCLVxy zu52)T){CdUKESP;N_I$EkjK2IR0cFkEubD?TZwJ>lEa6mIF=#5x%-}ZG&BTDU5#y& zSVW}^VSUJ$JgeCM+evopxX7DtOk~`ysVTr09$w1YwN2%y)^U9CvQsl8l#r8mb%u?|<@tw!dF!1yANQ@8O+(IlSID00_*|Slm zr;~Ja*71-3bX~csR8&t?%zmIADnvYEi7EC?9-%E1=G_gYy>`1~Np0$VdwVSpKGaSi zpa39*V0{mZg|xQL$F8vX?XPeub`gNTTy#GVEx5a6_LeM3 zcNE^bsWl}Y07X#>IQaeS+g;NI_w0uHk_@t{k{hGQ{-L2 zykCZ}sq^sSpUc)4K)6GW`Y7E|)FCTzQD2U(i+nUd&MWK+&pV-TtohyCO5ufx(4tqsFN%b~{Jos1%L zA=?SAG6|@M3L58AC4XW`nFBRvZ%S>!p&^w?KtojL>Zu|b#-T;#lmpF#>2s?Tj}9C< z7M%p-`NTz4e21+j>_S*4aIDm|sZx<#i|HDfod>FVpDIpRv|;CghN$L0RqU}O(`FA; z&PO6usXRI`-3nwDP*2&aQl(Pq(SI<9upz1*s7huGVNCCVs^P0jE*Qd?z7yM%X=2@w zoQ{#4u%87i&|FWTt|n_4iOb`1L?n4maG;n!T7R!J)S%SYTGnfbv1vrYJk_sVNe;|u zDEGt+8rn3?1_5<@QIkR$eSVM&-`PcSVp<+@MLqE9a>2v*5dP4*tmT|}cpJ%aS%#uu zC`T?76!pEqhJ2%2>bIBc8b7{~hP!WYv_1Lw^CS+RLsmcid;KyKjbHmDG!=E0*Ien= z-slD7`$@lr5KQhn#-%4-U~=$S>Vygf6d@3bf`UMxkk<{90#M}dQsoGd5|I!>p3u}f zp&HeGi|&m;2n9tEa#c3F+V8Zo)n&@2KS^mt6HvD|^~ep8OfvrRAx55ffvNo`6LTPOzaP52um3)%UOmqVSz86sB#0AcLeJ7J|4FfvYuKlM6)%NnV{wdloWz1I@D0Ztc3|gg^Ts0XktCLenS z5=jv1KH1m}u4<>|BWnr1t3Bl%J)|3*fLzZLQ*0t9E^zUOzu?O5K}f11(R6~HHz-Iy zDH`5$9Sgtu2b}$4A0ir0g+jYfrrFhuXF9!V2=k4AlF>NlzWWR#JAS1(0E4GVdmJ4$p{x)>3tOpO z*-qrG<7z0=g%ne6VhlMlbk(k2nzwiW#B_|r(Q~HMO73UfCpJ>EX?4~zJRl{YR(#O^ zlZ?c;yzAFoeDVdNr$^9QI0i4^oyj+Mpvkx&H zm#r}&%M4r-roQK9f-8MFuMkMhw1)73_ZfTbFsB~rCvtKGMIjX)jIAOpAyx4=v#40TbPC~-br9ybKyHu9=ZZ}{OH8Xy9YV) z#eXAm;v%X#cr2jgR8)-uf1yZr{jH@yoG{N~PHEE$lE zH!^#LLJ|5msSsxLZu*=k-5NCfI=h{Cf{E|!COIBSMZ&=1RvQ28c9i<;J?K86)AJBk zySR;oJ-5-k{#u&WbP~`VyySFLccMsjkO=jI)?zUKx7g64n9CHW7|-chj?Of z#=rF}@e>!-auh;K=hF1~iV_b%mzG3(M)*DNApD+pWZXtOp+cyl(YLtt!qT1Cg5{&@ z9X4p!oXG1Edc*sy?QKzp;TcttJ-OLs3OG!s(>ou5tJ!ms3$i4-ey~O zmW;(`uxl1=HoK9R4m0`GD^iwPf*uN>cza304eNb7_iP$rJcpQCK-hR6H~9~`mRHKV z+1RzU;cPcCGRD~VelCBf+bs6hNn(f37F=Ji@xOo^oAByK2XElcp1IX-3Ss(CmV;dp zjdS(e&myLyIx(ibP~^Ec+|}7bd@mp;Z(#V=;3A4*6oXnE*JZaWgy8D8b`d*t#%MrS zUUcs<5~nX0sq*E;_W}Y;=S!G!6NiM_RT$IdD0;hkE4H1D*0Lscyu$R}qjGx(-3cL> z{NXQM)!8fjFCdXVq2@M_)>2YG7?*AgT0UAuYuR2eB$esCN11r)Wek2)-&?NtLccjl z>`>+9LcSM}y*F@5Y~4pOO_OH3hVLz2NLaRu9z4zHH=i~(?{(racvF?>3e1K4-}xZW zbrh;S#ObS-=sOgJlI|&XBP4-95sI!nT}P(PMPBXlM*P$zCSTYO@dRT}zDP0}%RYKh zN!yF=Jx2WaMM7CdGWrSs3yAaqHVoiW|FN~}NEj|XxEZaN&U6&JOZ~dRUWUsYLNNXM zF(QLQKzih)HeM)IH+5iKx|+JO1w@{Elh9{wby5HF;`%pQGX3|O6WoGqr5v19pyumt#!Uo`o7S@M zo1bCf*Lw))M<<$EUPc`nzXL(!)uY6R)6aGFGXY?q*OkbOusw;E@6aua;)O`t)0JoG zp;kkf0F=gBLJL|5Eor0i)-`H5HeN`W1EbLkAw;FL$o2(rn7-97m`@n$!ag@KZCAKe zOK7y~i!#)}WU}eQ>*Re~cAmy$!+J$u5PjuHCFDX^d@mrd%O&hWiTT79Y|SP&$sEG$ z6coH>4ox3f?@)i;QfD{yPRLwn^1puNYER0*l>q8Z^1j8ABcNuR`qf%aBrKceZ_oI~ zDTL(`I>YyEL{aZuH(XxPcR(8QH=|#RzIK%OaOoaNUIYdM_#m*Z+ba06Hi4m9kR5FJAAHvWHL|vLs zEansIvLn$Lo$N!ILDU&U8*FK$`JVTh5@qL5X7)xx2qypIm#+7zL=0+4^sv`8al*c@ z$K(YpA&kNuks3NoKE@Kt%&oFaBS^yc-AJIh-n3sf6}9n32#6g#O?>~U0(Yon45KE| z;CC-%Io5XJ%9KC2&4bLLQ@74(ypR)0ZHT7Z)@2T1deQ1an7W3kXMNW%GzjUQX#Wbx zFk}KO2RK7+;?Ayf=rnJai&&d(Uk?G@umb(kn$UqMJjVuyi61?m&mNQ-gMbFSt4A)F z#UpG&38|dHwWSQXiM92oCi2h`2H^tiKMk~Zy10I z5RfsUwfVx76Ir$^$e^hZy*F|cN_M~3q&4YHB6sqzW@1CJyA z84*up3}LD5EM7tVZJ~D6KlXOD>t9y8*{EH$n7TE~bWzGCl<7j4xdDNIssH;mB3XnG z?T(aI^a2_ve?2l2J+EG6$#Q@(FA+p9j22{5B#fff>}I^Yp>38WyeNu7>*qdr>Fl-yY|}lP~0zR7X#aFm>>hPPE1oYuk9z32AEIF_Po<6QAp8 z`sfBjebc*WW7qOeB1l}GVEpmtT!m>D45Mqc2YY*a^$J&5waLs?d&#p`5R*}A*LCE1gk7^8 zct-nRe%MME@On9G6Cayo_@Doq$eBw_4V@!#)j13}i$`|?FrRe!SqTQITRxw<#cj0R zb0gs!R{?P9t3PJq^`pcuk7p?-%PjSJdw~FTD;Cl6iTBgEai#6P#7>TI{>wjrMAA^t zeC>u-EF}DeJB%YBOUnjy9>_eTwd`RmITdAO*IvfoIF?a7DfEID=5;p7w)QcRAad*+ zS6|%E^pW%pd}FU3CVpwmP>wn8(h4y)<@LoI6M2yoMBY9_G{aDgnx*q-c<%~h$vGv| z`n?pykDNo~5H^d1A$)=Tm}uW6(;DU+A#;nx+SzEE4Oz-DewVVV7l^jKsr9Eze;te& zX}V*BZSriFY&l&(&dE^muxP{chwh3*lGsI;LpL+r2Bz4&3pCdgRCAQr#jAGB9h-7& zjAXg}EYMh&b>8U2$XHg}DMN~7jeOtIh!QNz{Snt<8vbJ^Adv0+TS{M_Diy>YY#xc> zB-=+zT9qo5h^;1^JP=eLe_18XFb>l}X9}FXrKm}jilo=+i%cG<73qaqieH~96~rjg z``F(8mB|BLp_&U-ks5HkcQBI&0_lYYspdknm0{%72}c2C>pZwZH5Z!A^pfSyBrAbUy5^V*BDEFw~0B+t)9{+6qNVqar>-{A!OEG)?0z} z%x!OAZhP5oX|d4I7NV{t$ZvjdnUMn#-u3&f9RJxk!@I{w#so`mZuYEhIna&EDGrPA zu$4hz3$U#SWmP2MWi>=b6P$f@lC!U-Z%tahshRK+-{xdnD8jr@#Tv@rhpf=-LqJ`N z^^VtIox=6^&-I`}Ik5$K&RkQ>$368SUE%{pEYsJFos2U0_y{BWtvB`s>lBi)vfi_m zE88iOc))!UZATxoKtyl+`v^nNk7X1|O>=;aUs}NYwch1uCbm=LKD<)gjn;z?`iM$R z)1naVzthOP>+5M+Wbeph<4IonhjUzfYpTq(v!&?bfzo&&jXq|9Cjxn6>rZ=ziH#=- z)+yZZ`T0byCYT;cFf|fq{@MnX-QsC$tR&)r(mwLC2YKOj#<$KC1;R^exO6bW;v1V- zd{dLxRnk+mgxQW#-%#DhENPu-&GnAk%HI>7fs%>`%Jb0OK4gEx06w^aUn&;f(1;RJ zxMp>I_Ki!=D6&Od^7+3@nFE>WL|(94UoL~QlzqTv%JdMOay~P42zlLQ#<$QsWIHae zZRLv>58dqn?nAoSD#c+Gc}#oCZP=@)Huod{Q+zkMc?Gfuc`QAdS%`lj literal 0 HcmV?d00001 From 23a25bac6706c51ceef6d7cc1aa53d14436ba24e Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Fri, 15 Apr 2022 13:35:15 -0400 Subject: [PATCH 008/166] Add customization of enable notifications image content --- ...ingEnableNotificationsViewController.swift | 119 +++++++++++------- ...rdingEnableNotificationsViewController.xib | 2 +- 2 files changed, 73 insertions(+), 48 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift index b61d0a7e99e7..645b2eb76757 100644 --- a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift @@ -5,11 +5,31 @@ class OnboardingEnableNotificationsViewController: UIViewController { @IBOutlet weak var subTitleLabel: UILabel! @IBOutlet weak var detailView: UIView! - var promptSelection: OnboardingOption? + var selectedOption: OnboardingOption = .notifications override func viewDidLoad() { super.viewDidLoad() + applyStyles() + updateContent() + } +} + +// MARK: - IBAction's +extension OnboardingEnableNotificationsViewController { + @IBAction func enableButtonTapped(_ sender: Any) { + InteractiveNotificationsManager.shared.requestAuthorization { authorized in + DispatchQueue.main.async { + self.dismiss(animated: true) + } + } + } + + @IBAction func skipButtonTapped(_ sender: Any) { + navigationController?.popViewController(animated: true) + } +} + // MARK: - Trait Collection Handling extension OnboardingEnableNotificationsViewController { func updateContent(for traitCollection: UITraitCollection) { @@ -25,72 +45,77 @@ extension OnboardingEnableNotificationsViewController { updateContent(for: traitCollection) } } + +// MARK: - Private Helpers +private extension OnboardingEnableNotificationsViewController { + func applyStyles() { navigationController?.navigationBar.isHidden = true + titleLabel.font = WPStyleGuide.serifFontForTextStyle(.title1, fontWeight: .semibold) titleLabel.textColor = .text - subTitleLabel.font = WPStyleGuide.serifFontForTextStyle(.title1, fontWeight: .regular) + subTitleLabel.font = WPStyleGuide.serifFontForTextStyle(.title3, fontWeight: .regular) subTitleLabel.textColor = .text + } - let option = promptSelection ?? .notifications - + func updateContent() { let text: String - let detail: UIView + let notificationContent: UnifiedPrologueNotificationsContent? - switch option { + switch selectedOption { case .stats: - text = "Know when your traffic spikes, or when your site passes a milestone." - detail = UIView.embedSwiftUIView(UnifiedPrologueStatsContentView()) - + text = StatsStrings.subTitle + notificationContent = .init(topElementTitle: StatsStrings.notificationTopTitle, + middleElementTitle: StatsStrings.notificationMiddleTitle, + bottomElementTitle: StatsStrings.notificationBottomTitle, + topImage: "view-milestone-1k", + middleImage: "traffic-surge-icon") case .writing: - text = "Stay in touch with your audience with like and comment notifications." - detail = UIView.embedSwiftUIView(UnifiedPrologueNotificationsContentView()) + text = WritingStrings.subTitle + notificationContent = nil - case .notifications: - text = "Tap the Allow button to enable notifications." - detail = UIView.embedSwiftUIView(UnifiedPrologueNotificationsContentView()) + case .notifications, .other: + text = DefaultStrings.subTitle + notificationContent = nil case .reader: - text = "Know when your favorite authors post new content." - detail = UIView.embedSwiftUIView(UnifiedPrologueReaderContentView()) - - case .other: - text = "Tap the Allow button to enable notifications." - detail = UIView.embedSwiftUIView(UnifiedPrologueNotificationsContentView()) + text = ReaderStrings.subTitle + notificationContent = .init(topElementTitle: ReaderStrings.notificationTopTitle, + middleElementTitle: ReaderStrings.notificationMiddleTitle, + bottomElementTitle: ReaderStrings.notificationBottomTitle) } - subTitleLabel.text = text - - detail.frame.size.width = detailView.frame.width - detailView.addSubview(detail) - detail.pinSubviewToAllEdges(detailView) + subTitleLabel.text = text - if option == .notifications { - - } + // Convert the image view to a UIView and embed it + let imageView = UIView.embedSwiftUIView(UnifiedPrologueNotificationsContentView(notificationContent)) + imageView.frame.size.width = detailView.frame.width + detailView.addSubview(imageView) + imageView.pinSubviewToAllEdges(detailView) } +} - private func showPrompt() { - InteractiveNotificationsManager.shared.requestAuthorization { authorized in - DispatchQueue.main.async { - self.dismiss(animated: true) - } - } - } +// MARK: - Constants / Strings +private struct StatsStrings { + static let subTitle = NSLocalizedString("Know when your site is getting more traffic, new followers, or when it passes a new milestone!", comment: "Subtitle giving the user more context about why to enable notifications.") - @IBAction func enableButtonTapped(_ sender: Any) { - showPrompt() - } + static let notificationTopTitle = NSLocalizedString("Congratulations! Your site passed *1000 all-time* views!", comment: "Example notification displayed in the prologue carousel of the app. Username should be marked with * characters and will be displayed as bold text.") + static let notificationMiddleTitle = NSLocalizedString("Your site appears to be getting *more traffic* than usual!", comment: "Example notification displayed in the prologue carousel of the app. Username should be marked with * characters and will be displayed as bold text.") + static let notificationBottomTitle = NSLocalizedString("*Johann Brandt* is now following your site!", comment: "Example notification displayed in the prologue carousel of the app. Username should be marked with * characters and will be displayed as bold text.") +} - @IBAction func skipButtonTappe(_ sender: Any) { - navigationController?.popViewController(animated: true) - } +private struct WritingStrings { + static let subTitle = NSLocalizedString("Stay in touch with your audience with like and comment notifications.", comment: "Subtitle giving the user more context about why to enable notifications.") +} - private func configure(button: UIButton) { - button.titleLabel?.font = WPStyleGuide.fontForTextStyle(.headline) - button.setTitleColor(.text, for: .normal) - button.titleLabel?.textAlignment = .left - button.titleEdgeInsets.left = 10 - } +private struct DefaultStrings { + static let subTitle = NSLocalizedString("Stay in touch with like and comment notifications.", comment: "Subtitle giving the user more context about why to enable notifications.") +} + +private struct ReaderStrings { + static let subTitle = NSLocalizedString("Know when your favorite authors post new content.", comment: "Subtitle giving the user more context about why to enable notifications.") + static let notificationTopTitle = NSLocalizedString("*Madison Ruiz* added a new post to their site", comment: "Example notification displayed in the prologue carousel of the app. Username should be marked with * characters and will be displayed as bold text.") + static let notificationMiddleTitle = NSLocalizedString("You received *50 likes* on your comment", comment: "Example notification displayed in the prologue carousel of the app. Username should be marked with * characters and will be displayed as bold text.") + static let notificationBottomTitle = NSLocalizedString("*Johann Brandt* responded to your comment", comment: "Example notification displayed in the prologue carousel of the app. Username should be marked with * characters and will be displayed as bold text.") } diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib index 5786fa6ed1a7..3172811077a5 100644 --- a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.xib @@ -80,7 +80,7 @@ - + From 8d62144bb3ddb21331ef3189c2cb8cf4715d8e19 Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Fri, 15 Apr 2022 13:35:39 -0400 Subject: [PATCH 009/166] Update variable name to selectedOption --- .../OnboardingQuestionsPromptViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift index bcacd902c047..c55336384faf 100644 --- a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift @@ -48,7 +48,7 @@ class OnboardingQuestionsPromptViewController: UIViewController, UINavigationCon private func pushToNotificationsPrompt(option: OnboardingOption ) { let controller = OnboardingEnableNotificationsViewController() - controller.promptSelection = option + controller.selectedOption = option navigationController?.pushViewController(controller, animated: true) } } From e0b230de9013179fbb3ad0cff17aaa7850d1dcc5 Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Mon, 18 Apr 2022 15:43:58 -0400 Subject: [PATCH 010/166] Fix RTL issues on the onboarding prompt --- ...oardingQuestionsPromptViewController.swift | 3 ++- ...nboardingQuestionsPromptViewController.xib | 23 ++++++++++--------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift index c55336384faf..b9556d2efea5 100644 --- a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift @@ -117,8 +117,9 @@ private extension OnboardingQuestionsPromptViewController { private func style(button: UIButton) { button.titleLabel?.font = WPStyleGuide.fontForTextStyle(.headline) button.setTitleColor(.text, for: .normal) - button.titleLabel?.textAlignment = .left + button.titleLabel?.textAlignment = .natural button.titleEdgeInsets.left = 10 + button.flipInsetsForRightToLeftLayoutDirection() button.imageView?.contentMode = .scaleAspectFit } } diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib index 198371e77bca..b815317c93ab 100644 --- a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib @@ -51,7 +51,7 @@ - - - - - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib index 9b95513957ad..ac403d0e322f 100644 --- a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.xib @@ -1,6 +1,6 @@ - + @@ -26,33 +26,33 @@ - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WordPress/Classes/ViewRelated/System/Floating Create Button/CreateButtonActionSheet.swift b/WordPress/Classes/ViewRelated/System/Floating Create Button/CreateButtonActionSheet.swift index 769fe02b4f19..4a85f2e7a40e 100644 --- a/WordPress/Classes/ViewRelated/System/Floating Create Button/CreateButtonActionSheet.swift +++ b/WordPress/Classes/ViewRelated/System/Floating Create Button/CreateButtonActionSheet.swift @@ -11,8 +11,9 @@ class CreateButtonActionSheet: ActionSheetViewController { } init(actions: [ActionSheetItem]) { + let headerView = FeatureFlag.bloggingPrompts.enabled ? BloggingPromptsHeaderView.loadFromNib() : nil let buttons = actions.map { $0.makeButton() } - super.init(headerTitle: Constants.title, buttons: buttons) + super.init(headerView: headerView, headerTitle: Constants.title, buttons: buttons) } required init?(coder: NSCoder) { diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 1e8de864e844..e2c7ed8ce2e6 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -1395,6 +1395,10 @@ 8355D7D911D260AA00A61362 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8355D7D811D260AA00A61362 /* CoreData.framework */; }; 836498C828172C5900A2C170 /* WPStyleGuide+BloggingPrompts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 836498C728172C5900A2C170 /* WPStyleGuide+BloggingPrompts.swift */; }; 836498C928172C5900A2C170 /* WPStyleGuide+BloggingPrompts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 836498C728172C5900A2C170 /* WPStyleGuide+BloggingPrompts.swift */; }; + 836498CB2817301800A2C170 /* BloggingPromptsHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 836498CA2817301800A2C170 /* BloggingPromptsHeaderView.xib */; }; + 836498CC2817301800A2C170 /* BloggingPromptsHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 836498CA2817301800A2C170 /* BloggingPromptsHeaderView.xib */; }; + 836498CE281735CC00A2C170 /* BloggingPromptsHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 836498CD281735CC00A2C170 /* BloggingPromptsHeaderView.swift */; }; + 836498CF281735CC00A2C170 /* BloggingPromptsHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 836498CD281735CC00A2C170 /* BloggingPromptsHeaderView.swift */; }; 8370D10A11FA499A009D650F /* WPTableViewActivityCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8370D10911FA499A009D650F /* WPTableViewActivityCell.m */; }; 839B150B2795DEE0009F5E77 /* UIView+Margins.swift in Sources */ = {isa = PBXBuildFile; fileRef = 839B150A2795DEE0009F5E77 /* UIView+Margins.swift */; }; 839B150C2795DEE0009F5E77 /* UIView+Margins.swift in Sources */ = {isa = PBXBuildFile; fileRef = 839B150A2795DEE0009F5E77 /* UIView+Margins.swift */; }; @@ -6144,6 +6148,8 @@ 8355D7D811D260AA00A61362 /* CoreData.framework */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 835E2402126E66E50085940B /* AssetsLibrary.framework */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; }; 836498C728172C5900A2C170 /* WPStyleGuide+BloggingPrompts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WPStyleGuide+BloggingPrompts.swift"; sourceTree = ""; }; + 836498CA2817301800A2C170 /* BloggingPromptsHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BloggingPromptsHeaderView.xib; sourceTree = ""; }; + 836498CD281735CC00A2C170 /* BloggingPromptsHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BloggingPromptsHeaderView.swift; sourceTree = ""; }; 8370D10811FA499A009D650F /* WPTableViewActivityCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WPTableViewActivityCell.h; sourceTree = ""; }; 8370D10911FA499A009D650F /* WPTableViewActivityCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WPTableViewActivityCell.m; sourceTree = ""; }; 839B150A2795DEE0009F5E77 /* UIView+Margins.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Margins.swift"; sourceTree = ""; }; @@ -14820,6 +14826,8 @@ children = ( F5E032E32408D537003AF350 /* ActionSheetViewController.swift */, F5E032E52408D537003AF350 /* BottomSheetPresentationController.swift */, + 836498CD281735CC00A2C170 /* BloggingPromptsHeaderView.swift */, + 836498CA2817301800A2C170 /* BloggingPromptsHeaderView.xib */, ); path = "Action Sheet"; sourceTree = ""; @@ -16053,6 +16061,7 @@ 9808655A203D075E00D58786 /* EpilogueUserInfoCell.xib in Resources */, C7E5F2552799BD54009BC263 /* cool-blue-icon-app-83.5x83.5@2x.png in Resources */, 17222D92261DDDF90047B163 /* blue-classic-icon-app-83.5x83.5@2x.png in Resources */, + 836498CB2817301800A2C170 /* BloggingPromptsHeaderView.xib in Resources */, 17222D90261DDDF90047B163 /* blue-classic-icon-app-60x60@2x.png in Resources */, E6D2E1611B8AA4410000ED14 /* ReaderTagStreamHeader.xib in Resources */, 577C2AB62294401800AD1F03 /* PostCompactCell.xib in Resources */, @@ -16364,6 +16373,7 @@ FABB1FC12602FC2C00C8785C /* defaultPostTemplate.html in Resources */, FABB1FC32602FC2C00C8785C /* defaultPostTemplate_old.html in Resources */, FABB1FC42602FC2C00C8785C /* ReaderInterestsCollectionViewCell.xib in Resources */, + 836498CC2817301800A2C170 /* BloggingPromptsHeaderView.xib in Resources */, FABB1FC52602FC2C00C8785C /* StatsGhostTopHeaderCell.xib in Resources */, 9856A38A261FC206008D6354 /* UserProfileUserInfoCell.xib in Resources */, FABB1FC72602FC2C00C8785C /* RegisterDomainDetailsFooterView.xib in Resources */, @@ -19020,6 +19030,7 @@ 8B05D29323AA572A0063B9AA /* GutenbergMediaEditorImage.swift in Sources */, B532D4EA199D4357006E4DF6 /* NoteBlockHeaderTableViewCell.swift in Sources */, 24ADA24C24F9A4CB001B5DAE /* RemoteFeatureFlagStore.swift in Sources */, + 836498CE281735CC00A2C170 /* BloggingPromptsHeaderView.swift in Sources */, 319D6E8519E44F7F0013871C /* SuggestionsTableViewCell.m in Sources */, 40A71C69220E1952002E3D25 /* LastPostStatsRecordValue+CoreDataClass.swift in Sources */, 98AA6D1126B8CE7200920C8B /* Comment+CoreDataClass.swift in Sources */, @@ -19885,6 +19896,7 @@ FABB21132602FC2C00C8785C /* AuthenticationService.swift in Sources */, FABB21142602FC2C00C8785C /* JetpackSiteRef.swift in Sources */, FABB21152602FC2C00C8785C /* WPStyleGuide+Reply.swift in Sources */, + 836498CF281735CC00A2C170 /* BloggingPromptsHeaderView.swift in Sources */, FABB21162602FC2C00C8785C /* WPBlogTableViewCell.m in Sources */, FABB21172602FC2C00C8785C /* JetpackBackupOptionsViewController.swift in Sources */, FABB21182602FC2C00C8785C /* TopViewedVideoStatsRecordValue+CoreDataProperties.swift in Sources */, From 5b92771563f9fd260b47b147743c71b1b413db22 Mon Sep 17 00:00:00 2001 From: Stephenie Harris Date: Tue, 26 Apr 2022 16:10:51 -0600 Subject: [PATCH 091/166] Set footer background color. --- .../Collapsable Header/CollapsableHeaderViewController.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift b/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift index 787ca2ba9359..c05e7e0bbbbc 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift @@ -508,6 +508,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost { func configureVerticalButtonView() { usesVerticalActionButtons = true + footerView.backgroundColor = .systemBackground footerHeightContraint.constant = footerHeight selectedStateButtonsContainer.axis = .vertical From 9a97289bc3da33676260b79895e8fefcc88edc2d Mon Sep 17 00:00:00 2001 From: Hassaan El-Garem Date: Wed, 27 Apr 2022 00:21:39 +0200 Subject: [PATCH 092/166] Fix: failing unit tests --- WordPress/WordPressTest/QuickStartFactoryTests.swift | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/WordPress/WordPressTest/QuickStartFactoryTests.swift b/WordPress/WordPressTest/QuickStartFactoryTests.swift index 00ce0271db0b..f873ef8e484d 100644 --- a/WordPress/WordPressTest/QuickStartFactoryTests.swift +++ b/WordPress/WordPressTest/QuickStartFactoryTests.swift @@ -83,10 +83,11 @@ class QuickStartFactoryTests: XCTestCase { let tours = QuickStartFactory.allTours(for: blog) // Then - XCTAssertEqual(tours.count, 3) + XCTAssertEqual(tours.count, 4) XCTAssertTrue(tours[0] is QuickStartCheckStatsTour) - XCTAssertTrue(tours[1] is QuickStartViewTour) - XCTAssertTrue(tours[2] is QuickStartFollowTour) + XCTAssertTrue(tours[1] is QuickStartNotificationsTour) + XCTAssertTrue(tours[2] is QuickStartViewTour) + XCTAssertTrue(tours[3] is QuickStartFollowTour) } func testToursForNewSite() { From dea1064a4b90c3210abf5d841c21a30825c81b4e Mon Sep 17 00:00:00 2001 From: Hassaan El-Garem Date: Wed, 27 Apr 2022 01:32:28 +0200 Subject: [PATCH 093/166] Fix: tour assignment for self-hosted sites Only assign new tours if the feature flag is enabled --- .../ViewRelated/NUX/WordPressAuthenticationManager.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/NUX/WordPressAuthenticationManager.swift b/WordPress/Classes/ViewRelated/NUX/WordPressAuthenticationManager.swift index 06e7753b4a4a..4993f7d85c02 100644 --- a/WordPress/Classes/ViewRelated/NUX/WordPressAuthenticationManager.swift +++ b/WordPress/Classes/ViewRelated/NUX/WordPressAuthenticationManager.swift @@ -335,7 +335,8 @@ extension WordPressAuthenticationManager: WordPressAuthenticatorDelegate { // If adding a self-hosted site, skip the Epilogue if let wporg = credentials.wporg, let blog = Blog.lookup(username: wporg.username, xmlrpc: wporg.xmlrpc, in: ContextManager.shared.mainContext) { - presentQuickStartPrompt(for: blog, in: navigationController, onDismiss: onDismissQuickStartPromptForExistingSiteHandler) + let onDismissHandler = FeatureFlag.quickStartForExistingUsers.enabled ? onDismissQuickStartPromptForExistingSiteHandler : onDismissQuickStartPromptForNewSiteHandler + presentQuickStartPrompt(for: blog, in: navigationController, onDismiss: onDismissHandler) return } From f16f06dfe8f7cca41ff8f59fc7ddad1dd27d4315 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Wed, 27 Apr 2022 14:49:06 +1000 Subject: [PATCH 094/166] Remove typo from comment in `runRubyScript` --- Scripts/BuildPhases/runRubyScript | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Scripts/BuildPhases/runRubyScript b/Scripts/BuildPhases/runRubyScript index bb4b7e90b00b..14a208a97e2c 100755 --- a/Scripts/BuildPhases/runRubyScript +++ b/Scripts/BuildPhases/runRubyScript @@ -2,8 +2,8 @@ # Use this to run a Ruby script from a "Script Build Phase" from Xcode. # -# Since shell scripts ran by Xcode do not source the user shell profile, typical user setups like the configurations of `rbenv` or `rvm` would not be set up properly. -# This script check if either rbenv or rvm is installed on the Mac and runs the setup steps as appririate, before running the ruby script via `bundle exec` +# Since shell scripts ran by Xcode do not source the user shell profile, typical user setups like the configurations of `rbenv` or `rvm` would not be set up properly. +# This script check if either `rbenv` or `rvm` is installed on the Mac and runs the setup steps as appropriate, before running the ruby script via `bundle exec` # # Usage: # `runRubyScript ` From 34a1d86a18b12eba78fbe7c788962d55fa259ae5 Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Wed, 27 Apr 2022 10:22:56 +0200 Subject: [PATCH 095/166] Add guard statements to replace force-unwraps --- .../Reader/Detail/ReaderDetailCoordinator.swift | 9 +++++---- .../Reader/ReaderPostCellActions.swift | 16 +++++++++------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailCoordinator.swift b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailCoordinator.swift index 9058a959c5a5..b8ec776b6524 100644 --- a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailCoordinator.swift @@ -410,12 +410,13 @@ class ReaderDetailCoordinator { /// private func showMenu(_ anchorView: UIView) { guard let post = post, - let context = post.managedObjectContext, - let viewController = viewController else { + let context = post.managedObjectContext, + let viewController = viewController, + let _followCommentsService = FollowCommentsService(post: post) else { return } - followCommentsService = FollowCommentsService(post: post) + followCommentsService = _followCommentsService ReaderMenuAction(logged: ReaderHelpers.isLoggedIn()).execute( post: post, @@ -424,7 +425,7 @@ class ReaderDetailCoordinator { anchor: anchorView, vc: viewController, source: ReaderPostMenuSource.details, - followCommentsService: followCommentsService! + followCommentsService: _followCommentsService ) WPAnalytics.trackReader(.readerArticleDetailMoreTapped) diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderPostCellActions.swift b/WordPress/Classes/ViewRelated/Reader/ReaderPostCellActions.swift index 13c258391c3e..59eefd1e4c44 100644 --- a/WordPress/Classes/ViewRelated/Reader/ReaderPostCellActions.swift +++ b/WordPress/Classes/ViewRelated/Reader/ReaderPostCellActions.swift @@ -89,11 +89,13 @@ class ReaderPostCellActions: NSObject, ReaderPostCellDelegate { } func readerCell(_ cell: ReaderPostCardCell, menuActionForProvider provider: ReaderPostContentProvider, fromView sender: UIView) { - guard let post = provider as? ReaderPost, let origin = origin else { + guard let post = provider as? ReaderPost, + let origin = origin, + let _followCommentsService = FollowCommentsService(post: post) else { return } - followCommentsService = FollowCommentsService(post: post) + followCommentsService = _followCommentsService ReaderMenuAction(logged: isLoggedIn).execute( post: post, @@ -102,7 +104,7 @@ class ReaderPostCellActions: NSObject, ReaderPostCellDelegate { anchor: sender, vc: origin, source: ReaderPostMenuSource.card, - followCommentsService: followCommentsService! + followCommentsService: _followCommentsService ) WPAnalytics.trackReader(.postCardMoreTapped) } @@ -129,10 +131,10 @@ class ReaderPostCellActions: NSObject, ReaderPostCellDelegate { ReaderFollowAction().execute(with: post, context: context, completion: { follow in - ReaderHelpers.dispatchToggleFollowSiteMessage(post: post, follow: follow, success: true) - }, failure: { follow, _ in - ReaderHelpers.dispatchToggleFollowSiteMessage(post: post, follow: follow, success: false) - }) + ReaderHelpers.dispatchToggleFollowSiteMessage(post: post, follow: follow, success: true) + }, failure: { follow, _ in + ReaderHelpers.dispatchToggleFollowSiteMessage(post: post, follow: follow, success: false) + }) } func toggleSavedForLater(for post: ReaderPost) { From 248ece3b9e1c44c9f870afe07537bef5e68cbed2 Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Wed, 27 Apr 2022 09:54:52 +0100 Subject: [PATCH 096/166] Refactor: search button no longer needs to be spotlightable --- .../ReaderTabViewController.swift | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Reader/Tab Navigation/ReaderTabViewController.swift b/WordPress/Classes/ViewRelated/Reader/Tab Navigation/ReaderTabViewController.swift index d12f4764ef70..81e72009ffe6 100644 --- a/WordPress/Classes/ViewRelated/Reader/Tab Navigation/ReaderTabViewController.swift +++ b/WordPress/Classes/ViewRelated/Reader/Tab Navigation/ReaderTabViewController.swift @@ -12,7 +12,6 @@ class ReaderTabViewController: UIViewController { }() private let settingsButton: SpotlightableButton = SpotlightableButton(type: .custom) - private let searchButton: SpotlightableButton = SpotlightableButton(type: .custom) init(viewModel: ReaderTabViewModel, readerTabViewFactory: @escaping (ReaderTabViewModel) -> ReaderTabView) { self.viewModel = viewModel @@ -81,22 +80,21 @@ class ReaderTabViewController: UIViewController { } func setupNavigationButtons() { + // Search Button + let searchButton = UIBarButtonItem(image: UIImage.gridicon(.search), + style: .plain, + target: self, + action: #selector(didTapSearchButton)) + searchButton.accessibilityIdentifier = ReaderTabConstants.searchButtonAccessibilityIdentifier + // Settings Button settingsButton.spotlightOffset = ReaderTabConstants.spotlightOffset settingsButton.setImage(.gridicon(.cog), for: .normal) settingsButton.addTarget(self, action: #selector(didTapSettingsButton), for: .touchUpInside) settingsButton.accessibilityIdentifier = ReaderTabConstants.settingsButtonIdentifier - - // Search Button - searchButton.spotlightOffset = ReaderTabConstants.spotlightOffset - searchButton.setImage(.gridicon(.search), for: .normal) - searchButton.addTarget(self, action: #selector(didTapSearchButton), for: .touchUpInside) - searchButton.accessibilityIdentifier = ReaderTabConstants.searchButtonAccessibilityIdentifier - let settingsButton = UIBarButtonItem(customView: settingsButton) - let searchBarButton = UIBarButtonItem(customView: searchButton) - navigationItem.rightBarButtonItems = [searchBarButton, settingsButton] + navigationItem.rightBarButtonItems = [searchButton, settingsButton] } override func loadView() { From 706745dd22bfa3d7729bae2a222ca0a3b735e3c8 Mon Sep 17 00:00:00 2001 From: James Frost Date: Wed, 27 Apr 2022 10:35:42 +0100 Subject: [PATCH 097/166] Stats Insights: Add featuredImageURL to LastPostStatsRecordValue --- Podfile | 4 +- Podfile.lock | 11 +- ...stPostStatsRecordValue+CoreDataClass.swift | 11 +- ...tStatsRecordValue+CoreDataProperties.swift | 1 + .../WordPress.xcdatamodeld/.xccurrentversion | 2 +- .../WordPress 139.xcdatamodel/contents | 1062 +++++++++++++++++ WordPress/WordPress.xcodeproj/project.pbxproj | 4 +- 7 files changed, 1087 insertions(+), 8 deletions(-) create mode 100644 WordPress/Classes/WordPress.xcdatamodeld/WordPress 139.xcdatamodel/contents diff --git a/Podfile b/Podfile index 3ff3bc552f79..df64558a1a7c 100644 --- a/Podfile +++ b/Podfile @@ -47,9 +47,9 @@ def wordpress_ui end def wordpress_kit - pod 'WordPressKit', '~> 4.50.0' + # pod 'WordPressKit', '~> 4.50.0' # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :tag => '' - # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :branch => 'task/18324-site-creation-with-site-name' + pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :branch => 'feature/stats-last-post-insight-featured-image' # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :commit => '' # pod 'WordPressKit', :path => '../WordPressKit-iOS' end diff --git a/Podfile.lock b/Podfile.lock index fc76335b6191..9c4ac059b164 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -591,7 +591,7 @@ DEPENDENCIES: - SVProgressHUD (= 2.2.5) - WordPress-Editor-iOS (~> 1.19.8) - WordPressAuthenticator (~> 2.0.0) - - WordPressKit (~> 4.50.0) + - WordPressKit (from `https://github.com/wordpress-mobile/WordPressKit-iOS.git`, branch `feature/stats-last-post-insight-featured-image`) - WordPressMocks (~> 0.0.15) - WordPressShared (~> 1.17.1) - WordPressUI (~> 1.12.5) @@ -640,7 +640,6 @@ SPEC REPOS: - UIDeviceIdentifier - WordPress-Aztec-iOS - WordPress-Editor-iOS - - WordPressKit - WordPressMocks - WordPressShared - WordPressUI @@ -753,6 +752,9 @@ EXTERNAL SOURCES: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true :tag: v1.74.0 + WordPressKit: + :branch: feature/stats-last-post-insight-featured-image + :git: https://github.com/wordpress-mobile/WordPressKit-iOS.git Yoga: :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.74.0/third-party-podspecs/Yoga.podspec.json @@ -768,6 +770,9 @@ CHECKOUT OPTIONS: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true :tag: v1.74.0 + WordPressKit: + :commit: c15dbc12344806f53d0e33b827dba85370196221 + :git: https://github.com/wordpress-mobile/WordPressKit-iOS.git SPEC CHECKSUMS: Alamofire: 3ec537f71edc9804815215393ae2b1a8ea33a844 @@ -869,6 +874,6 @@ SPEC CHECKSUMS: ZendeskSupportSDK: 3a8e508ab1d9dd22dc038df6c694466414e037ba ZIPFoundation: ae5b4b813d216d3bf0a148773267fff14bd51d37 -PODFILE CHECKSUM: 4ec8f8e1fe1324b2079ae08999bcc274e8232655 +PODFILE CHECKSUM: 5035f62216a911f40cb4476d9190e9c0bde583fd COCOAPODS: 1.11.2 diff --git a/WordPress/Classes/Models/LastPostStatsRecordValue+CoreDataClass.swift b/WordPress/Classes/Models/LastPostStatsRecordValue+CoreDataClass.swift index 6fda524e757a..841df25b723a 100644 --- a/WordPress/Classes/Models/LastPostStatsRecordValue+CoreDataClass.swift +++ b/WordPress/Classes/Models/LastPostStatsRecordValue+CoreDataClass.swift @@ -10,6 +10,13 @@ public class LastPostStatsRecordValue: StatsRecordValue { return URL(string: url) } + public var featuredImageURL: URL? { + guard let url = featuredImageUrlString as String? else { + return nil + } + return URL(string: url) + } + public override func validateForInsert() throws { try super.validateForInsert() try recordValueSingleValueValidation() @@ -27,6 +34,7 @@ extension StatsLastPostInsight: StatsRecordValueConvertible { value.urlString = self.url.absoluteString value.viewsCount = Int64(self.viewsCount) value.postID = Int64(self.postID) + value.featuredImageUrlString = self.featuredImageURL?.absoluteString return [value] } @@ -47,7 +55,8 @@ extension StatsLastPostInsight: StatsRecordValueConvertible { likesCount: Int(insight.likesCount), commentsCount: Int(insight.commentsCount), viewsCount: Int(insight.viewsCount), - postID: Int(insight.postID)) + postID: Int(insight.postID), + featuredImageURL: insight.featuredImageURL) } static var recordType: StatsRecordType { diff --git a/WordPress/Classes/Models/LastPostStatsRecordValue+CoreDataProperties.swift b/WordPress/Classes/Models/LastPostStatsRecordValue+CoreDataProperties.swift index 4ab5dfddd611..7248acef20f3 100644 --- a/WordPress/Classes/Models/LastPostStatsRecordValue+CoreDataProperties.swift +++ b/WordPress/Classes/Models/LastPostStatsRecordValue+CoreDataProperties.swift @@ -15,5 +15,6 @@ extension LastPostStatsRecordValue { @NSManaged public var urlString: String? @NSManaged public var viewsCount: Int64 @NSManaged public var postID: Int64 + @NSManaged public var featuredImageUrlString: String? } diff --git a/WordPress/Classes/WordPress.xcdatamodeld/.xccurrentversion b/WordPress/Classes/WordPress.xcdatamodeld/.xccurrentversion index 37fda4b9a61b..a6087e972746 100644 --- a/WordPress/Classes/WordPress.xcdatamodeld/.xccurrentversion +++ b/WordPress/Classes/WordPress.xcdatamodeld/.xccurrentversion @@ -3,6 +3,6 @@ _XCCurrentVersionName - WordPress 138.xcdatamodel + WordPress 139.xcdatamodel diff --git a/WordPress/Classes/WordPress.xcdatamodeld/WordPress 139.xcdatamodel/contents b/WordPress/Classes/WordPress.xcdatamodeld/WordPress 139.xcdatamodel/contents new file mode 100644 index 000000000000..7f60a26875f1 --- /dev/null +++ b/WordPress/Classes/WordPress.xcdatamodeld/WordPress 139.xcdatamodel/contents @@ -0,0 +1,1062 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index cb676381f9b7..5712fcda5050 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -5103,6 +5103,7 @@ 1770BD0C267A368100D5F8C0 /* BloggingRemindersPushPromptViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BloggingRemindersPushPromptViewController.swift; sourceTree = ""; }; 177E7DAC1DD0D1E600890467 /* UINavigationController+SplitViewFullscreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UINavigationController+SplitViewFullscreen.swift"; sourceTree = ""; }; 1782BE831E70063100A91E7D /* MediaItemViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaItemViewController.swift; sourceTree = ""; }; + 17870A72281847D500D1C627 /* WordPress 139.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "WordPress 139.xcdatamodel"; sourceTree = ""; }; 1788106E260E488B00A98BD8 /* UnifiedPrologueNotificationsContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnifiedPrologueNotificationsContentView.swift; sourceTree = ""; }; 178810B42611D25600A98BD8 /* Text+BoldSubString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Text+BoldSubString.swift"; sourceTree = ""; }; 178810D82612037800A98BD8 /* UnifiedPrologueReaderContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnifiedPrologueReaderContentView.swift; sourceTree = ""; }; @@ -25746,6 +25747,7 @@ E125443B12BF5A7200D87A0A /* WordPress.xcdatamodeld */ = { isa = XCVersionGroup; children = ( + 17870A72281847D500D1C627 /* WordPress 139.xcdatamodel */, FE59DA9527D1FD0700624D26 /* WordPress 138.xcdatamodel */, FE97BC13274FCE7A00CF08F9 /* WordPress 137.xcdatamodel */, FEFC0F872730510F001F7F1D /* WordPress 136.xcdatamodel */, @@ -25885,7 +25887,7 @@ 8350E15911D28B4A00A7B073 /* WordPress.xcdatamodel */, E125443D12BF5A7200D87A0A /* WordPress 2.xcdatamodel */, ); - currentVersion = FE59DA9527D1FD0700624D26 /* WordPress 138.xcdatamodel */; + currentVersion = 17870A72281847D500D1C627 /* WordPress 139.xcdatamodel */; name = WordPress.xcdatamodeld; path = Classes/WordPress.xcdatamodeld; sourceTree = ""; From 7488b2dc0bea59720ded3bdb672ff24456892697 Mon Sep 17 00:00:00 2001 From: James Frost Date: Wed, 27 Apr 2022 10:53:20 +0100 Subject: [PATCH 098/166] Stats Insights: Add new LatestPostSummary cell --- .../LatestPostSummaryCell.swift | 6 ++- .../StatsLatestPostSummaryInsightsCell.swift | 39 +++++++++++++++++++ .../Stats/SiteStatsTableViewCells.swift | 10 +++-- WordPress/WordPress.xcodeproj/project.pbxproj | 6 +++ 4 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift diff --git a/WordPress/Classes/ViewRelated/Stats/Insights/Latest Post Summary/LatestPostSummaryCell.swift b/WordPress/Classes/ViewRelated/Stats/Insights/Latest Post Summary/LatestPostSummaryCell.swift index f0782243097b..0c6dd4e3ba8f 100644 --- a/WordPress/Classes/ViewRelated/Stats/Insights/Latest Post Summary/LatestPostSummaryCell.swift +++ b/WordPress/Classes/ViewRelated/Stats/Insights/Latest Post Summary/LatestPostSummaryCell.swift @@ -1,7 +1,11 @@ import UIKit import Gridicons -class LatestPostSummaryCell: StatsBaseCell, NibLoadable, Accessible { +protocol LatestPostSummaryConfigurable { + func configure(withInsightData lastPostInsight: StatsLastPostInsight?, chartData: StatsPostDetails?, andDelegate delegate: SiteStatsInsightsDelegate?) +} + +class LatestPostSummaryCell: StatsBaseCell, LatestPostSummaryConfigurable, NibLoadable, Accessible { // MARK: - Properties diff --git a/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift b/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift new file mode 100644 index 000000000000..d579b60184a5 --- /dev/null +++ b/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift @@ -0,0 +1,39 @@ +import UIKit + + +class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfigurable { + private weak var siteStatsInsightsDelegate: SiteStatsInsightsDelegate? + private typealias Style = WPStyleGuide.Stats + private var lastPostInsight: StatsLastPostInsight? + private var lastPostDetails: StatsPostDetails? + private var postTitle = StatSection.noPostTitle + + // MARK: - Initialization + + required override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + configureView() + } + + required init(coder: NSCoder) { + fatalError() + } + + // MARK: - View Configuration + + private func configureView() { + } + + // MARK: - Public Configuration + + func configure(withInsightData lastPostInsight: StatsLastPostInsight?, chartData: StatsPostDetails?, andDelegate delegate: SiteStatsInsightsDelegate?) { + siteStatsInsightsDelegate = delegate + statSection = .insightsLatestPostSummary + + guard let lastPostInsight = lastPostInsight else { + // Old cell shows Create Post if there's no latest post + return + } + } +} diff --git a/WordPress/Classes/ViewRelated/Stats/SiteStatsTableViewCells.swift b/WordPress/Classes/ViewRelated/Stats/SiteStatsTableViewCells.swift index 5e2aa06ecddd..48d6e1b2cf0b 100644 --- a/WordPress/Classes/ViewRelated/Stats/SiteStatsTableViewCells.swift +++ b/WordPress/Classes/ViewRelated/Stats/SiteStatsTableViewCells.swift @@ -140,10 +140,12 @@ struct CustomizeInsightsRow: ImmuTableRow { struct LatestPostSummaryRow: ImmuTableRow { - typealias CellType = LatestPostSummaryCell - static let cell: ImmuTableCell = { - return ImmuTableCell.nib(CellType.defaultNib, CellType.self) + if FeatureFlag.statsNewInsights.enabled { + return ImmuTableCell.class(StatsLatestPostSummaryInsightsCell.self) + } else { + return ImmuTableCell.nib(LatestPostSummaryCell.defaultNib, LatestPostSummaryCell.self) + } }() let summaryData: StatsLastPostInsight? @@ -153,7 +155,7 @@ struct LatestPostSummaryRow: ImmuTableRow { func configureCell(_ cell: UITableViewCell) { - guard let cell = cell as? CellType else { + guard let cell = cell as? LatestPostSummaryConfigurable else { return } diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 5712fcda5050..6734815e8c14 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -308,6 +308,8 @@ 1770BD0E267A368100D5F8C0 /* BloggingRemindersPushPromptViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1770BD0C267A368100D5F8C0 /* BloggingRemindersPushPromptViewController.swift */; }; 177E7DAD1DD0D1E600890467 /* UINavigationController+SplitViewFullscreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 177E7DAC1DD0D1E600890467 /* UINavigationController+SplitViewFullscreen.swift */; }; 1782BE841E70063100A91E7D /* MediaItemViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1782BE831E70063100A91E7D /* MediaItemViewController.swift */; }; + 17870A702816F2A000D1C627 /* StatsLatestPostSummaryInsightsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17870A6F2816F2A000D1C627 /* StatsLatestPostSummaryInsightsCell.swift */; }; + 17870A712816F2A000D1C627 /* StatsLatestPostSummaryInsightsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17870A6F2816F2A000D1C627 /* StatsLatestPostSummaryInsightsCell.swift */; }; 1788106F260E488B00A98BD8 /* UnifiedPrologueNotificationsContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1788106E260E488B00A98BD8 /* UnifiedPrologueNotificationsContentView.swift */; }; 178810B52611D25600A98BD8 /* Text+BoldSubString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 178810B42611D25600A98BD8 /* Text+BoldSubString.swift */; }; 178810D92612037900A98BD8 /* UnifiedPrologueReaderContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 178810D82612037800A98BD8 /* UnifiedPrologueReaderContentView.swift */; }; @@ -5103,6 +5105,7 @@ 1770BD0C267A368100D5F8C0 /* BloggingRemindersPushPromptViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BloggingRemindersPushPromptViewController.swift; sourceTree = ""; }; 177E7DAC1DD0D1E600890467 /* UINavigationController+SplitViewFullscreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UINavigationController+SplitViewFullscreen.swift"; sourceTree = ""; }; 1782BE831E70063100A91E7D /* MediaItemViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaItemViewController.swift; sourceTree = ""; }; + 17870A6F2816F2A000D1C627 /* StatsLatestPostSummaryInsightsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsLatestPostSummaryInsightsCell.swift; sourceTree = ""; }; 17870A72281847D500D1C627 /* WordPress 139.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "WordPress 139.xcdatamodel"; sourceTree = ""; }; 1788106E260E488B00A98BD8 /* UnifiedPrologueNotificationsContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnifiedPrologueNotificationsContentView.swift; sourceTree = ""; }; 178810B42611D25600A98BD8 /* Text+BoldSubString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Text+BoldSubString.swift"; sourceTree = ""; }; @@ -12145,6 +12148,7 @@ 98563DDC21BF30C40006F5E9 /* TabbedTotalsCell.xib */, 176CE91527FB44C100F1E32B /* StatsBaseCell.swift */, 17ABD3512811A48900B1E9CB /* StatsMostPopularTimeInsightsCell.swift */, + 17870A6F2816F2A000D1C627 /* StatsLatestPostSummaryInsightsCell.swift */, ); path = Insights; sourceTree = ""; @@ -18435,6 +18439,7 @@ 821738091FE04A9E00BEC94C /* DateAndTimeFormatSettingsViewController.swift in Sources */, 5D6C4B081B603E03005E3C43 /* WPContentSyncHelper.swift in Sources */, 73C8F06021BEED9100DDDF7E /* SiteAssemblyStep.swift in Sources */, + 17870A702816F2A000D1C627 /* StatsLatestPostSummaryInsightsCell.swift in Sources */, 82C420761FE44BD900CFB15B /* SiteSettingsViewController+Swift.swift in Sources */, 8BBC778B27B5531700DBA087 /* BlogDashboardPersistence.swift in Sources */, F5E29038243FAB0300C19CA5 /* FilterTableData.swift in Sources */, @@ -19851,6 +19856,7 @@ FABB21012602FC2C00C8785C /* ReaderCardDiscoverAttributionView.swift in Sources */, FABB21022602FC2C00C8785C /* Plugin.swift in Sources */, FABB21032602FC2C00C8785C /* JetpackActivityLogViewController.swift in Sources */, + 17870A712816F2A000D1C627 /* StatsLatestPostSummaryInsightsCell.swift in Sources */, FABB21042602FC2C00C8785C /* FormattableMediaContent.swift in Sources */, FABB21052602FC2C00C8785C /* CollabsableHeaderFilterCollectionViewCell.swift in Sources */, FABB21062602FC2C00C8785C /* SearchResultsStatsRecordValue+CoreDataClass.swift in Sources */, From e93988ddc9878b41e980a5eb06649054a37a3a28 Mon Sep 17 00:00:00 2001 From: James Frost Date: Wed, 27 Apr 2022 11:40:51 +0100 Subject: [PATCH 099/166] Stats Insights: Add post title, timestamp, and featured image to Latest Post cell --- .../StatsLatestPostSummaryInsightsCell.swift | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift b/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift index d579b60184a5..5dacd319959f 100644 --- a/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift +++ b/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift @@ -8,6 +8,17 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig private var lastPostDetails: StatsPostDetails? private var postTitle = StatSection.noPostTitle + private var postTitleLabel: UILabel! + private var postTimestampLabel: UILabel! + private var viewCountLabel: UILabel! + private var likeCountLabel: UILabel! + private var commentCountLabel: UILabel! + private var postImageView: CachedAnimatedImageView! + + lazy var imageLoader: ImageLoader = { + return ImageLoader(imageView: postImageView, gifStrategy: .mediumGIFs) + }() + // MARK: - Initialization required override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { @@ -23,6 +34,69 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig // MARK: - View Configuration private func configureView() { + let stackView = makeOuterStackView() + contentView.addSubview(stackView) + + let postStackView = makePostStackView() + stackView.addArrangedSubview(postStackView) + + topConstraint = stackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: StatsBaseCell.Metrics.padding) + + NSLayoutConstraint.activate([ + topConstraint, + stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -StatsBaseCell.Metrics.padding), + stackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: StatsBaseCell.Metrics.padding), + stackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -StatsBaseCell.Metrics.padding), + ]) + } + + private func makeOuterStackView() -> UIStackView { + let stackView = UIStackView() + stackView.translatesAutoresizingMaskIntoConstraints = false + stackView.axis = .vertical + stackView.spacing = Metrics.outerStackViewSpacing + + return stackView + } + + private func makePostStackView() -> UIStackView { + let stackView = UIStackView() + stackView.translatesAutoresizingMaskIntoConstraints = false + stackView.axis = .horizontal + stackView.alignment = .top + stackView.spacing = Metrics.postStackViewHorizontalSpacing + + let postInfoStackView = UIStackView() + postInfoStackView.translatesAutoresizingMaskIntoConstraints = false + postInfoStackView.axis = .vertical + postInfoStackView.spacing = Metrics.postStackViewVerticalSpacing + + postTitleLabel = UILabel() + postTitleLabel.textColor = .text + postTitleLabel.numberOfLines = 2 + postTitleLabel.font = .preferredFont(forTextStyle: .headline) + + postTimestampLabel = UILabel() + postTimestampLabel.textColor = .textSubtle + postTimestampLabel.font = .preferredFont(forTextStyle: .body) + + postInfoStackView.addArrangedSubviews([postTitleLabel, postTimestampLabel]) + + postImageView = CachedAnimatedImageView() + postImageView.contentMode = .scaleAspectFill + postImageView.translatesAutoresizingMaskIntoConstraints = false + + NSLayoutConstraint.activate([ + postImageView.widthAnchor.constraint(equalToConstant: Metrics.thumbnailSize), + postImageView.heightAnchor.constraint(equalTo: postImageView.widthAnchor) + ]) + + postImageView.layer.cornerRadius = Metrics.thumbnailCornerRadius + postImageView.layer.masksToBounds = true + + stackView.addArrangedSubviews([postInfoStackView, postImageView]) + + return stackView } // MARK: - Public Configuration @@ -35,5 +109,41 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig // Old cell shows Create Post if there's no latest post return } + + postTitleLabel.text = lastPostInsight.title + + let formatter = RelativeDateTimeFormatter() + let date = formatter.localizedString(for: lastPostInsight.publishedDate, relativeTo: Date()) + postTimestampLabel.text = String(format: TextContent.publishDate, date) + + configureFeaturedImage(url: lastPostInsight.featuredImageURL) + } + + private func configureFeaturedImage(url: URL?) { + if let url = url, + let siteID = SiteStatsInformation.sharedInstance.siteID?.intValue, + let blog = try? Blog.lookup(withID: siteID, in: ContextManager.shared.mainContext) { + postImageView.isHidden = false + + let host = MediaHost(with: blog, failure: { error in + DDLogError("Failed to create media host: \(error.localizedDescription)") + }) + + imageLoader.loadImage(with: url, from: host, preferredSize: CGSize(width: Metrics.thumbnailSize, height: Metrics.thumbnailSize)) + } else { + postImageView.isHidden = true + } + } + + private enum Metrics { + static let outerStackViewSpacing: CGFloat = 16.0 + static let postStackViewHorizontalSpacing: CGFloat = 16.0 + static let postStackViewVerticalSpacing: CGFloat = 8.0 + static let thumbnailSize: CGFloat = 68.0 + static let thumbnailCornerRadius: CGFloat = 4.0 + } + + private enum TextContent { + static let publishDate = NSLocalizedString("stats.insights.latestPostSummary.publishDate", value: "Published %@", comment: "Publish date of a post displayed in Stats. Placeholder will be replaced with a localized relative time, e.g. 2 days ago") } } From 6a613892b24d0208707d1b491fea5c894014451b Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Wed, 27 Apr 2022 07:24:04 -0400 Subject: [PATCH 100/166] Updated quick start type to account for the quickStartForExistingUsers feature flag --- .../Blog/My Site/MySiteViewController+OnboardingPrompt.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+OnboardingPrompt.swift b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+OnboardingPrompt.swift index e2a73bdb6c6f..56141bcb0526 100644 --- a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+OnboardingPrompt.swift +++ b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+OnboardingPrompt.swift @@ -29,7 +29,8 @@ extension MySiteViewController { case .showMeAround: // Start the quick start if let blog = blog { - QuickStartTourGuide.shared.setup(for: blog, type: .existingSite) + let type: QuickStartType = FeatureFlag.quickStartForExistingUsers.enabled ? .existingSite : .newSite + QuickStartTourGuide.shared.setup(for: blog, type: type) } case .skip, .reader, .notifications: From d5bbff7d9be6e9b5177c644bf1e4563173930785 Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Wed, 27 Apr 2022 08:21:30 -0400 Subject: [PATCH 101/166] Disable landscape on the enable notifications prompt --- ...dingEnableNotificationsViewController.swift | 18 ++++++++++++++++++ ...boardingQuestionsPromptViewController.swift | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift index 85fa5352f82c..c6856fc50494 100644 --- a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift @@ -22,11 +22,18 @@ class OnboardingEnableNotificationsViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + navigationController?.navigationBar.isHidden = true + navigationController?.delegate = self + applyStyles() updateContent() coordinator.notificationsDisplayed(option: option) } + + override var supportedInterfaceOrientations: UIInterfaceOrientationMask { + return [.portrait, .portraitUpsideDown] + } } // MARK: - IBAction's @@ -56,6 +63,17 @@ extension OnboardingEnableNotificationsViewController { } } +// MARK: - UINavigation Controller Delegate +extension OnboardingEnableNotificationsViewController: UINavigationControllerDelegate { + func navigationControllerSupportedInterfaceOrientations(_ navigationController: UINavigationController) -> UIInterfaceOrientationMask { + return supportedInterfaceOrientations + } + + func navigationControllerPreferredInterfaceOrientationForPresentation(_ navigationController: UINavigationController) -> UIInterfaceOrientation { + return .portrait + } +} + // MARK: - Private Helpers private extension OnboardingEnableNotificationsViewController { func applyStyles() { diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift index 616db0a68efa..50437be734cc 100644 --- a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingQuestionsPromptViewController.swift @@ -2,7 +2,7 @@ import UIKit import WordPressUI import WordPressShared -class OnboardingQuestionsPromptViewController: UIViewController, UINavigationControllerDelegate { +class OnboardingQuestionsPromptViewController: UIViewController { @IBOutlet weak var stackView: UIStackView! @IBOutlet weak var titleLabel: UILabel! @@ -120,7 +120,7 @@ private extension OnboardingQuestionsPromptViewController { } // MARK: - UINavigation Controller Delegate -extension OnboardingQuestionsPromptViewController { +extension OnboardingQuestionsPromptViewController: UINavigationControllerDelegate { func navigationControllerSupportedInterfaceOrientations(_ navigationController: UINavigationController) -> UIInterfaceOrientationMask { return supportedInterfaceOrientations } From 6e3d708a840ba3b5caece869e4f161af00f6108c Mon Sep 17 00:00:00 2001 From: Leandro Alonso Date: Wed, 27 Apr 2022 09:48:55 -0300 Subject: [PATCH 102/166] refactor: change the font used in the title --- .../Cards/Posts/DashboardEmptyPostsCardCell.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Posts/DashboardEmptyPostsCardCell.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Posts/DashboardEmptyPostsCardCell.swift index c73128b713a6..468c69b68f5d 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Posts/DashboardEmptyPostsCardCell.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Posts/DashboardEmptyPostsCardCell.swift @@ -1,4 +1,5 @@ import UIKit +import WordPressShared /// Card cell prompting the user to create their first post final class DashboardFirstPostCardCell: DashboardEmptyPostsCardCell, BlogDashboardCardConfigurable { @@ -48,7 +49,7 @@ class DashboardEmptyPostsCardCell: UICollectionViewCell, Reusable { private lazy var titleLabel: UILabel = { let titleLabel = UILabel() titleLabel.text = "Create your first post" - titleLabel.font = WPStyleGuide.notoBoldFontForTextStyle(.title3) + titleLabel.font = WPStyleGuide.serifFontForTextStyle(.title3, fontWeight: .semibold) titleLabel.adjustsFontForContentSizeCategory = true titleLabel.adjustsFontSizeToFitWidth = true titleLabel.minimumScaleFactor = 0.5 From 3af82453ac04ace6101e438381e123100fcabb0a Mon Sep 17 00:00:00 2001 From: emilylaguna Date: Wed, 27 Apr 2022 08:49:47 -0400 Subject: [PATCH 103/166] Use non-serif font for the subtitle on the enable notifications screen --- .../OnboardingEnableNotificationsViewController.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift index c6856fc50494..b8f74f05fe88 100644 --- a/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Onboarding Questions Prompt/OnboardingEnableNotificationsViewController.swift @@ -82,8 +82,8 @@ private extension OnboardingEnableNotificationsViewController { titleLabel.font = WPStyleGuide.serifFontForTextStyle(.title1, fontWeight: .semibold) titleLabel.textColor = .text - subTitleLabel.font = WPStyleGuide.serifFontForTextStyle(.title3, fontWeight: .regular) - subTitleLabel.textColor = .text + subTitleLabel.font = .preferredFont(forTextStyle: .title3) + subTitleLabel.textColor = .secondaryLabel } func updateContent() { From 369c7d8714ca51cba9e73a574d4e8c46d293c7de Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Wed, 27 Apr 2022 16:46:43 +0100 Subject: [PATCH 104/166] Fix: additional safe area insets logic - Consolidated additional safe area insets logic inside MySiteVC extension instead of having it spread across multiple VCs - Handled missing cases (readerTab and notifications) --- .../My Site/MySiteViewController+QuickStart.swift | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift index debd54e588b7..1df2061fd196 100644 --- a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift +++ b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift @@ -9,16 +9,20 @@ extension MySiteViewController { let element = info[QuickStartTourGuide.notificationElementKey] as? QuickStartTourElement { switch element { - case .noSuchElement: + case .noSuchElement, .newpost: self?.additionalSafeAreaInsets = .zero + case .siteIcon, .siteTitle, .viewSite: self?.scrollView.scrollToTop(animated: true) + self?.additionalSafeAreaInsets = Constants.quickStartNoticeInsets - self?.additionalSafeAreaInsets = UIEdgeInsets(top: 0, left: 0, bottom: Constants.bottomPaddingForQuickStartNotices, right: 0) case .siteMenu: self?.siteMenuSpotlightIsShown = true + self?.additionalSafeAreaInsets = Constants.quickStartNoticeInsets + + case .pages, .editHomepage, .sharing, .stats, .readerTab, .notifications: + self?.additionalSafeAreaInsets = Constants.quickStartNoticeInsets - self?.additionalSafeAreaInsets = UIEdgeInsets(top: 0, left: 0, bottom: Constants.bottomPaddingForQuickStartNotices, right: 0) default: break } @@ -27,6 +31,6 @@ extension MySiteViewController { } private enum Constants { - static let bottomPaddingForQuickStartNotices: CGFloat = 80.0 + static let quickStartNoticeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 80, right: 0) } } From e808d521a2c714c4c6893b0922e85bc2cb33b187 Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Wed, 27 Apr 2022 16:48:20 +0100 Subject: [PATCH 105/166] Delete: references to additionalSafeAreaInsets outside MySiteVC extension The logic for additionalSafeAreaInsets is now consolidated inside MySiteVC+QuickStart --- .../Blog Dashboard/BlogDashboardViewController.swift | 2 -- .../BlogDetailsViewController+FancyAlerts.swift | 2 -- .../Blog/Blog Details/BlogDetailsViewController.m | 10 ---------- .../SitePickerViewController+QuickStart.swift | 4 ---- .../Blog/Site Picker/SitePickerViewController.swift | 5 ----- 5 files changed, 23 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/BlogDashboardViewController.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/BlogDashboardViewController.swift index a972e3ad951e..350b87beb1c7 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/BlogDashboardViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/BlogDashboardViewController.swift @@ -170,7 +170,6 @@ final class BlogDashboardViewController: UIViewController { } else { self.collectionView.scrollToTop(animated: true) } - self.mySiteViewController?.additionalSafeAreaInsets = UIEdgeInsets(top: 0, left: 0, bottom: Constants.bottomPaddingForQuickStartNotices, right: 0) default: break } @@ -294,7 +293,6 @@ extension BlogDashboardViewController { static let horizontalSectionInset: CGFloat = 20 static let verticalSectionInset: CGFloat = 20 static let cellSpacing: CGFloat = 20 - static let bottomPaddingForQuickStartNotices: CGFloat = 80 } } diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FancyAlerts.swift b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FancyAlerts.swift index 1da890ea213b..f4ba7244ed30 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FancyAlerts.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FancyAlerts.swift @@ -5,8 +5,6 @@ private var observer: NSObjectProtocol? extension BlogDetailsViewController { - @objc static let bottomPaddingForQuickStartNotices: CGFloat = 80.0 - @objc func startObservingQuickStart() { observer = NotificationCenter.default.addObserver(forName: .QuickStartTourElementChangedNotification, object: nil, queue: nil) { [weak self] (notification) in guard self?.blog.managedObjectContext != nil else { diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m index d620a2007288..74be31f886d7 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m @@ -379,14 +379,6 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - MySiteViewController *parentVC = (MySiteViewController *)self.parentViewController; - - if ([[QuickStartTourGuide shared] currentElementInt] != NSNotFound) { - parentVC.additionalSafeAreaInsets = UIEdgeInsetsMake(0, 0, [BlogDetailsViewController bottomPaddingForQuickStartNotices], 0); - } else { - parentVC.additionalSafeAreaInsets = UIEdgeInsetsZero; - } - if (self.splitViewControllerIsHorizontallyCompact) { self.restorableSelectedIndexPath = nil; } @@ -1400,7 +1392,6 @@ - (void)scrollToElement:(QuickStartTourElement) element for (BlogDetailsRow *row in section.rows) { if (row.quickStartIdentifier == element) { NSIndexPath *path = [NSIndexPath indexPathForRow:rowCount inSection:sectionCount]; - parentVC.additionalSafeAreaInsets = UIEdgeInsetsMake(0, 0, [BlogDetailsViewController bottomPaddingForQuickStartNotices], 0); UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:path]; [parentVC.scrollView scrollVerticallyToView:cell animated:true]; } @@ -1638,7 +1629,6 @@ - (void)showViewSiteFromSource:(BlogDetailsNavigationSource)source [[QuickStartTourGuide shared] completeViewSiteTourForBlog:self.blog]; } - parentVC.additionalSafeAreaInsets = UIEdgeInsetsZero; } - (void)showViewAdmin diff --git a/WordPress/Classes/ViewRelated/Blog/Site Picker/SitePickerViewController+QuickStart.swift b/WordPress/Classes/ViewRelated/Blog/Site Picker/SitePickerViewController+QuickStart.swift index e2d098de9302..528b4d52a487 100644 --- a/WordPress/Classes/ViewRelated/Blog/Site Picker/SitePickerViewController+QuickStart.swift +++ b/WordPress/Classes/ViewRelated/Blog/Site Picker/SitePickerViewController+QuickStart.swift @@ -47,8 +47,4 @@ extension SitePickerViewController { QuickStartTourGuide.shared.suggest(tourToSuggest, for: blog) } } - - private enum Constants { - static let bottomPaddingForQuickStartNotices: CGFloat = 80.0 - } } diff --git a/WordPress/Classes/ViewRelated/Blog/Site Picker/SitePickerViewController.swift b/WordPress/Classes/ViewRelated/Blog/Site Picker/SitePickerViewController.swift index d1553e3c0140..e1c1c5fa1077 100644 --- a/WordPress/Classes/ViewRelated/Blog/Site Picker/SitePickerViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/Site Picker/SitePickerViewController.swift @@ -252,11 +252,6 @@ extension SitePickerViewController { // currently working on the View Site tour. tourGuide.completeViewSiteTour(forBlog: blog) } - - guard let parentVC = parent as? MySiteViewController else { - return - } - parentVC.additionalSafeAreaInsets = .zero } } From a0697da7a7074716152932d2fefade56199e856e Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Wed, 27 Apr 2022 16:55:20 +0100 Subject: [PATCH 106/166] Delete: obsolete property --- WordPress/Classes/ViewRelated/Blog/QuickStartTourGuide.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Blog/QuickStartTourGuide.swift b/WordPress/Classes/ViewRelated/Blog/QuickStartTourGuide.swift index 3ef658943687..c2c5280bd3b4 100644 --- a/WordPress/Classes/ViewRelated/Blog/QuickStartTourGuide.swift +++ b/WordPress/Classes/ViewRelated/Blog/QuickStartTourGuide.swift @@ -15,7 +15,6 @@ open class QuickStartTourGuide: NSObject { private var currentSuggestion: QuickStartTour? private var currentTourState: TourState? private var suggestionWorkItem: DispatchWorkItem? - private var taskCompleteWorkItem: DispatchWorkItem? private weak var recentlyTouredBlog: Blog? private let noticeTag: Notice.Tag = "QuickStartTour" static let notificationElementKey = "QuickStartElementKey" From 698d0694ed3d5814b9498e541d5f3a7e27c37cf3 Mon Sep 17 00:00:00 2001 From: Chris McGraw <2454408+wargcm@users.noreply.github.com> Date: Wed, 27 Apr 2022 12:43:41 -0400 Subject: [PATCH 107/166] Update `BloggingPromptsHeaderView`'s divider view Applies the following changes to the divider view: - Add a name to the view - Add a height constraint using `.hairlineBorderWidth` --- .../Action Sheet/BloggingPromptsHeaderView.swift | 8 ++++++++ .../System/Action Sheet/BloggingPromptsHeaderView.xib | 10 ++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/WordPress/Classes/ViewRelated/System/Action Sheet/BloggingPromptsHeaderView.swift b/WordPress/Classes/ViewRelated/System/Action Sheet/BloggingPromptsHeaderView.swift index 5a4bf1e1c3de..853223cd8f91 100644 --- a/WordPress/Classes/ViewRelated/System/Action Sheet/BloggingPromptsHeaderView.swift +++ b/WordPress/Classes/ViewRelated/System/Action Sheet/BloggingPromptsHeaderView.swift @@ -9,6 +9,7 @@ class BloggingPromptsHeaderView: UIView, NibLoadable { @IBOutlet private weak var answeredStackView: UIStackView! @IBOutlet private weak var answeredLabel: UILabel! @IBOutlet private weak var shareButton: UIButton! + @IBOutlet private weak var dividerView: UIView! override func awakeFromNib() { super.awakeFromNib() @@ -34,6 +35,7 @@ private extension BloggingPromptsHeaderView { configureSpacing() configureStrings() configureStyles() + configureConstraints() } func configureSpacing() { @@ -65,6 +67,12 @@ private extension BloggingPromptsHeaderView { shareButton.setTitleColor(WPStyleGuide.BloggingPrompts.buttonTitleColor, for: .normal) } + func configureConstraints() { + NSLayoutConstraint.activate([ + dividerView.heightAnchor.constraint(equalToConstant: .hairlineBorderWidth), + ]) + } + // MARK: - Constants struct Constants { diff --git a/WordPress/Classes/ViewRelated/System/Action Sheet/BloggingPromptsHeaderView.xib b/WordPress/Classes/ViewRelated/System/Action Sheet/BloggingPromptsHeaderView.xib index cf4f3a5c0dce..1fd7a4f86362 100644 --- a/WordPress/Classes/ViewRelated/System/Action Sheet/BloggingPromptsHeaderView.xib +++ b/WordPress/Classes/ViewRelated/System/Action Sheet/BloggingPromptsHeaderView.xib @@ -48,7 +48,7 @@ - + - + - - - @@ -107,6 +104,7 @@ + From 457063c13e22b0adbe8a7521cbae108c0dda6e78 Mon Sep 17 00:00:00 2001 From: Leandro Alonso Date: Wed, 27 Apr 2022 14:36:27 -0300 Subject: [PATCH 108/166] add: track tap on quick start under site menu --- WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift | 3 +++ WordPress/Classes/ViewRelated/Blog/QuickStartCell.swift | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift b/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift index fe3403daef07..cd6db6ba6cb4 100644 --- a/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift +++ b/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift @@ -337,6 +337,7 @@ import Foundation // Quick Start case quickStartStarted + case quickStartTapped /// A String that represents the event var value: String { @@ -878,6 +879,8 @@ import Foundation // Quick Start case .quickStartStarted: return "quick_start_started" + case .quickStartTapped: + return "quick_start_tapped" // Site Intent Question case .enhancedSiteCreationIntentQuestionCanceled: diff --git a/WordPress/Classes/ViewRelated/Blog/QuickStartCell.swift b/WordPress/Classes/ViewRelated/Blog/QuickStartCell.swift index 64609badc89a..efb597f36ed2 100644 --- a/WordPress/Classes/ViewRelated/Blog/QuickStartCell.swift +++ b/WordPress/Classes/ViewRelated/Blog/QuickStartCell.swift @@ -14,7 +14,10 @@ import UIKit selectionStyle = .none - tourStateView.configure(blog: blog, sourceController: viewController) + let checklistTappedTracker: QuickStartChecklistTappedTracker = (event: .quickStartTapped, properties: [:]) + + tourStateView.configure(blog: blog, sourceController: viewController, + checklistTappedTracker: checklistTappedTracker) } private enum Metrics { From ff9e6fce4549dc247982ddba915dfabec5e37d1d Mon Sep 17 00:00:00 2001 From: ScoutHarris Date: Wed, 27 Apr 2022 12:21:52 -0600 Subject: [PATCH 109/166] Update WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift Set var to read-only. Co-authored-by: David Christiandy <1299411+dvdchr@users.noreply.github.com> --- .../Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift index db31a79e57be..39b4e82a4503 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift @@ -14,7 +14,7 @@ class DashboardPromptsCardCell: UICollectionViewCell, Reusable { } // This is public so it can be accessed from the BloggingPromptsFeatureDescriptionView. - lazy var cardFrameView: BlogDashboardCardFrameView = { + private(set) lazy var cardFrameView: BlogDashboardCardFrameView = { let frameView = BlogDashboardCardFrameView() frameView.translatesAutoresizingMaskIntoConstraints = false frameView.title = Strings.cardFrameTitle From 0a30b78fb2e749e4369a022a10924c25fc4b67f1 Mon Sep 17 00:00:00 2001 From: Stephenie Harris Date: Wed, 27 Apr 2022 13:11:59 -0600 Subject: [PATCH 110/166] Set navigation bar background color. --- .../Collapsable Header/CollapsableHeaderViewController.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift b/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift index c05e7e0bbbbc..b327349a642f 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/Collapsable Header/CollapsableHeaderViewController.swift @@ -521,6 +521,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost { visualEffects.forEach { (visualEffect) in visualEffect.isHidden = true } + navigationController?.navigationBar.backgroundColor = .systemBackground } /// In scenarios where the content offset before content changes doesn't align with the available space after the content changes then the offset can be lost. In From 6575722e4f78319b40a73986f40f48d73ad2b636 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Thu, 28 Apr 2022 16:58:07 +1000 Subject: [PATCH 111/166] =?UTF-8?q?Update=20app=20translations=20=E2=80=93?= =?UTF-8?q?=20`Localizable.strings`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Resources/ar.lproj/Localizable.strings | 8 +- .../Resources/cs.lproj/Localizable.strings | 8 +- .../Resources/de.lproj/Localizable.strings | 72 +++++++++++++- .../Resources/en-CA.lproj/Localizable.strings | 8 +- .../Resources/en-GB.lproj/Localizable.strings | 8 +- .../Resources/es.lproj/Localizable.strings | 8 +- .../Resources/fr.lproj/Localizable.strings | 69 +++++++++++++- .../Resources/he.lproj/Localizable.strings | 8 +- .../Resources/id.lproj/Localizable.strings | 8 +- .../Resources/it.lproj/Localizable.strings | 72 +++++++++++++- .../Resources/ja.lproj/Localizable.strings | 72 +++++++++++++- .../Resources/ko.lproj/Localizable.strings | 75 ++++++++++++++- .../Resources/nl.lproj/Localizable.strings | 95 +++++++++++++++++-- .../Resources/pl.lproj/Localizable.strings | 4 +- .../Resources/pt-BR.lproj/Localizable.strings | 8 +- .../Resources/ro.lproj/Localizable.strings | 16 ++-- .../Resources/ru.lproj/Localizable.strings | 8 +- .../Resources/sq.lproj/Localizable.strings | 63 +++++++++++- .../Resources/sv.lproj/Localizable.strings | 17 +++- .../Resources/tr.lproj/Localizable.strings | 72 +++++++++++++- .../zh-Hans.lproj/Localizable.strings | 74 ++++++++++++++- .../zh-Hant.lproj/Localizable.strings | 66 ++++++++++++- 22 files changed, 746 insertions(+), 93 deletions(-) diff --git a/WordPress/Resources/ar.lproj/Localizable.strings b/WordPress/Resources/ar.lproj/Localizable.strings index e0d99c06fb30..3ceb5010689c 100644 --- a/WordPress/Resources/ar.lproj/Localizable.strings +++ b/WordPress/Resources/ar.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-20 20:54:07+0000 */ +/* Translation-Revision-Date: 2022-04-25 15:46:19+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/3.0.0 */ /* Language: ar */ @@ -8387,9 +8387,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Ų§Ų³ŲŖŲ®ŲÆŲ§Ł… Ų²Ų± Ų§Ł„Ų£ŁŠŁ‚ŁˆŁ†Ų©"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Ų§Ų³ŲŖŲ®ŲÆŁ… Ł‡Ų°Ų§ Ų§Ł„Ų±Ų§ŲØŲ· Ł„Ų¶Ł…Ł‘ Ų£Ų¹Ų¶Ų§Ų” ŁŲ±ŁŠŁ‚Łƒ ŲÆŁˆŁ† Ų§Ł„Ų­Ų§Ų¬Ų© Ų„Ł„Ł‰ ŲÆŲ¹ŁˆŲŖŁ‡Ł… ŁˆŲ§Ų­ŲÆŁ‹Ų§ ŲŖŁ„Łˆ Ų§Ł„Ų¢Ų®Ų±. Ų³ŁŠŲŖŁ…ŁƒŁ† Ų£ŁŠ Ų“Ų®Ųµ ŁŠŲ²ŁˆŲ± Ų¹Ł†ŁˆŲ§Ł† Ų§Ł„Ł…ŁˆŁ‚Ų¹ Ł‡Ų°Ų§ Ł…Ł† Ų§Ł„Ų§Ų“ŲŖŲ±Ų§Łƒ ŁŁŠ Ł…Ų¤Ų³Ų³ŲŖŁƒŲŒ Ų­ŲŖŁ‰ Ų„Ų°Ų§ ŲŖŁ„Ł‚Ł‰ Ų§Ł„Ų±Ų§ŲØŲ· Ł…Ł† Ų“Ų®Ųµ Ų¢Ų®Ų±ŲŒ Ł„Ų°Ų§ ŲŖŲ£ŁƒŲÆ Ł…Ł† Ł…Ų“Ų§Ų±ŁƒŲŖŁ‡ Ł…Ų¹ Ų£Ų“Ų®Ų§Ųµ Ł…ŁˆŲ«ŁˆŁ‚ ŲØŁ‡Ł…."; - /* No comment provided by engineer. */ "Use this site" = "Ų§Ų³ŲŖŲ®ŲÆŲ§Ł… Ł‡Ų°Ų§ Ų§Ł„Ł…ŁˆŁ‚Ų¹"; @@ -9497,6 +9494,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Ł„Ų„Ų¶Ų§ŁŲ© ŲµŁˆŲ± Ų£Łˆ Ł…Ł‚Ų§Ų·Ų¹ ŁŁŠŲÆŁŠŁˆ Ų„Ł„Ł‰ Ł…Ł‚Ų§Ł„Ų§ŲŖŁƒ."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Ų§Ų³ŲŖŲ®ŲÆŁ… Ł‡Ų°Ų§ Ų§Ł„Ų±Ų§ŲØŲ· Ł„Ų¶Ł… Ų£Ų¹Ų¶Ų§Ų” ŁŲ±ŁŠŁ‚Łƒ Ł…Ł† ŲÆŁˆŁ† ŲÆŲ¹ŁˆŲŖŁ‡Ł… ŁˆŲ§Ų­ŲÆŁ‹Ų§ ŲŖŁ„Łˆ Ų§Ł„Ų¢Ų®Ų±. Ų³ŁŠŲŖŁ…ŁƒŁ† Ų£ŁŠ Ų“Ų®Ųµ ŁŠŲ²ŁˆŲ± Ų¹Ł†ŁˆŲ§Ł† URL Ł‡Ų°Ų§ Ł…Ł† Ų§Ł„ŲŖŲ³Ų¬ŁŠŁ„ ŁŁŠ Ł…Ų¤Ų³Ų³ŲŖŁƒŲŒ Ų­ŲŖŁ‰ Ų„Ų°Ų§ ŲŖŁ„Ł‚Ł‰ Ų§Ł„Ų±Ų§ŲØŲ· Ł…Ł† Ų“Ų®Ųµ Ų¢Ų®Ų±ŲŒ Ł„Ų°Ų§ ŲŖŲ£ŁƒŁ‘ŁŽŲÆ Ł…Ł† Ł…Ų“Ų§Ų±ŁƒŲŖŁ‡ Ł…Ų¹ Ų£Ų“Ų®Ų§Ųµ Ł…ŁˆŲ«ŁˆŁ‚ ŲØŁ‡Ł…."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Ų­ŁŲø ŁƒŁ…Ų³ŁˆŲÆŲ©"; diff --git a/WordPress/Resources/cs.lproj/Localizable.strings b/WordPress/Resources/cs.lproj/Localizable.strings index 71f1e4627a18..7ff6cf1ed7ea 100644 --- a/WordPress/Resources/cs.lproj/Localizable.strings +++ b/WordPress/Resources/cs.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-04 20:35:21+0000 */ +/* Translation-Revision-Date: 2022-04-25 13:45:55+0000 */ /* Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n >= 2 && n <= 4) ? 1 : 2); */ /* Generator: GlotPress/3.0.0 */ /* Language: cs_CZ */ @@ -8323,9 +8323,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Použijte ikonu tlačƭtka"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "PomocĆ­ tohoto odkazu mÅÆžete připojit členy svĆ©ho tĆ½mu, aniž byste je museli pozvat jeden po druhĆ©m. Kdokoli, kdo navÅ”tĆ­vĆ­ tuto adresu URL, se bude moci zaregistrovat do vaÅ”Ć­ organizace, i když obdržel odkaz od někoho jinĆ©ho, takže se ujistěte, že jej sdĆ­lĆ­te s dÅÆvěryhodnĆ½mi lidmi."; - /* No comment provided by engineer. */ "Use this site" = "Vybrat tuto strĆ”nku"; @@ -9430,6 +9427,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Chcete přidat fotky a videa do vaÅ”eho pÅ™Ć­spěvku."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "PomocĆ­ tohoto odkazu mÅÆžete připojit členy svĆ©ho tĆ½mu, aniž byste je museli pozvat jeden po druhĆ©m. Kdokoli, kdo navÅ”tĆ­vĆ­ tuto adresu URL, se bude moci zaregistrovat do vaÅ”Ć­ organizace, i když obdržel odkaz od někoho jinĆ©ho, takže se ujistěte, že jej sdĆ­lĆ­te s dÅÆvěryhodnĆ½mi lidmi."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Uložit jako koncept"; diff --git a/WordPress/Resources/de.lproj/Localizable.strings b/WordPress/Resources/de.lproj/Localizable.strings index 55ddaf1c6d13..9f613419ffdb 100644 --- a/WordPress/Resources/de.lproj/Localizable.strings +++ b/WordPress/Resources/de.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-08 09:54:11+0000 */ +/* Translation-Revision-Date: 2022-04-25 13:11:55+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: de */ @@ -56,6 +56,12 @@ Plural format string for view title displaying the number of post likes. %1$d is the number of likes. */ "%1$d Likes" = "%1$d GefƤllt mir"; +/* Singular format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answer" = "%1$dĀ Antwort"; + +/* Plural format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answers" = "%1$dĀ Antworten"; + /* Format string for displaying number of completed quickstart tutorials. %1$d is number completed, %2$d is total number of tutorials available. */ "%1$d of %2$d completed" = "%1$d von %2$d komplett"; @@ -345,6 +351,9 @@ translators: Block name. %s: The localized block name */ /* Title for a threat */ "A file contains a malicious code pattern" = "Eine Datei enthƤlt ein bƶsartiges Codemuster"; +/* Subtitle of the Site Name screen. */ +"A good name is short and memorable.\nYou can change it later." = "Ein guter Name ist kurz und einprƤgsam.\nDu kannst es spƤter jederzeit Ƥndern."; + /* Story Intro welcome title */ "A new way to create and publish engaging content on your site." = "Eine neue Mƶglichkeit zum Erstellen und Verƶffentlichen ansprechender Inhalte auf deiner Website."; @@ -481,6 +490,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Add Block Before" = "Block davor hinzufĆ¼gen"; +/* No comment provided by engineer. */ +"Add Blocks" = "Blƶcke hinzufĆ¼gen"; + /* Alert option to add document contents into a blog post. */ "Add Contents to Post" = "Inhalte in Beitrag einfĆ¼gen"; @@ -621,6 +633,9 @@ translators: Block name. %s: The localized block name */ /* Title for the advanced section in site settings screen */ "Advanced" = "Erweitert"; +/* Screen reader text expressing the menu item is after another menu item. Argument is a name for another menu item. */ +"After %@" = "Nach %@"; + /* Option to select the Airmail app when logging in with magic links */ "Airmail" = "Airmail"; @@ -778,6 +793,9 @@ translators: Block name. %s: The localized block name */ /* the comment has an anonymous author. */ "Anonymous" = "Anonym"; +/* Title for a call-to-action button on the prompts card. */ +"Answer Prompt" = "Auf Themenvorschlag antworten"; + /* Navigates to picker screen to change the app's icon Title of screen to change the app's icon */ "App Icon" = "App-Icon"; @@ -1036,6 +1054,9 @@ translators: Block name. %s: The localized block name */ /* Message shown encouraging the user to leave a comment on a post in the reader. */ "Be the first to leave a comment." = "Schreibe den ersten Kommentar."; +/* Screen reader text expressing the menu item is before another menu item. Argument is a name for another menu item. */ +"Before %@" = "Vor %@"; + /* 'Best Day' label for Most Popular stat. */ "Best Day" = "Bester Tag"; @@ -1291,6 +1312,9 @@ translators: Block name. %s: The localized block name */ Title for the warning shown to the user when he refuses to re-login when the authToken is missing. */ "Careful!" = "Vorsicht!"; +/* Example prompt for the Prompts card in Feature Introduction. */ +"Cast the movie of your life." = "Dreh einen Film Ć¼ber dein Leben."; + /* Label for Categories Label for the categories field. Should be the same as WP core. */ "Categories" = "Kategorien"; @@ -1398,6 +1422,9 @@ translators: Block name. %s: The localized block name */ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "ƜberprĆ¼fe KƤufe ā€¦"; +/* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ +"Child of %@" = "Untergeordneter MenĆ¼eintrag von %@"; + /* Title for the button to progress with the selected site homepage design */ "Choose" = "AuswƤhlen"; @@ -1437,6 +1464,9 @@ translators: Block name. %s: The localized block name */ /* Label for Publish time picker */ "Choose a time" = "Uhrzeit auswƤhlen"; +/* Select the site's intent. Subtitle */ +"Choose a topic from the list below or type your own." = "WƤhle ein Thema aus der unten stehenden Liste aus oder gib ein eigenes ein."; + /* Title of a Quick Start Tour */ "Choose a unique site icon" = "Ein einzigartiges Website-Icon auswƤhlen"; @@ -2447,6 +2477,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Double tap and hold to edit" = "Zum Bearbeiten zweimal tippen und halten"; +/* Screen reader hint for button that will move the menu item */ +"Double tap and hold to move this menu item up or down. Move horizontally to change hierarchy." = "Um diesen MenĆ¼eintrag nach oben oder unten zu verschieben, zweimal tippen und gedrĆ¼ckt halten. Horizontal verschieben, um die Hierarchie zu Ƥndern."; + /* No comment provided by engineer. */ "Double tap to add a block" = "Zum HinzufĆ¼gen eines Blocks zweimal tippen"; @@ -2579,6 +2612,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Duplicate block" = "Block duplizieren"; +/* Placeholder text for the search field int the Site Intent screen. */ +"E.g. Fashion, Poetry, Politics" = "z. B. Mode, Poesie, Politik"; + /* No comment provided by engineer. */ "Each block has its own settings. To find them, tap on a block. Its settings will appear on the toolbar at the bottom of the screen." = "Jeder Block hat eigene Einstellungen. Tippe auf den jeweiligen Block, um sie zu finden. Die Einstellungen werden in der Werkzeugleiste unten auf dem Bildschirm angezeigt."; @@ -3366,6 +3402,13 @@ translators: Block name. %s: The localized block name */ /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "WƤhle einen Namen fĆ¼r deine Website, der am besten zu ihrer Persƶnlichkeit und Ausrichtung passt. Erste EindrĆ¼cke zƤhlen!"; +/* Default title of the Site Name screen. + Title for Site Name screen in iPhone landscape. */ +"Give your website a name" = "Gib deiner Website einen Namen"; + +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your%@website a name" = "Gib deiner %@-Website einen Namen"; + /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "Gmail"; @@ -3763,6 +3806,9 @@ translators: Block name. %s: The localized block name */ /* Message displayed in an alert when user tries to install a first plugin on their site. */ "Installing the first plugin on your site can take up to 1 minute. During this time you wonā€™t be able to make changes to your site." = "Die Installation des ersten Plugins auf deiner Website kann bis zu einer Minute dauern. WƤhrend dieser Zeit kannst du keine Ƅnderungen an deiner Website vornehmen."; +/* Title for a button that opens up the 'Getting More Views and Traffic' support page when tapped. */ +"Interested in building your audience? Check out our top tips" = "Mƶchtest du eine Zielgruppe aufbauen? Top-Tipps ansehen"; + /* Interior Design site intent topic */ "Interior Design" = "Innenarchitektur"; @@ -4447,6 +4493,9 @@ translators: Block name. %s: The localized block name */ /* Insights 'Most Popular Time' header */ "Most Popular Time" = "Beliebteste Zeit"; +/* Screen reader text for button that will move the menu item. Argument is menu item's name. */ +"Move %@" = "%@ verschieben"; + /* No comment provided by engineer. */ "Move Image Backward" = "Bild nach hinten verschieben"; @@ -5705,6 +5754,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Menu item label for linking a project page. */ "Projects" = "Projekte"; +/* Title label for the Prompts card in My Sites tab. */ +"Prompts" = "ThemenvorschlƤge"; + /* Privacy setting for posts set to 'Public' (default). Should be the same as in core WP. Text for privacy settings: Public */ "Public" = "Ɩffentlich"; @@ -5948,6 +6000,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* No comment provided by engineer. */ "Remove block" = "Block entfernen"; +/* Destructive menu title to remove the prompt card from the dashboard. */ +"Remove from dashboard" = "Aus Dashboard entfernen"; + /* Option to remove Insight from view. */ "Remove from insights" = "Aus Einsichten entfernen"; @@ -6841,6 +6896,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Title shown in alert to confirm skipping all quick start items */ "Skip Quick Start" = "Schnellstart Ć¼berspringen"; +/* Menu title to skip today's prompt. */ +"Skip this prompt" = "Diesen Themenvorschlag Ć¼berspringen"; + /* translators: Slash inserter autocomplete results */ "Slash inserter results" = "Ergebnisse der SchrƤgstrich-Eingabe"; @@ -8320,9 +8378,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Icon-Button verwenden"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Verwende diesen Link, um deine Teammitglieder einzuladen. Jeder, der diese URL besucht, kann sich bei deiner Organisation registrieren, auch wenn er oder sie den Link von jemand anderem erhalten hat. Teile ihn also nur mit vertrauenswĆ¼rdigen Personen."; - /* No comment provided by engineer. */ "Use this site" = "Diese Website verwenden"; @@ -8434,6 +8489,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Label for viewing more stats. */ "View more" = "Mehr anzeigen"; +/* Menu title to show more prompts. */ +"View more prompts" = "Mehr ThemenvorschlƤge anzeigen"; + /* Description for view count. Singular. */ "View to your site so far" = "Bisheriger Aufruf deiner Website"; @@ -9427,6 +9485,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Um deinen BeitrƤgen Fotos oder Videos hinzuzufĆ¼gen."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Verwende diesen Link, um deine Teammitglieder einzuladen. Jeder, der diese URL besucht, kann sich bei deiner Organisation registrieren, auch wenn er oder sie den Link von jemand anderem erhalten hat. Teile ihn also nur mit vertrauenswĆ¼rdigen Personen."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Als Entwurf speichern"; @@ -9598,3 +9659,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Item 2 of delete screen section listing things that will be deleted. */ "ā€¢ Users & Authors" = "ā€¢ Benutzer und Autoren"; +/* Title label that indicates the prompt has been answered. */ +"āœ“ Answered" = "āœ“ Geantwortet"; + diff --git a/WordPress/Resources/en-CA.lproj/Localizable.strings b/WordPress/Resources/en-CA.lproj/Localizable.strings index 7cf64c1d4a71..1a4dff47dbb5 100644 --- a/WordPress/Resources/en-CA.lproj/Localizable.strings +++ b/WordPress/Resources/en-CA.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-03-14 23:56:27+0000 */ +/* Translation-Revision-Date: 2022-04-25 13:47:07+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: en_CA */ @@ -8204,9 +8204,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Use icon button"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted people."; - /* No comment provided by engineer. */ "Use this site" = "Use this site"; @@ -9281,6 +9278,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Text for related post cell preview */ "in \"Upgrade\"" = "in \"Upgrade\""; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted people."; + /* Later today */ "later today" = "later today"; diff --git a/WordPress/Resources/en-GB.lproj/Localizable.strings b/WordPress/Resources/en-GB.lproj/Localizable.strings index d431e70bfeb5..4d5dc0350ed1 100644 --- a/WordPress/Resources/en-GB.lproj/Localizable.strings +++ b/WordPress/Resources/en-GB.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-19 13:54:15+0000 */ +/* Translation-Revision-Date: 2022-04-22 21:59:41+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: en_GB */ @@ -8387,9 +8387,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Use icon button"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organisation, even if they received the link from somebody else, so make sure that you share it with trusted people."; - /* No comment provided by engineer. */ "Use this site" = "Use this site"; @@ -9497,6 +9494,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "To add photos or videos to your posts."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organisation, even if they received the link from somebody else, so make sure that you share it with trusted people."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Save as Draft"; diff --git a/WordPress/Resources/es.lproj/Localizable.strings b/WordPress/Resources/es.lproj/Localizable.strings index da2a84987e1c..0a4dacc77795 100644 --- a/WordPress/Resources/es.lproj/Localizable.strings +++ b/WordPress/Resources/es.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-19 11:48:58+0000 */ +/* Translation-Revision-Date: 2022-04-23 07:16:06+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: es */ @@ -8387,9 +8387,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Usar botĆ³n de icono"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Usa este enlace para incorporar a los miembros de tu equipo sin tener que invitarlos uno por uno. Cualquiera que visite esta URL podrĆ” registrarse en tu organizaciĆ³n, incluso si ha recibido el enlace de alguien, asĆ­ que, asegĆŗrate de que lo compartes con personas de confianza."; - /* No comment provided by engineer. */ "Use this site" = "Usar este sitio"; @@ -9497,6 +9494,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Para aƱadir fotos o vĆ­deos en tus entradas."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Utiliza este enlace para embarcar a los miembros de tu equipo sin tener que invitarlos uno a uno. Cualquiera que visite esta URL podrĆ” registrarse en tu organizaciĆ³n, aunque haya recibido el enlace de otra persona, asĆ­ que asegĆŗrate de que lo compartes con gente de confianza."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Guardar como borrador"; diff --git a/WordPress/Resources/fr.lproj/Localizable.strings b/WordPress/Resources/fr.lproj/Localizable.strings index 87a305e13090..63f18a30a5f7 100644 --- a/WordPress/Resources/fr.lproj/Localizable.strings +++ b/WordPress/Resources/fr.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-08 15:54:08+0000 */ +/* Translation-Revision-Date: 2022-04-25 14:20:00+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: fr */ @@ -56,6 +56,12 @@ Plural format string for view title displaying the number of post likes. %1$d is the number of likes. */ "%1$d Likes" = "%1$d mentions Jā€™aime"; +/* Singular format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answer" = "%1$d rĆ©ponse"; + +/* Plural format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answers" = "%1$dĀ rĆ©ponses"; + /* Format string for displaying number of completed quickstart tutorials. %1$d is number completed, %2$d is total number of tutorials available. */ "%1$d of %2$d completed" = "%1$d sur %2$d terminĆ©e"; @@ -345,6 +351,9 @@ translators: Block name. %s: The localized block name */ /* Title for a threat */ "A file contains a malicious code pattern" = "Un fichier contient un modĆØle de code malveillant"; +/* Subtitle of the Site Name screen. */ +"A good name is short and memorable.\nYou can change it later." = "Un nom court et facile Ć  retenir est la clĆ© du succĆØs.\nVous pourrez toujours le modifier ultĆ©rieurement."; + /* Story Intro welcome title */ "A new way to create and publish engaging content on your site." = "Une nouvelle faƧon de publier du contenu attrayant sur votre site."; @@ -481,6 +490,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Add Block Before" = "Ajouter un bloc avant"; +/* No comment provided by engineer. */ +"Add Blocks" = "Ajouter des blocs"; + /* Alert option to add document contents into a blog post. */ "Add Contents to Post" = "Ajouter le contenu dans lā€™article"; @@ -621,6 +633,9 @@ translators: Block name. %s: The localized block name */ /* Title for the advanced section in site settings screen */ "Advanced" = "AvancĆ©"; +/* Screen reader text expressing the menu item is after another menu item. Argument is a name for another menu item. */ +"After %@" = "AprĆØs %@"; + /* Option to select the Airmail app when logging in with magic links */ "Airmail" = "Airmail"; @@ -778,6 +793,9 @@ translators: Block name. %s: The localized block name */ /* the comment has an anonymous author. */ "Anonymous" = "Anonyme"; +/* Title for a call-to-action button on the prompts card. */ +"Answer Prompt" = "RĆ©pondre Ć  lā€™incitation"; + /* Navigates to picker screen to change the app's icon Title of screen to change the app's icon */ "App Icon" = "IcĆ“ne de lā€™app"; @@ -1039,6 +1057,9 @@ translators: Block name. %s: The localized block name */ /* Beauty site intent topic */ "Beauty" = "BeautĆ©"; +/* Screen reader text expressing the menu item is before another menu item. Argument is a name for another menu item. */ +"Before %@" = "Avant %@"; + /* 'Best Day' label for Most Popular stat. */ "Best Day" = "Meilleur jour"; @@ -1294,6 +1315,9 @@ translators: Block name. %s: The localized block name */ Title for the warning shown to the user when he refuses to re-login when the authToken is missing. */ "Careful!" = "AttentionĀ !"; +/* Example prompt for the Prompts card in Feature Introduction. */ +"Cast the movie of your life." = "Produisez le film de votre vie."; + /* Label for Categories Label for the categories field. Should be the same as WP core. */ "Categories" = "CatĆ©gories"; @@ -1401,6 +1425,9 @@ translators: Block name. %s: The localized block name */ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "VĆ©rification des achatsā€¦"; +/* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ +"Child of %@" = "Enfant de %@"; + /* Title for the button to progress with the selected site homepage design */ "Choose" = "Choisir"; @@ -1440,6 +1467,9 @@ translators: Block name. %s: The localized block name */ /* Label for Publish time picker */ "Choose a time" = "Choisir une heure"; +/* Select the site's intent. Subtitle */ +"Choose a topic from the list below or type your own." = "Choisissez un thĆØme dans la liste ci-dessous ou saisissez-le manuellement."; + /* Title of a Quick Start Tour */ "Choose a unique site icon" = "Choisir une favicĆ“ne unique"; @@ -2450,6 +2480,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Double tap and hold to edit" = "Toucher deux fois et maintenir le bouton enfoncĆ© pour modifier"; +/* Screen reader hint for button that will move the menu item */ +"Double tap and hold to move this menu item up or down. Move horizontally to change hierarchy." = "Touchez deux fois et maintenez pour dĆ©placer cet Ć©lĆ©ment de menu vers le haut ou vers le bas. DĆ©placez cet Ć©lĆ©ment horizontalement pour modifier la hiĆ©rarchie."; + /* No comment provided by engineer. */ "Double tap to add a block" = "Toucher deux fois pour ajouter un bloc"; @@ -3372,6 +3405,13 @@ translators: Block name. %s: The localized block name */ /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "Donnez Ć  votre site un nom qui reflĆØte sa personnalitĆ© et le sujet quā€™il aborde. La premiĆØre impression compteĀ !"; +/* Default title of the Site Name screen. + Title for Site Name screen in iPhone landscape. */ +"Give your website a name" = "Donnez un nom Ć  votre siteĀ Web"; + +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your%@website a name" = "Donnez un nom Ć  votre siteĀ Web %@"; + /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "Gmail"; @@ -3769,6 +3809,9 @@ translators: Block name. %s: The localized block name */ /* Message displayed in an alert when user tries to install a first plugin on their site. */ "Installing the first plugin on your site can take up to 1 minute. During this time you wonā€™t be able to make changes to your site." = "Lā€™installation dā€™une premiĆØre extension sur votre site peut prendre jusqu'Ć  une minute. Pendant ce temps, vous ne pourrez effectuer aucun changement Ć  votre site."; +/* Title for a button that opens up the 'Getting More Views and Traffic' support page when tapped. */ +"Interested in building your audience? Check out our top tips" = "Vous souhaitez gagner en popularitĆ©Ā ? Consultez nos meilleurs conseils "; + /* Interior Design site intent topic */ "Interior Design" = "DĆ©coration dā€™intĆ©rieur"; @@ -4456,6 +4499,9 @@ translators: Block name. %s: The localized block name */ /* Insights 'Most Popular Time' header */ "Most Popular Time" = "Heure la plus populaire"; +/* Screen reader text for button that will move the menu item. Argument is menu item's name. */ +"Move %@" = "DĆ©placer %@"; + /* No comment provided by engineer. */ "Move Image Backward" = "DĆ©placer lā€™image vers lā€™arriĆØre"; @@ -5714,6 +5760,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Menu item label for linking a project page. */ "Projects" = "Projets"; +/* Title label for the Prompts card in My Sites tab. */ +"Prompts" = "Incitations"; + /* Privacy setting for posts set to 'Public' (default). Should be the same as in core WP. Text for privacy settings: Public */ "Public" = "Public"; @@ -5957,6 +6006,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* No comment provided by engineer. */ "Remove block" = "Retirer le bloc"; +/* Destructive menu title to remove the prompt card from the dashboard. */ +"Remove from dashboard" = "Supprimer du tableau de bord"; + /* Option to remove Insight from view. */ "Remove from insights" = "Retirer des thĆ©matiques"; @@ -6850,6 +6902,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Title shown in alert to confirm skipping all quick start items */ "Skip Quick Start" = "Passer le dĆ©marrage rapide"; +/* Menu title to skip today's prompt. */ +"Skip this prompt" = "Ignorer cette incitation"; + /* translators: Slash inserter autocomplete results */ "Slash inserter results" = "RĆ©sultats de lā€™outil dā€™insertion de barre oblique"; @@ -8329,9 +8384,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Utiliser le bouton dā€™icĆ“ne"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Utilisez ce lien pour ajouter les membres de votre Ć©quipe sans avoir Ć  les inviter individuellement. Toute personne ayant accĆØs Ć  ce lien sera en mesure de rejoindre votre organisation, mĆŖme si le lien a Ć©tĆ© envoyĆ© par quelquā€™un dā€™autre que vous. Faites attention Ć  le partager uniquement Ć  des personnes de confiance."; - /* No comment provided by engineer. */ "Use this site" = "Utiliser ce site"; @@ -8443,6 +8495,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Label for viewing more stats. */ "View more" = "Voir plus"; +/* Menu title to show more prompts. */ +"View more prompts" = "Afficher plus dā€™incitations"; + /* Description for view count. Singular. */ "View to your site so far" = "vue sur votre site jusquā€™Ć  prĆ©sent"; @@ -9436,6 +9491,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Pour ajouter des photos ou des vidĆ©os Ć  vos articles."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Utilisez ce lien pour ajouter les membres de votre Ć©quipe sans avoir Ć  les inviter individuellement. Toute personne ayant accĆØs Ć  ce lien sera en mesure de rejoindre votre organisation, mĆŖme si le lien a Ć©tĆ© envoyĆ© par quelquā€™un dā€™autre que vous. Veillez Ć  le partager uniquement avec des personnes de confiance."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Enregistrer comme brouillon"; @@ -9607,3 +9665,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Item 2 of delete screen section listing things that will be deleted. */ "ā€¢ Users & Authors" = "ā€¢Ā Utilisateurs et auteurs"; +/* Title label that indicates the prompt has been answered. */ +"āœ“ Answered" = "āœ“ Vous avez rĆ©pondu"; + diff --git a/WordPress/Resources/he.lproj/Localizable.strings b/WordPress/Resources/he.lproj/Localizable.strings index 0a9d3c880674..dd17f48cef3b 100644 --- a/WordPress/Resources/he.lproj/Localizable.strings +++ b/WordPress/Resources/he.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-20 17:54:08+0000 */ +/* Translation-Revision-Date: 2022-04-25 13:15:04+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: he_IL */ @@ -8387,9 +8387,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "הכפ×Ŗו×Ø 'להש×Ŗמש בהמל'"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "ני×Ŗן להש×Ŗמש בקישו×Ø ×–×” כדי להזמין א×Ŗ כל חב×Øי הצוו×Ŗ שלך במקביל, במקום לשלוח הזמנו×Ŗ אישיו×Ŗ. לכל אדם שמבק×Ø ×‘×›×Ŗוב×Ŗ ה-URL הזא×Ŗ ×Ŗהיה אפש×Øו×Ŗ להי×Øשם לא×Øגון שלך, גם אם הוא מקבל א×Ŗ הקישו×Ø ×ž××“× אח×Ø ×•×œ×›×Ÿ, חשוב לוודא שהקישו×Ø × ×©×œ×— לאנשים מהימנים בלבד."; - /* No comment provided by engineer. */ "Use this site" = "שימוש בא×Ŗ×Ø ×–×”"; @@ -9497,6 +9494,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "להוהיף ×Ŗמונו×Ŗ או ×”×Øטוני וידאו לפוהטים."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "ני×Ŗן להש×Ŗמש בקישו×Ø ×–×” כדי להזמין א×Ŗ כל חב×Øי הצוו×Ŗ שלך במקביל, במקום לשלוח הזמנו×Ŗ אישיו×Ŗ. לכל אדם שמבק×Ø ×‘×›×Ŗוב×Ŗ ה-URL הזא×Ŗ ×Ŗהיה אפש×Øו×Ŗ להי×Øשם לא×Øגון שלך, גם אם הוא מקבל א×Ŗ הקישו×Ø ×ž××“× אח×Ø ×•×œ×›×Ÿ, חשוב לוודא שהקישו×Ø × ×©×œ×— לאנשים מהימנים בלבד."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "לשמו×Ø ×›×˜×™×•×˜×”"; diff --git a/WordPress/Resources/id.lproj/Localizable.strings b/WordPress/Resources/id.lproj/Localizable.strings index 610d427e6a45..b95a3c89218a 100644 --- a/WordPress/Resources/id.lproj/Localizable.strings +++ b/WordPress/Resources/id.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-19 14:58:38+0000 */ +/* Translation-Revision-Date: 2022-04-22 12:27:46+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: id */ @@ -8387,9 +8387,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Gunakan tombol ikon"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Gunakan tautan ini untuk mendaftarkan anggota tim Anda tanpa harus mengundang mereka satu per satu. Siapa pun yang mengunjungi URL berikut akan dapat mendaftar ke organisasi Anda meskipun mereka menerima tautan dari orang lain, jadi pastikan Anda membagikannya dengan orang tepercaya."; - /* No comment provided by engineer. */ "Use this site" = "Gunakan situs ini"; @@ -9497,6 +9494,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Untuk menambahkan foto atau video ke artikel Anda."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Gunakan tautan ini untuk mendaftarkan anggota tim Anda tanpa harus mengundang mereka satu per satu. Siapa pun yang mengunjungi URL berikut akan dapat mendaftar ke organisasi Anda, meski pun mereka menerima tautan dari orang lain, jadi pastikan Anda membagikannya dengan orang tepercaya."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Simpan sebagai Konsep"; diff --git a/WordPress/Resources/it.lproj/Localizable.strings b/WordPress/Resources/it.lproj/Localizable.strings index 5d07d6e48aff..26783e8ae87d 100644 --- a/WordPress/Resources/it.lproj/Localizable.strings +++ b/WordPress/Resources/it.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-08 09:54:09+0000 */ +/* Translation-Revision-Date: 2022-04-25 13:20:14+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: it */ @@ -56,6 +56,12 @@ Plural format string for view title displaying the number of post likes. %1$d is the number of likes. */ "%1$d Likes" = "%1$d Mi piace"; +/* Singular format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answer" = "%1$d risposta"; + +/* Plural format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answers" = "%1$d risposte"; + /* Format string for displaying number of completed quickstart tutorials. %1$d is number completed, %2$d is total number of tutorials available. */ "%1$d of %2$d completed" = "%1$d di %2$d completati"; @@ -345,6 +351,9 @@ translators: Block name. %s: The localized block name */ /* Title for a threat */ "A file contains a malicious code pattern" = "Un file contiene un modello di codice dannoso"; +/* Subtitle of the Site Name screen. */ +"A good name is short and memorable.\nYou can change it later." = "Un buon nome ĆØ breve e indimenticabile.\nPuoi modificarlo in seguito."; + /* Story Intro welcome title */ "A new way to create and publish engaging content on your site." = "Un nuovo modo di creare e pubblicare contenuti coinvolgenti sul tuo sito."; @@ -481,6 +490,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Add Block Before" = "Aggiungi blocco prima"; +/* No comment provided by engineer. */ +"Add Blocks" = "Aggiungi blocchi"; + /* Alert option to add document contents into a blog post. */ "Add Contents to Post" = "Aggiungi contenuti all'articolo"; @@ -621,6 +633,9 @@ translators: Block name. %s: The localized block name */ /* Title for the advanced section in site settings screen */ "Advanced" = "Avanzate"; +/* Screen reader text expressing the menu item is after another menu item. Argument is a name for another menu item. */ +"After %@" = "Dopo di %@"; + /* Option to select the Airmail app when logging in with magic links */ "Airmail" = "Airmail"; @@ -778,6 +793,9 @@ translators: Block name. %s: The localized block name */ /* the comment has an anonymous author. */ "Anonymous" = "Anonimo"; +/* Title for a call-to-action button on the prompts card. */ +"Answer Prompt" = "Rispondi alla richiesta"; + /* Navigates to picker screen to change the app's icon Title of screen to change the app's icon */ "App Icon" = "Icona app"; @@ -1039,6 +1057,9 @@ translators: Block name. %s: The localized block name */ /* Beauty site intent topic */ "Beauty" = "Bellezza"; +/* Screen reader text expressing the menu item is before another menu item. Argument is a name for another menu item. */ +"Before %@" = "Prima di %@"; + /* 'Best Day' label for Most Popular stat. */ "Best Day" = "Giorno migliore"; @@ -1294,6 +1315,9 @@ translators: Block name. %s: The localized block name */ Title for the warning shown to the user when he refuses to re-login when the authToken is missing. */ "Careful!" = "Stai attento!"; +/* Example prompt for the Prompts card in Feature Introduction. */ +"Cast the movie of your life." = "Trasmetti il film della tua vita."; + /* Label for Categories Label for the categories field. Should be the same as WP core. */ "Categories" = "Categorie"; @@ -1401,6 +1425,9 @@ translators: Block name. %s: The localized block name */ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "Ricerca di elementi acqistati in corso ..."; +/* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ +"Child of %@" = "Secondario di %@"; + /* Title for the button to progress with the selected site homepage design */ "Choose" = "Scegli"; @@ -1440,6 +1467,9 @@ translators: Block name. %s: The localized block name */ /* Label for Publish time picker */ "Choose a time" = "Scegli un'ora"; +/* Select the site's intent. Subtitle */ +"Choose a topic from the list below or type your own." = "Scegli un argomento dall'elenco sottostante o digitane uno tuo."; + /* Title of a Quick Start Tour */ "Choose a unique site icon" = "Scegli un'icona del sito univoca"; @@ -2450,6 +2480,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Double tap and hold to edit" = "Tocca due volte e tieni premuto per modificare"; +/* Screen reader hint for button that will move the menu item */ +"Double tap and hold to move this menu item up or down. Move horizontally to change hierarchy." = "Tocca due volte e tieni premuto per spostare questo elemento del menu in alto o in basso. Sposta in orizzontale per modificare la gerarchia."; + /* No comment provided by engineer. */ "Double tap to add a block" = "Tocca due volte per aggiungere un blocco"; @@ -2582,6 +2615,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Duplicate block" = "Duplica il blocco"; +/* Placeholder text for the search field int the Site Intent screen. */ +"E.g. Fashion, Poetry, Politics" = "Ad esempio Moda, poesia, politica"; + /* No comment provided by engineer. */ "Each block has its own settings. To find them, tap on a block. Its settings will appear on the toolbar at the bottom of the screen." = "Ogni blocco ha le proprie impostazioni. Per trovarle tocca il blocco. Verranno visualizzate le impostazioni nella barra degli strumenti nella parte inferiore dello schermo."; @@ -3372,6 +3408,13 @@ translators: Block name. %s: The localized block name */ /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "Dai al tuo sito un nome che rifletta la tua personalitĆ  e l'argomento. La prima impressione conta."; +/* Default title of the Site Name screen. + Title for Site Name screen in iPhone landscape. */ +"Give your website a name" = "Dai al tuo sito web un nome"; + +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your%@website a name" = "Dai al tuo%@sito web un nome"; + /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "Gmail"; @@ -3769,6 +3812,9 @@ translators: Block name. %s: The localized block name */ /* Message displayed in an alert when user tries to install a first plugin on their site. */ "Installing the first plugin on your site can take up to 1 minute. During this time you wonā€™t be able to make changes to your site." = "L'installazione del primo plugin sul tuo sito puĆ² richiedere fino a 1 minuto. In questo periodo di tempo non potrai apportare modifiche al sito."; +/* Title for a button that opens up the 'Getting More Views and Traffic' support page when tapped. */ +"Interested in building your audience? Check out our top tips" = "Interessato a creare il tuo pubblico? Dai un'occhiata ai nostri migliori suggerimenti"; + /* Interior Design site intent topic */ "Interior Design" = "Design d'interni"; @@ -4456,6 +4502,9 @@ translators: Block name. %s: The localized block name */ /* Insights 'Most Popular Time' header */ "Most Popular Time" = "Orari piĆ¹ popolari"; +/* Screen reader text for button that will move the menu item. Argument is menu item's name. */ +"Move %@" = "Sposta %@"; + /* No comment provided by engineer. */ "Move Image Backward" = "Sposta indietro l'immagine"; @@ -5714,6 +5763,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Menu item label for linking a project page. */ "Projects" = "Progetti"; +/* Title label for the Prompts card in My Sites tab. */ +"Prompts" = "Richieste"; + /* Privacy setting for posts set to 'Public' (default). Should be the same as in core WP. Text for privacy settings: Public */ "Public" = "Pubblico"; @@ -5957,6 +6009,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* No comment provided by engineer. */ "Remove block" = "Rimuovi il blocco"; +/* Destructive menu title to remove the prompt card from the dashboard. */ +"Remove from dashboard" = "Rimuovi dalla bacheca"; + /* Option to remove Insight from view. */ "Remove from insights" = "Rimuovi dalla panoramica"; @@ -6850,6 +6905,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Title shown in alert to confirm skipping all quick start items */ "Skip Quick Start" = "Salta il tour iniziale"; +/* Menu title to skip today's prompt. */ +"Skip this prompt" = "Salta questa richiesta"; + /* translators: Slash inserter autocomplete results */ "Slash inserter results" = "Risultati dello strumento per l'inserimento della barra"; @@ -8329,9 +8387,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Usa pulsante icona"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Usa questo link per accettare i membri del team senza doverli invitare uno per uno. Chiunque visiti questo URL potrĆ  iscriversi alla tua organizzazione, anche se ha ricevuto un link da qualcun altro, quindi assicurati di condividerlo con le persone fidate."; - /* No comment provided by engineer. */ "Use this site" = "Utilizza questo sito"; @@ -8443,6 +8498,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Label for viewing more stats. */ "View more" = "Visualizza altro"; +/* Menu title to show more prompts. */ +"View more prompts" = "Visualizza piĆ¹ richieste"; + /* Description for view count. Singular. */ "View to your site so far" = "Visualizzazione del tuo sito finora"; @@ -9436,6 +9494,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Per aggiungere foto o video ai tuoi articoli."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Usa questo link per accettare i membri del team senza doverli invitare uno per uno. Chiunque visiti questo URL potrĆ  iscriversi alla tua organizzazione, anche se ha ricevuto un link da qualcun altro, quindi assicurati di condividerlo con le persone fidate."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Salva come bozza"; @@ -9607,3 +9668,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Item 2 of delete screen section listing things that will be deleted. */ "ā€¢ Users & Authors" = "ā€¢ Utenti e autori"; +/* Title label that indicates the prompt has been answered. */ +"āœ“ Answered" = "āœ“ Risposta"; + diff --git a/WordPress/Resources/ja.lproj/Localizable.strings b/WordPress/Resources/ja.lproj/Localizable.strings index bb70b9acd055..4281374a6d5d 100644 --- a/WordPress/Resources/ja.lproj/Localizable.strings +++ b/WordPress/Resources/ja.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-08 09:54:09+0000 */ +/* Translation-Revision-Date: 2022-04-25 13:16:59+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/3.0.0 */ /* Language: ja_JP */ @@ -56,6 +56,12 @@ Plural format string for view title displaying the number of post likes. %1$d is the number of likes. */ "%1$d Likes" = "%1$då€‹ć®ć€Œć„ć„ć­ć€"; +/* Singular format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answer" = "%1$dä»¶ć®å›žē­”"; + +/* Plural format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answers" = "%1$dä»¶ć®å›žē­”"; + /* Format string for displaying number of completed quickstart tutorials. %1$d is number completed, %2$d is total number of tutorials available. */ "%1$d of %2$d completed" = "%1$d\/%2$d ćŒå®Œäŗ†"; @@ -345,6 +351,9 @@ translators: Block name. %s: The localized block name */ /* Title for a threat */ "A file contains a malicious code pattern" = "ćƒ•ć‚”ć‚¤ćƒ«ć«ćÆ态ę‚Ŗę„ć®ć‚ć‚‹ć‚³ćƒ¼ćƒ‰ćŒå«ć¾ć‚Œć¦ć„ć¾ć™"; +/* Subtitle of the Site Name screen. */ +"A good name is short and memorable.\nYou can change it later." = "č‰Æć„åå‰ćÆēŸ­ćć€ē°”å˜ć«č¦šćˆć‚‰ć‚Œć‚‹ć‚‚ć®ć§ć™ć€‚\nćƒ†ćƒ¼ćƒžćÆå¾Œć§å¤‰ę›“ć§ćć¾ć™ć€‚"; + /* Story Intro welcome title */ "A new way to create and publish engaging content on your site." = "åæƒć‚’ć¤ć‹ć‚€ć‚³ćƒ³ćƒ†ćƒ³ćƒ„ć‚’ä½œć‚Šć€ć‚µć‚¤ćƒˆć§å…¬é–‹ć™ć‚‹ę–°ć—ć„ę–¹ę³•ć€‚"; @@ -481,6 +490,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Add Block Before" = "å‰ć«ćƒ–ćƒ­ćƒƒć‚Æ悒čæ½åŠ "; +/* No comment provided by engineer. */ +"Add Blocks" = "惖惭惃ć‚Æ悒čæ½åŠ "; + /* Alert option to add document contents into a blog post. */ "Add Contents to Post" = "ć‚³ćƒ³ćƒ†ćƒ³ćƒ„ć‚’ęŠ•ēØæ恫čæ½åŠ "; @@ -621,6 +633,9 @@ translators: Block name. %s: The localized block name */ /* Title for the advanced section in site settings screen */ "Advanced" = "äøŠē“šč€…ćƒ¢ćƒ¼ćƒ‰"; +/* Screen reader text expressing the menu item is after another menu item. Argument is a name for another menu item. */ +"After %@" = "%@ć®å¾Œ"; + /* Option to select the Airmail app when logging in with magic links */ "Airmail" = "Airmail"; @@ -778,6 +793,9 @@ translators: Block name. %s: The localized block name */ /* the comment has an anonymous author. */ "Anonymous" = "åŒæ名"; +/* Title for a call-to-action button on the prompts card. */ +"Answer Prompt" = "回ē­”ć®ćƒ—ćƒ­ćƒ³ćƒ—ćƒˆ"; + /* Navigates to picker screen to change the app's icon Title of screen to change the app's icon */ "App Icon" = "ć‚¢ćƒ—ćƒŖć‚¢ć‚¤ć‚³ćƒ³"; @@ -1039,6 +1057,9 @@ translators: Block name. %s: The localized block name */ /* Beauty site intent topic */ "Beauty" = "ē¾Žå®¹"; +/* Screen reader text expressing the menu item is before another menu item. Argument is a name for another menu item. */ +"Before %@" = "%@ć®å‰"; + /* 'Best Day' label for Most Popular stat. */ "Best Day" = "ęœ€é«˜čØ˜éŒ²ę—„"; @@ -1294,6 +1315,9 @@ translators: Block name. %s: The localized block name */ Title for the warning shown to the user when he refuses to re-login when the authToken is missing. */ "Careful!" = "恔ę³Øꄏ恏恠恕恄怂"; +/* Example prompt for the Prompts card in Feature Introduction. */ +"Cast the movie of your life." = "恂ćŖćŸć®äŗŗē”Ÿć®ę˜ ē”»ć‚’ć‚­ćƒ£ć‚¹ćƒ†ć‚£ćƒ³ć‚°ć—ć¾ć—ć‚‡ć†ć€‚"; + /* Label for Categories Label for the categories field. Should be the same as WP core. */ "Categories" = "ć‚«ćƒ†ć‚“ćƒŖćƒ¼"; @@ -1401,6 +1425,9 @@ translators: Block name. %s: The localized block name */ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "č³¼å…„ć‚’ē¢ŗčŖäø­ā€¦"; +/* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ +"Child of %@" = "%@ć®å­"; + /* Title for the button to progress with the selected site homepage design */ "Choose" = "éøꊞ"; @@ -1440,6 +1467,9 @@ translators: Block name. %s: The localized block name */ /* Label for Publish time picker */ "Choose a time" = "Ꙃ間悒éøꊞ"; +/* Select the site's intent. Subtitle */ +"Choose a topic from the list below or type your own." = "仄äø‹ć®ćƒŖć‚¹ćƒˆć‹ć‚‰ćƒ†ćƒ¼ćƒžć‚’éøꊞ恙悋恋态č‡Ŗåˆ†ć§å…„åŠ›ć—ć¾ć™ć€‚"; + /* Title of a Quick Start Tour */ "Choose a unique site icon" = "ē‹¬č‡Ŗć®ć‚µć‚¤ćƒˆć‚¢ć‚¤ć‚³ćƒ³ć‚’éøꊞ恙悋"; @@ -2450,6 +2480,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Double tap and hold to edit" = "ćƒ€ćƒ–ćƒ«ć‚æ惃惗ćØé•·ęŠ¼ć—ć§ē·Ø集"; +/* Screen reader hint for button that will move the menu item */ +"Double tap and hold to move this menu item up or down. Move horizontally to change hierarchy." = "ć“ć®ćƒ”ćƒ‹ćƒ„ćƒ¼é …ē›®ć‚’äøŠäø‹ć«ē§»å‹•ć™ć‚‹ć«ćÆćƒ€ćƒ–ćƒ«ć‚æćƒƒćƒ—ć—ć¦é•·ęŠ¼ć—ć—ć¦ćć ć•ć„ć€‚ ę°“å¹³ę–¹å‘ć«ē§»å‹•ć—ć¦éšŽå±¤ć‚’å¤‰ę›“ć—ć¾ć™ć€‚"; + /* No comment provided by engineer. */ "Double tap to add a block" = "ćƒ€ćƒ–ćƒ«ć‚æćƒƒćƒ—ć—ć¦ćƒ–ćƒ­ćƒƒć‚Æ悒čæ½åŠ "; @@ -2582,6 +2615,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Duplicate block" = "惖惭惃ć‚Æć‚’č¤‡č£½"; +/* Placeholder text for the search field int the Site Intent screen. */ +"E.g. Fashion, Poetry, Politics" = "例: ćƒ•ć‚”ćƒƒć‚·ćƒ§ćƒ³ć€č©©ć€ę”æę²»"; + /* No comment provided by engineer. */ "Each block has its own settings. To find them, tap on a block. Its settings will appear on the toolbar at the bottom of the screen." = "å„ćƒ–ćƒ­ćƒƒć‚Æ恫ćÆē‹¬č‡Ŗ恮čØ­å®šćŒć‚ć‚Šć¾ć™ć€‚ ē¢ŗčŖć™ć‚‹ć«ćÆ态惖惭惃ć‚Æ悒ć‚æćƒƒćƒ—ć—ć¾ć™ć€‚ ē”»é¢äø‹éƒØć«ć‚ć‚‹ćƒ„ćƒ¼ćƒ«ćƒćƒ¼ć«čØ­å®šćŒč”Øē¤ŗć•ć‚Œć¾ć™ć€‚"; @@ -3372,6 +3408,13 @@ translators: Block name. %s: The localized block name */ /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "ć‚µć‚¤ćƒˆć«ćć®ē‰¹å¾“ćØ惈惔惃ć‚Æ恌悏恋悋悈恆ćŖåå‰ć‚’ä»˜ć‘ć¦ćć ć•ć„ć€‚ ē¬¬äø€å°č±”ćŒå¤§äŗ‹ć§ć™ć€‚"; +/* Default title of the Site Name screen. + Title for Site Name screen in iPhone landscape. */ +"Give your website a name" = "ć‚µć‚¤ćƒˆć«åå‰ć‚’ä»˜ć‘ć¦ćć ć•ć„"; + +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your%@website a name" = "%@ ć‚µć‚¤ćƒˆć«åå‰ć‚’ä»˜ć‘ć¦ćć ć•ć„"; + /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "Gmail"; @@ -3769,6 +3812,9 @@ translators: Block name. %s: The localized block name */ /* Message displayed in an alert when user tries to install a first plugin on their site. */ "Installing the first plugin on your site can take up to 1 minute. During this time you wonā€™t be able to make changes to your site." = "ć‚µć‚¤ćƒˆć«ęœ€åˆć®ćƒ—ćƒ©ć‚°ć‚¤ćƒ³ć‚’ć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ć™ć‚‹ć«ćÆęœ€é•·ć§1åˆ†ć‹ć‹ć‚‹å “åˆćŒć‚ć‚Šć¾ć™ć€‚ćć®é–“ć€ć‚µć‚¤ćƒˆćøć®å¤‰ę›“ćÆč”Œć†ć“ćØ恌恧恍ćŖ恏ćŖć‚Šć¾ć™ć€‚"; +/* Title for a button that opens up the 'Getting More Views and Traffic' support page when tapped. */ +"Interested in building your audience? Check out our top tips" = "čŖ­č€…ć‚’å¢—ć‚„ć—ćŸć„ćØ恊考恈恧恙恋 ? ćƒˆćƒƒćƒ—ć®ćƒ’ćƒ³ćƒˆć‚’ć”č¦§ćć ć•ć„ć€‚"; + /* Interior Design site intent topic */ "Interior Design" = "ć‚¤ćƒ³ćƒ†ćƒŖć‚¢ćƒ‡ć‚¶ć‚¤ćƒ³"; @@ -4456,6 +4502,9 @@ translators: Block name. %s: The localized block name */ /* Insights 'Most Popular Time' header */ "Most Popular Time" = "꜀悂äŗŗ갗恮恂悋Ꙃ間"; +/* Screen reader text for button that will move the menu item. Argument is menu item's name. */ +"Move %@" = "%@悒ē§»å‹•ć™ć‚‹"; + /* No comment provided by engineer. */ "Move Image Backward" = "ē”»åƒć‚’å¾Œć‚ć«ē§»å‹•"; @@ -5714,6 +5763,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Menu item label for linking a project page. */ "Projects" = "惗惭ć‚ø悧ć‚Æ惈"; +/* Title label for the Prompts card in My Sites tab. */ +"Prompts" = "ćƒ—ćƒ­ćƒ³ćƒ—ćƒˆ"; + /* Privacy setting for posts set to 'Public' (default). Should be the same as in core WP. Text for privacy settings: Public */ "Public" = "公開"; @@ -5957,6 +6009,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* No comment provided by engineer. */ "Remove block" = "惖惭惃ć‚Æć‚’å‰Šé™¤"; +/* Destructive menu title to remove the prompt card from the dashboard. */ +"Remove from dashboard" = "ćƒ€ćƒƒć‚·ćƒ„ćƒœćƒ¼ćƒ‰ć‹ć‚‰å‰Šé™¤"; + /* Option to remove Insight from view. */ "Remove from insights" = "ēµ±čØˆę¦‚č¦ć‹ć‚‰å‰Šé™¤"; @@ -6850,6 +6905,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Title shown in alert to confirm skipping all quick start items */ "Skip Quick Start" = "ć‚Æ悤惃ć‚Æć‚¹ć‚æćƒ¼ćƒˆć‚’ć‚¹ć‚­ćƒƒćƒ—"; +/* Menu title to skip today's prompt. */ +"Skip this prompt" = "ć“ć®ćƒ—ćƒ­ćƒ³ćƒ—ćƒˆć‚’ć‚¹ć‚­ćƒƒćƒ—"; + /* translators: Slash inserter autocomplete results */ "Slash inserter results" = "ć‚¹ćƒ©ćƒƒć‚·ćƒ„ć‚¤ćƒ³ć‚µćƒ¼ć‚æćƒ¼ć®ēµęžœ"; @@ -8329,9 +8387,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "ć‚¢ć‚¤ć‚³ćƒ³ćƒœć‚æćƒ³ć‚’ä½æē”Ø"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "恓恮ćƒŖćƒ³ć‚Æ悒ä½æē”Ø恙悋ćØć€ćƒćƒ¼ćƒ ćƒ”ćƒ³ćƒćƒ¼ć‚’1äŗŗ恚恤恧ćÆćŖ恏äø€ę‹¬ć§ę‹›å¾…ć§ćć¾ć™ć€‚ 恓恮 URL ć«ć‚¢ć‚Æć‚»ć‚¹ć™ć‚‹ćØ态恠悌恧悂ēµ„ē¹”恫ē™»éŒ²ć•ć‚Œć¾ć™ć€‚ćƒŖćƒ³ć‚Æć‚’ć ć‚Œć‹ć‚‰å—ć‘å–ć£ćŸć‹ćÆ関äæ‚ćŖ恄恟悁态äæ”é ¼ć§ćć‚‹äŗŗćØå…±ęœ‰ć™ć‚‹ć‚ˆć†ć«ć—ć¦ćć ć•ć„ć€‚"; - /* No comment provided by engineer. */ "Use this site" = "ć“ć®ć‚µć‚¤ćƒˆć‚’ä½æē”Ø"; @@ -8443,6 +8498,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Label for viewing more stats. */ "View more" = "恕悉恫č”Øē¤ŗ"; +/* Menu title to show more prompts. */ +"View more prompts" = "ćƒ—ćƒ­ćƒ³ćƒ—ćƒˆć‚’ć•ć‚‰ć«č”Øē¤ŗ"; + /* Description for view count. Singular. */ "View to your site so far" = "ä»¶ć®ć“ć‚Œć¾ć§ć®ć‚µć‚¤ćƒˆć®é–²č¦§ę•°"; @@ -9436,6 +9494,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "ꊕēØæć«å†™ēœŸć¾ćŸćÆ動ē”»ć‚’čæ½åŠ ć™ć‚‹ć€‚"; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "恓恮ćƒŖćƒ³ć‚Æ悒ä½æē”Ø恙悋ćØć€ćƒćƒ¼ćƒ ćƒ”ćƒ³ćƒćƒ¼ć‚’1äŗŗ恚恤恧ćÆćŖ恏äø€ę‹¬ć§ę‹›å¾…ć§ćć¾ć™ć€‚ 恓恮 URL ć«ć‚¢ć‚Æć‚»ć‚¹ć™ć‚‹ćØ态恠悌恧悂ēµ„ē¹”恫ē™»éŒ²ć•ć‚Œć¾ć™ć€‚ćƒŖćƒ³ć‚Æć‚’ć ć‚Œć‹ć‚‰å—ć‘å–ć£ćŸć‹ćÆ関äæ‚ćŖ恄恟悁态äæ”é ¼ć§ćć‚‹äŗŗćØå…±ęœ‰ć™ć‚‹ć‚ˆć†ć«ć—ć¦ćć ć•ć„ć€‚"; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "äø‹ę›ø恍ćØ恗恦äæå­˜"; @@ -9607,3 +9668,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Item 2 of delete screen section listing things that will be deleted. */ "ā€¢ Users & Authors" = "ā€¢ćƒ¦ćƒ¼ć‚¶ćƒ¼ćØꊕēØæ者"; +/* Title label that indicates the prompt has been answered. */ +"āœ“ Answered" = "āœ“回ē­”ęøˆćæ"; + diff --git a/WordPress/Resources/ko.lproj/Localizable.strings b/WordPress/Resources/ko.lproj/Localizable.strings index cd6ac0d379e1..4769eb624a68 100644 --- a/WordPress/Resources/ko.lproj/Localizable.strings +++ b/WordPress/Resources/ko.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-08 13:54:09+0000 */ +/* Translation-Revision-Date: 2022-04-25 13:44:22+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/3.0.0 */ /* Language: ko_KR */ @@ -56,6 +56,12 @@ Plural format string for view title displaying the number of post likes. %1$d is the number of likes. */ "%1$d Likes" = "ģ¢‹ģ•„ģš” %1$dź°œ "; +/* Singular format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answer" = "%1$dź°œ ė‹µė³€"; + +/* Plural format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answers" = "%1$dź°œ ė‹µė³€"; + /* Format string for displaying number of completed quickstart tutorials. %1$d is number completed, %2$d is total number of tutorials available. */ "%1$d of %2$d completed" = "%1$d\/%2$d ģ™„ė£ŒėØ"; @@ -345,6 +351,9 @@ translators: Block name. %s: The localized block name */ /* Title for a threat */ "A file contains a malicious code pattern" = "ķŒŒģ¼ģ— ģ•…ģ„± ģ½”ė“œ ķŒØķ„“ģ“ ģžˆģŒ"; +/* Subtitle of the Site Name screen. */ +"A good name is short and memorable.\nYou can change it later." = "ģ¢‹ģ€ ģ“ė¦„ģ€ ģ§§ź³  ģøģƒģ ģž…ė‹ˆė‹¤.\nė‚˜ģ¤‘ģ— ė³€ź²½ķ•  ģˆ˜ ģžˆģŠµė‹ˆė‹¤."; + /* Story Intro welcome title */ "A new way to create and publish engaging content on your site." = "ģ‚¬ģ“ķŠøģ—ģ„œ ė§¤ė „ģ ģø ģ½˜ķ…ģø ė„¼ ė§Œė“¤ź³  ź³µź°œķ•˜ėŠ” ģƒˆė”œģš“ ė°©ė²•ģž…ė‹ˆė‹¤."; @@ -481,6 +490,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Add Block Before" = "ė‹¤ģŒ ėø”ė” ģ“ģ „ģ— ģ¶”ź°€ķ•˜źø°"; +/* No comment provided by engineer. */ +"Add Blocks" = "ėø”ė” ģ¶”ź°€"; + /* Alert option to add document contents into a blog post. */ "Add Contents to Post" = "źø€ģ— ģ½˜ķ…ģø  ģ¶”ź°€"; @@ -618,6 +630,9 @@ translators: Block name. %s: The localized block name */ /* Title for the advanced section in site settings screen */ "Advanced" = "ź³ źø‰"; +/* Screen reader text expressing the menu item is after another menu item. Argument is a name for another menu item. */ +"After %@" = "%@ ė’¤"; + /* Option to select the Airmail app when logging in with magic links */ "Airmail" = "ģ—ģ–“ė©”ģ¼"; @@ -772,6 +787,9 @@ translators: Block name. %s: The localized block name */ /* the comment has an anonymous author. */ "Anonymous" = "ģµėŖ…"; +/* Title for a call-to-action button on the prompts card. */ +"Answer Prompt" = "ė‹µė³€ ķ”„ė”¬ķ”„ķŠø"; + /* Navigates to picker screen to change the app's icon Title of screen to change the app's icon */ "App Icon" = "ģ•± ģ•„ģ“ģ½˜"; @@ -799,6 +817,9 @@ translators: Block name. %s: The localized block name */ Verb. Approves a 2fa authentication challenge, and logs in a user. */ "Approve" = "ģŠ¹ģø"; +/* Approves a Comment */ +"Approve Comment" = "ėŒ“źø€ ģŠ¹ģø"; + /* Button title for Approved comment state. Title of approved Comments filter. */ "Approved" = "ģŠ¹ģø"; @@ -1030,6 +1051,9 @@ translators: Block name. %s: The localized block name */ /* Beauty site intent topic */ "Beauty" = "ėÆøģš©"; +/* Screen reader text expressing the menu item is before another menu item. Argument is a name for another menu item. */ +"Before %@" = "%@ ģ•ž"; + /* 'Best Day' label for Most Popular stat. */ "Best Day" = "ģ•ˆė…•ķžˆ ź³„ģ„øģš”."; @@ -1285,6 +1309,9 @@ translators: Block name. %s: The localized block name */ Title for the warning shown to the user when he refuses to re-login when the authToken is missing. */ "Careful!" = "ģ”°ģ‹¬ķ•˜ģ„øģš”!"; +/* Example prompt for the Prompts card in Feature Introduction. */ +"Cast the movie of your life." = "ģžģ‹ ģ˜ ģøģƒģ„ ģ˜ķ™”ė”œ ė§Œė“¤ģ–“ ė³“ģ„øģš”."; + /* Label for Categories Label for the categories field. Should be the same as WP core. */ "Categories" = "ģ¹“ķ…Œź³ ė¦¬"; @@ -1389,6 +1416,9 @@ translators: Block name. %s: The localized block name */ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "źµ¬ė§¤ ķ™•ģø ģ¤‘ā€¦"; +/* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ +"Child of %@" = "%@ģ˜ ķ•˜ģœ„"; + /* Title for the button to progress with the selected site homepage design */ "Choose" = "ģ„ ķƒķ•˜źø°"; @@ -1428,6 +1458,9 @@ translators: Block name. %s: The localized block name */ /* Label for Publish time picker */ "Choose a time" = "ģ‹œź°„ģ„ ģ„ ķƒķ•˜ģ„øģš”."; +/* Select the site's intent. Subtitle */ +"Choose a topic from the list below or type your own." = "ģ•„ėž˜ ėŖ©ė”ģ—ģ„œ ķ…Œė§ˆė„¼ ģ„ ķƒķ•˜ź±°ė‚˜ ģ›ķ•˜ėŠ” ķ…Œė§ˆė„¼ ģž…ė „ķ•˜ģ„øģš”."; + /* Title of a Quick Start Tour */ "Choose a unique site icon" = "ź³ ģœ ķ•œ ģ‚¬ģ“ķŠø ģ•„ģ“ģ½˜ ģ„ ķƒ"; @@ -2438,6 +2471,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Double tap and hold to edit" = "ķŽøģ§‘ķ•˜ė ¤ė©“ ė‘ ė²ˆ ķƒ­ķ•˜ź³  źøøź²Œ ėˆ„ė„“ģ„øģš”."; +/* Screen reader hint for button that will move the menu item */ +"Double tap and hold to move this menu item up or down. Move horizontally to change hierarchy." = "ģ“ ė©”ė‰“ ķ•­ėŖ©ģ„ ģœ„ ė˜ėŠ” ģ•„ėž˜ė”œ ģ“ė™ķ•˜ė ¤ė©“ ė‘ ė²ˆ ėˆ„ė„“ź³  ģœ ģ§€ķ•©ė‹ˆė‹¤. ź³„ģøµźµ¬ģ”°ė„¼ ė³€ź²½ķ•˜ė ¤ė©“ ź°€ė”œ ė°©ķ–„ģœ¼ė”œ ģ“ė™ķ•©ė‹ˆė‹¤."; + /* No comment provided by engineer. */ "Double tap to add a block" = "ėø”ė”ģ„ ģ¶”ź°€ķ•˜ė ¤ė©“ ė‘ ė²ˆ ķƒ­ķ•˜ģ„øģš”."; @@ -3360,6 +3396,13 @@ translators: Block name. %s: The localized block name */ /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "ź°œģ„±ź³¼ ģ£¼ģ œė„¼ ė°˜ģ˜ķ•˜ėŠ” ģ‚¬ģ“ķŠø ģ œėŖ©ģ„ ģ£¼ģ‹­ģ‹œģ˜¤. ģ²« ģøģƒģ“ ė§Žģ€ ė¶€ė¶„ģ„ ģ°Øģ§€ķ•©ė‹ˆė‹¤!"; +/* Default title of the Site Name screen. + Title for Site Name screen in iPhone landscape. */ +"Give your website a name" = "ģ›¹ģ‚¬ģ“ķŠø ģ“ė¦„ ģ§€ģ •"; + +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your%@website a name" = "%@ ģ›¹ģ‚¬ģ“ķŠø ģ“ė¦„ ģ§€ģ •"; + /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "ģ§€ė©”ģ¼"; @@ -3757,6 +3800,9 @@ translators: Block name. %s: The localized block name */ /* Message displayed in an alert when user tries to install a first plugin on their site. */ "Installing the first plugin on your site can take up to 1 minute. During this time you wonā€™t be able to make changes to your site." = "ģ²« ė²ˆģ§ø ķ”ŒėŸ¬ź·øģøģ„ ģ‚¬ģ“ķŠøģ— ģ„¤ģ¹˜ķ•˜ėŠ” ė°ģ—ėŠ” ģµœėŒ€ 1ė¶„ģ“ ģ†Œģš”ė  ģˆ˜ ģžˆģŠµė‹ˆė‹¤. ģ“ ģ‹œź°„ ė™ģ•ˆģ€ ģ‚¬ģ“ķŠøė„¼ ė³€ź²½ķ•  ģˆ˜ ģ—†ģŠµė‹ˆė‹¤."; +/* Title for a button that opens up the 'Getting More Views and Traffic' support page when tapped. */ +"Interested in building your audience? Check out our top tips" = "ģž ģž¬ ź³ ź°ģ„ ķ™•ė³“ķ•˜ėŠ” ė° ź“€ģ‹¬ģ“ ģžˆģœ¼ģ‹ ź°€ģš”? ģµœź³ ģ˜ ķŒ ķ™•ģø"; + /* Interior Design site intent topic */ "Interior Design" = "ģøķ…Œė¦¬ģ–“ ė””ģžģø"; @@ -4444,6 +4490,9 @@ translators: Block name. %s: The localized block name */ /* Insights 'Most Popular Time' header */ "Most Popular Time" = "ź°€ģž„ ģøźø° ģžˆėŠ” ģ‹œź°„"; +/* Screen reader text for button that will move the menu item. Argument is menu item's name. */ +"Move %@" = "%@ ģ“ė™"; + /* No comment provided by engineer. */ "Move Image Backward" = "ģ“ėÆøģ§€ė„¼ ė’¤ė”œ ģ“ė™"; @@ -5699,6 +5748,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Menu item label for linking a project page. */ "Projects" = "ķ”„ė”œģ ķŠø"; +/* Title label for the Prompts card in My Sites tab. */ +"Prompts" = "ķ”„ė”¬ķ”„ķŠø"; + /* Privacy setting for posts set to 'Public' (default). Should be the same as in core WP. Text for privacy settings: Public */ "Public" = "ź³µź°œ"; @@ -5942,6 +5994,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* No comment provided by engineer. */ "Remove block" = "ėø”ė” ģ œź±°ķ•˜źø°"; +/* Destructive menu title to remove the prompt card from the dashboard. */ +"Remove from dashboard" = "ģ•Œė¦¼ķŒģ—ģ„œ ģ œź±°"; + /* Option to remove Insight from view. */ "Remove from insights" = "ģøģ‚¬ģ“ķŠøģ—ģ„œ ģ œź±°"; @@ -6835,6 +6890,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Title shown in alert to confirm skipping all quick start items */ "Skip Quick Start" = "ķ€µ ģŠ¤ķƒ€ķŠø ź±“ė„ˆė›°źø°"; +/* Menu title to skip today's prompt. */ +"Skip this prompt" = "ģ“ ķ”„ė”¬ķ”„ķŠø ź±“ė„ˆė›°źø°"; + /* translators: Slash inserter autocomplete results */ "Slash inserter results" = "ģŠ¬ėž˜ģ‹œ ģ‚½ģž…źø° ź²°ź³¼"; @@ -8087,6 +8145,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Unapproves a comment */ "Unapprove" = "ė¹„ģŠ¹ģø"; +/* Unapproves a Comment */ +"Unapprove Comment" = "ėŒ“źø€ ėÆøģŠ¹ģø"; + /* VoiceOver accessibility hint, informing the user the button can be used to unapprove a comment */ "Unapproves the Comment." = "ėŒ“źø€ģ„ ģŠ¹ģøķ•˜ģ§€ ģ•ŠģŠµė‹ˆė‹¤."; @@ -8311,9 +8372,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "ģ•„ģ“ģ½˜ ė²„ķŠ¼ ģ‚¬ģš©"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "ģ“ ė§ķ¬ė„¼ ķ™œģš©ķ•˜ė©“ ģ¼ģ¼ģ“ ķ•œ ėŖ…ģ”© ģ“ˆėŒ€ķ•˜ģ§€ ģ•Šģ•„ė„ ģ—¬ėŸ¬ ķŒ€ģ›ģ“ ķŒ€ģ— ģ°øģ—¬ķ•  ģˆ˜ ģžˆź²Œ ė©ė‹ˆė‹¤. ģ“ URLģ„ ė°©ė¬øķ•˜ėŠ” ģ‚¬ėžŒģ€ ėˆ„źµ¬ė‚˜ ģ”°ģ§ģ— ź°€ģž…ķ•  ģˆ˜ ģžˆģŠµė‹ˆė‹¤. ė‹¤ė„ø ģ‚¬ėžŒģ„ ķ†µķ•“ģ„œ ģ“ ė§ķ¬ė„¼ ģ „ė‹¬ė°›ģ€ ģ‚¬ėžŒė„ ź°€ģž…ķ•  ģˆ˜ ģžˆźø° ė•Œė¬øģ— ģ‹ ė¢°ķ•  ģˆ˜ ģžˆėŠ” ģ‚¬ėžŒģ—ź²Œė§Œ ź³µģœ ķ•˜ģ„øģš”."; - /* No comment provided by engineer. */ "Use this site" = "ģ“ ģ‚¬ģ“ķŠø ģ‚¬ģš©"; @@ -8425,6 +8483,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Label for viewing more stats. */ "View more" = "ė” ė³“źø°"; +/* Menu title to show more prompts. */ +"View more prompts" = "ė” ė§Žģ€ ķ”„ė”¬ķ”„ķŠø ė³“źø°"; + /* Description for view count. Singular. */ "View to your site so far" = "ģ§€źøˆź¹Œģ§€ ģ‚¬ģ“ķŠø ģ”°ķšŒģˆ˜"; @@ -9418,6 +9479,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "źø€ģ— ģ‚¬ģ§„ģ“ė‚˜ ė¹„ė””ģ˜¤ė„¼ ģ¶”ź°€"; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "ģ“ ė§ķ¬ė„¼ ķ™œģš©ķ•˜ė©“ ģ¼ģ¼ģ“ ķ•œ ėŖ…ģ”© ģ“ˆėŒ€ķ•˜ģ§€ ģ•Šģ•„ė„ ģ—¬ėŸ¬ ķŒ€ģ›ģ“ ķŒ€ģ— ģ°øģ—¬ķ•  ģˆ˜ ģžˆź²Œ ė©ė‹ˆė‹¤. ģ“ URLģ„ ė°©ė¬øķ•˜ėŠ” ģ‚¬ėžŒģ€ ėˆ„źµ¬ė‚˜ ģ”°ģ§ģ— ź°€ģž…ķ•  ģˆ˜ ģžˆģŠµė‹ˆė‹¤. ė‹¤ė„ø ģ‚¬ėžŒģ„ ķ†µķ•“ģ„œ ģ“ ė§ķ¬ė„¼ ģ „ė‹¬ė°›ģ€ ģ‚¬ėžŒė„ ź°€ģž…ķ•  ģˆ˜ ģžˆźø° ė•Œė¬øģ— ģ‹ ė¢°ķ•  ģˆ˜ ģžˆėŠ” ģ‚¬ėžŒģ—ź²Œė§Œ ź³µģœ ķ•˜ģ„øģš”."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "ģž„ģ‹œźø€ė”œ ģ €ģž„"; @@ -9589,3 +9653,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Item 2 of delete screen section listing things that will be deleted. */ "ā€¢ Users & Authors" = "ā€¢ ģ‚¬ģš©ģž ė° źø€ģ““ģ“"; +/* Title label that indicates the prompt has been answered. */ +"āœ“ Answered" = "āœ“ ė‹µė³€ėØ"; + diff --git a/WordPress/Resources/nl.lproj/Localizable.strings b/WordPress/Resources/nl.lproj/Localizable.strings index c77c9bef9448..1be81acbf0ee 100644 --- a/WordPress/Resources/nl.lproj/Localizable.strings +++ b/WordPress/Resources/nl.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-03-25 13:54:07+0000 */ +/* Translation-Revision-Date: 2022-04-25 13:04:18+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: nl */ @@ -325,13 +325,13 @@ translators: Block name. %s: The localized block name */ "Once<\/strong> a week" = "Een keer<\/strong> per week"; /* Short title telling the user they will receive a blogging reminder once per week. The word for 'once' should be surrounded by HTML tags. */ -"Once<\/strong> a week at %@" = "Een<\/strong> keer per week"; +"Once<\/strong> a week at %@" = "Een<\/strong> keer per week om %@"; /* Short title telling the user they will receive a blogging reminder two times a week. The word for 'twice' should be surrounded by HTML tags. */ "Twice<\/strong> a week" = "Twee keer<\/strong> per week"; /* Short title telling the user they will receive a blogging reminder two times a week. The word for 'twice' should be surrounded by HTML tags. */ -"Twice<\/strong> a week at %@" = "Twee<\/strong> keer per week"; +"Twice<\/strong> a week at %@" = "Twee<\/strong> keer per week om %@"; /* Label displaying the user's username preceeded by an '@' symbol. %1$@ is a placeholder for the username. */ "@%1$@" = "@%1$@"; @@ -1033,6 +1033,9 @@ translators: Block name. %s: The localized block name */ /* Message shown encouraging the user to leave a comment on a post in the reader. */ "Be the first to leave a comment." = "Laat als eerste een reactie achter."; +/* Beauty site intent topic */ +"Beauty" = "Schoonheid"; + /* 'Best Day' label for Most Popular stat. */ "Best Day" = "Beste dag"; @@ -1119,6 +1122,9 @@ translators: Block name. %s: The localized block name */ Discoverability title for bold formatting keyboard shortcut. */ "Bold" = "Vet"; +/* Books site intent topic */ +"Books" = "Boeken"; + /* No comment provided by engineer. */ "Border Radius" = "Radius rand"; @@ -1428,6 +1434,9 @@ translators: Block name. %s: The localized block name */ /* Label for Publish time picker */ "Choose a time" = "Kies een tijd"; +/* Select the site's intent. Subtitle */ +"Choose a topic from the list below or type your own." = "Kies een onderwerp van de lijst hieronder of typ je eigen"; + /* Title of a Quick Start Tour */ "Choose a unique site icon" = "Kies een unieke site pictogram"; @@ -2658,6 +2667,9 @@ translators: Block name. %s: The localized block name */ /* Screen reader hint for button to edit a menu item */ "Edits this menu item" = "Bewerkt dit menu-item"; +/* Education site intent topic */ +"Education" = "Onderwijs"; + /* Accessibility label for the Email text field. Account Settings Email label Email address text field placeholder @@ -3035,6 +3047,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Failed to upload files.\nPlease tap for options." = "Uploaden van bestanden mislukt.\nTik voor opties."; +/* Fashion site intent topic */ +"Fashion" = "Mode"; + /* Option to select the Fastmail app when logging in with magic links */ "Fastmail" = "Fastmail"; @@ -3092,12 +3107,18 @@ translators: Block name. %s: The localized block name */ /* Label for the file type (.JPG, .PNG, etc) for a media asset (image / video) */ "File type" = "Bestandstype"; +/* Film & Television site intent topic */ +"Film & Television" = "Film & televisie"; + /* Title of the filter button in the Reader */ "Filter" = "Filteren"; /* Title of a screen that shows activity types so the user can filter using them (eg.: posts, images, users) */ "Filter by activity type" = "Filter op type activiteit"; +/* Finance site intent topic */ +"Finance" = "FinanciĆ«n"; + /* Title for the find out more button in the What's New page. */ "Find out more" = "Meer te weten komen"; @@ -3209,6 +3230,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Font Size" = "Lettertype grootte"; +/* Food site intent topic */ +"Food" = "Eten"; + /* An example tag used in the login prologue screens. */ "Football" = "Voetbal"; @@ -3266,6 +3290,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Gallery style" = "Galerij stijl"; +/* Gaming site intent topic */ +"Gaming" = "Games"; + /* An example tag used in the login prologue screens. */ "Gardening" = "Tuinieren"; @@ -3327,6 +3354,13 @@ translators: Block name. %s: The localized block name */ /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "Geef je site een naam die zijn personaliteit en onderwerp reflecteerd. De eerste indruk telt!"; +/* Default title of the Site Name screen. + Title for Site Name screen in iPhone landscape. */ +"Give your website a name" = "Geef je site een naam"; + +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your%@website a name" = "Geef je%@site een naam"; + /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "Gmail"; @@ -3349,6 +3383,10 @@ translators: Block name. %s: The localized block name */ /* Message shown on screen after the Google sign up process failed. */ "Google sign up failed." = "Aanmelden met Google mislukt."; +/* Button title on the blogging prompt's feature introduction view to dismiss the view. + Title for the continue button in the dashboard's custom What's New page. */ +"Got it" = "Ik snap het"; + /* Okay button title shown in alert announcing new Create Button feature. */ "Got it!" = "Begrepen!"; @@ -3441,6 +3479,9 @@ translators: Block name. %s: The localized block name */ /* H6 Aztec Style */ "Heading 6" = "Heading 6"; +/* Health site intent topic */ +"Health" = "Gezondheid"; + /* Help button */ "Help" = "Help"; @@ -4392,6 +4433,9 @@ translators: Block name. %s: The localized block name */ /* Insights 'Most Popular Time' header */ "Most Popular Time" = "Populairste tijd"; +/* Screen reader text for button that will move the menu item. Argument is menu item's name. */ +"Move %@" = "Verplaats %@"; + /* No comment provided by engineer. */ "Move Image Backward" = "Verplaats afbeelding naar achteren"; @@ -4482,6 +4526,9 @@ translators: Block name. %s: The localized block name */ /* Example post title used in the login prologue screens. */ "My Top Ten Cafes" = "Mijn toptien cafĆ©s"; +/* Title for disclaimer in the dashboard's custom What's New page. */ +"NEW!" = "NIEUW!"; + /* Accessibility label for the Email text field. Header for a comment author's name, shown when editing a comment. Name text field placeholder @@ -4564,6 +4611,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Sort Order */ "Newest first" = "Nieuwste eerst"; +/* News site intent topic */ +"News" = "Nieuws"; + /* Next action on comment moderation snackbar. Next action on share extension editor screen. Next screen button title @@ -5163,6 +5213,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Message informing the user that their pages parent has been set successfully */ "Parent page successfully updated." = "Hoofdpagina met succes geĆ¼pdatet."; +/* Parenting site intent topic */ +"Parenting" = "Ouderschap"; + /* Accessibility label for the password text field in the self-hosted login page. Label for entering password in password field Label for the password field. Should be the same as WP core. @@ -5213,12 +5266,18 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Delete Site confirmation action title */ "Permanently Delete Site" = "Verwijder site permanent"; +/* Personal site intent topic */ +"Personal" = "Persoonlijk"; + /* Section title for the personalize table section in the blog details screen. */ "Personalize" = "Personaliseer"; /* Accessibility label for selecting an image or video from the device's photo library on formatting toolbar. */ "Photo Library" = "Fotobibliotheek"; +/* Photography site intent topic */ +"Photography" = "Fotografie"; + /* Tab bar title for the Photos tab in Media Picker */ "Photos" = "Foto's"; @@ -5632,6 +5691,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Menu item label for linking a project page. */ "Projects" = "Projecten"; +/* Title label for the Prompts card in My Sites tab. */ +"Prompts" = "Prompts"; + /* Privacy setting for posts set to 'Public' (default). Should be the same as in core WP. Text for privacy settings: Public */ "Public" = "Openbaar"; @@ -5749,6 +5811,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Title of the screen that allows the user to change the Reader CSS URL for debug builds */ "Reader CSS URL" = "Reader CSS URL"; +/* Real Estate site intent topic */ +"Real Estate" = "Onroerend goed"; + /* Text for the 'Reblog' button. */ "Reblog" = "Herblog"; @@ -5869,6 +5934,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* No comment provided by engineer. */ "Remove block" = "Verwijder blok"; +/* Destructive menu title to remove the prompt card from the dashboard. */ +"Remove from dashboard" = "Verwijder van dashboard"; + /* Option to remove Insight from view. */ "Remove from insights" = "Verwijderen uit inzichten"; @@ -6756,6 +6824,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Title shown in alert to confirm skipping all quick start items */ "Skip Quick Start" = "Snelstart overslaan"; +/* Menu title to skip today's prompt. */ +"Skip this prompt" = "Sla deze prompt over"; + /* translators: Slash inserter autocomplete results */ "Slash inserter results" = "Slash inserter resultaten"; @@ -6879,6 +6950,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Title for the Speed up your site Settings Screen */ "Speed up your site" = "Versnel je site"; +/* Sports site intent topic */ +"Sports" = "Sport"; + /* Standard post format label */ "Standard" = "Standaard"; @@ -7157,6 +7231,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Label for the Taxonomy area (categories, keywords, ...) in post settings. */ "Taxonomy" = "Taxonomie"; +/* Technology site intent topic */ +"Technology" = "Technologie"; + /* My Profile 'About me' hint text */ "Tell us a bit about you." = "Vertel ons iets over jezelf."; @@ -8214,9 +8291,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Gebruik pictogram knop"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Gebruik deze link om je teamleden aan boord te krijgen zonder ze een voor een uit te nodigen. Iedereen die deze URL bezoekt, kan zich aanmelden bij je organisatie, zelfs als ze de link van iemand anders hebben ontvangen, dus zorg ervoor dat je deze deelt met vertrouwde mensen."; - /* No comment provided by engineer. */ "Use this site" = "Gebruik deze site"; @@ -8328,6 +8402,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Label for viewing more stats. */ "View more" = "Meer weergeven"; +/* Menu title to show more prompts. */ +"View more prompts" = "Bekijk meer prompts"; + /* Description for view count. Singular. */ "View to your site so far" = "Bekijk je site tot zover"; @@ -9291,6 +9368,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Text for related post cell preview */ "in \"Upgrade\"" = "in \"Upgrade\""; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Gebruik deze link om je teamleden aan boord te krijgen zonder ze een voor een uit te nodigen. Iedereen die deze URL bezoekt, kan zich aanmelden bij je organisatie, zelfs als ze de link van iemand anders hebben ontvangen, dus zorg ervoor dat je deze deelt met vertrouwde mensen."; + /* Later today */ "later today" = "later vandaag"; @@ -9435,3 +9515,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Item 2 of delete screen section listing things that will be deleted. */ "ā€¢ Users & Authors" = "ā€¢ Gebruikers en auteurs"; +/* Title label that indicates the prompt has been answered. */ +"āœ“ Answered" = "āœ“ Beantwoord"; + diff --git a/WordPress/Resources/pl.lproj/Localizable.strings b/WordPress/Resources/pl.lproj/Localizable.strings index cf1de2b74652..3c96b263a084 100644 --- a/WordPress/Resources/pl.lproj/Localizable.strings +++ b/WordPress/Resources/pl.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-04 06:09:00+0000 */ +/* Translation-Revision-Date: 2022-04-22 06:43:25+0000 */ /* Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2); */ /* Generator: GlotPress/3.0.0 */ /* Language: pl */ @@ -344,7 +344,7 @@ "OK" = "OK"; /* Disabled */ -"Off" = "Wyłączone"; +"Off" = "Wyłączono"; /* An informal exclaimation that means `something went wrong`. Title for the view when there's an error loading a comment. diff --git a/WordPress/Resources/pt-BR.lproj/Localizable.strings b/WordPress/Resources/pt-BR.lproj/Localizable.strings index 2ba86483898b..f0ba42c4036f 100644 --- a/WordPress/Resources/pt-BR.lproj/Localizable.strings +++ b/WordPress/Resources/pt-BR.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-12 18:22:19+0000 */ +/* Translation-Revision-Date: 2022-04-25 13:10:00+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: pt_BR */ @@ -8329,9 +8329,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Usar Ć­cone de botĆ£o"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Use este link para integrar os membros da sua equipe sem ter que convidĆ”-los um por um. Qualquer pessoa que visitar este URL poderĆ” se inscrever em sua organizaĆ§Ć£o, mesmo que tenha recebido o link de outra pessoa, entĆ£o certifique-se de compartilhĆ”-lo com pessoas de confianƧa."; - /* No comment provided by engineer. */ "Use this site" = "Usar este site"; @@ -9436,6 +9433,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Para adicionar fotos ou vĆ­deos aos seus posts."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Use este link para integrar os membros da sua equipe sem ter que convidĆ”-los um por um. Qualquer pessoa que visitar este URL poderĆ” se inscrever em sua organizaĆ§Ć£o, mesmo que tenha recebido o link de outra pessoa, entĆ£o certifique-se de compartilhĆ”-lo com pessoas de confianƧa."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Salvar como rascunho"; diff --git a/WordPress/Resources/ro.lproj/Localizable.strings b/WordPress/Resources/ro.lproj/Localizable.strings index 861e8bd2926b..163ede27ea23 100644 --- a/WordPress/Resources/ro.lproj/Localizable.strings +++ b/WordPress/Resources/ro.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-19 05:54:28+0000 */ +/* Translation-Revision-Date: 2022-04-22 13:49:01+0000 */ /* Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n == 0 || n % 100 >= 2 && n % 100 <= 19) ? 1 : 2); */ /* Generator: GlotPress/3.0.0 */ /* Language: ro */ @@ -50,7 +50,7 @@ /* Singular button title to Like a comment. %1$d is a placeholder for the number of Likes. Singular format string for view title displaying the number of post likes. %1$d is the number of likes. */ -"%1$d Like" = "O apreciere"; +"%1$d Like" = "%1$d apreciere"; /* Plural button title to Like a comment. %1$d is a placeholder for the number of Likes. Plural format string for view title displaying the number of post likes. %1$d is the number of likes. */ @@ -4383,7 +4383,7 @@ translators: Block name. %s: The localized block name */ "Media" = "Media"; /* Label for size of media cache in the app. */ -"Media Cache Size" = " Dimensiune cache media"; +"Media Cache Size" = "Dimensiune cache media"; /* Title for alert when access to media capture is not granted */ "Media Capture" = "Captură media"; @@ -7758,7 +7758,7 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ "Thumbnail" = "Miniatură"; /* Message shown if a thumbnail preview of a media item unavailable. */ -"Thumbnail unavailable." = "Miniatură indisponibilă"; +"Thumbnail unavailable." = "Miniatură indisponibilă."; /* No comment provided by engineer. */ "Tiled gallery settings" = "Setări galerii placate"; @@ -8390,9 +8390,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Folosește butonul icon"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Folosește această legătură pentru a mării numărul de membri din echipa ta fără a fi nevoie să-i inviți individual. Oricine vizitează acest URL va putea să se Ć®nscrie Ć®n organizația ta, chiar dacă a primit o invitație de la altcineva, deci asigură-te că partajezi legătura cu persoane de Ć®ncredere."; - /* No comment provided by engineer. */ "Use this site" = "Folosește acest site"; @@ -9415,7 +9412,7 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ "_%1$d bloggers_ like this." = "_%1$d blogeri_ apreciază asta."; /* Describes that the current user and one other user like a post. %1$d is the number of likes, excluding the like by current user. The underscores denote underline and is not displayed. */ -"_You and %1$d blogger_ like this." = "_Tu și un alt bloger_ ați apreciat asta."; +"_You and %1$d blogger_ like this." = "_Tu și %1$d alt bloger_ ați apreciat asta."; /* Plural format string for displaying the number of post likes, including the like from the current user. %1$d is the number of likes, excluding the like by current user. The underscores denote underline and is not displayed. */ "_You and %1$d bloggers_ like this." = "_Tu și alți %1$d blogeri_ ați apreciat asta."; @@ -9500,6 +9497,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Să adaugi poze sau videouri Ć®n articolele tale."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Folosește această legătură pentru a mării numărul de membri din echipa ta fără a fi nevoie să-i inviți individual. Oricine vizitează acest URL va putea să se Ć®nscrie Ć®n organizația ta, chiar dacă a primit o invitație de la altcineva, deci asigură-te că partajezi legătura cu persoane de Ć®ncredere."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Salvează ca ciornă"; diff --git a/WordPress/Resources/ru.lproj/Localizable.strings b/WordPress/Resources/ru.lproj/Localizable.strings index 59ec378374a1..49c7c4574438 100644 --- a/WordPress/Resources/ru.lproj/Localizable.strings +++ b/WordPress/Resources/ru.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-20 15:45:22+0000 */ +/* Translation-Revision-Date: 2022-04-25 16:22:03+0000 */ /* Plural-Forms: nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2); */ /* Generator: GlotPress/3.0.0 */ /* Language: ru */ @@ -8387,9 +8387,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Š˜ŃŠæŠ¾Š»ŃŒŠ·Š¾Š²Š°Ń‚ŃŒ ŠŗŠ½Š¾ŠæŠŗу сŠ¾ Š·Š½Š°Ń‡ŠŗŠ¾Š¼"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Š˜ŃŠæŠ¾Š»ŃŒŠ·ŃƒŠ¹Ń‚Šµ эту ссыŠ»Šŗу, чтŠ¾Š±Ń‹ ŠæŠ¾Š“ŠŗŠ»ŃŽŃ‡Šøть чŠ»ŠµŠ½Š¾Š² Š²Š°ŃˆŠµŠ¹ ŠŗŠ¾Š¼Š°Š½Š“ы, Š½Šµ ŠæрŠøŠ³Š»Š°ŃˆŠ°Ń Šøх ŠæŠ¾ Š¾Š“Š½Š¾Š¼Ńƒ. Š›ŃŽŠ±Š¾Š¹, ŠŗтŠ¾ ŠæŠ¾ŃŠµŃ‚Šøт этŠ¾Ń‚ URL-Š°Š“рŠµŃ, сŠ¼Š¾Š¶ŠµŃ‚ Š·Š°Ń€ŠµŠ³ŠøстрŠøрŠ¾Š²Š°Ń‚ŃŒŃŃ Š² Š²Š°ŃˆŠµŠ¹ Š¾Ń€Š³Š°Š½ŠøŠ·Š°Ń†ŠøŠø, Š“Š°Š¶Šµ ŠµŃŠ»Šø Š¾Š½ ŠæŠ¾Š»ŃƒŃ‡ŠøŠ» ссыŠ»Šŗу Š¾Ń‚ ŠŗŠ¾Š³Š¾-тŠ¾ Š“руŠ³Š¾Š³Š¾, ŠæŠ¾ŃŃ‚Š¾Š¼Ńƒ уŠ±ŠµŠ“ŠøтŠµŃŃŒ, чтŠ¾ Š²Ń‹ Š“ŠµŠ»ŠøтŠµŃŃŒ ŠµŃŽ с Š“Š¾Š²ŠµŃ€ŠµŠ½Š½Ń‹Š¼Šø Š»ŃŽŠ“ьŠ¼Šø."; - /* No comment provided by engineer. */ "Use this site" = "Š˜ŃŠæŠ¾Š»ŃŒŠ·Š¾Š²Š°Ń‚ŃŒ этŠ¾Ń‚ сŠ°Š¹Ń‚"; @@ -9497,6 +9494,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Š”Š»Ń рŠ°Š·Š¼ŠµŃ‰ŠµŠ½Šøя фŠ¾Ń‚Š¾Š³Ń€Š°Ń„ŠøŠ¹ Šø Š²ŠøŠ“ŠµŠ¾ Š² Š²Š°ŃˆŠøх Š·Š°ŠæŠøсях."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Š˜ŃŠæŠ¾Š»ŃŒŠ·ŃƒŠ¹Ń‚Šµ эту ссыŠ»Šŗу, чтŠ¾Š±Ń‹ ŠæŠ¾Š“ŠŗŠ»ŃŽŃ‡Šøть чŠ»ŠµŠ½Š¾Š² Š²Š°ŃˆŠµŠ¹ ŠŗŠ¾Š¼Š°Š½Š“ы, Š½Šµ ŠæрŠøŠ³Š»Š°ŃˆŠ°Ń Šøх ŠæŠ¾ Š¾Š“Š½Š¾Š¼Ńƒ. Š›ŃŽŠ±Š¾Š¹, ŠŗтŠ¾ ŠæŠ¾ŃŠµŃ‚Šøт этŠ¾Ń‚ URL-Š°Š“рŠµŃ, сŠ¼Š¾Š¶ŠµŃ‚ Š·Š°Ń€ŠµŠ³ŠøстрŠøрŠ¾Š²Š°Ń‚ŃŒŃŃ Š² Š²Š°ŃˆŠµŠ¹ Š¾Ń€Š³Š°Š½ŠøŠ·Š°Ń†ŠøŠø, Š“Š°Š¶Šµ ŠµŃŠ»Šø Š¾Š½ ŠæŠ¾Š»ŃƒŃ‡ŠøŠ» ссыŠ»Šŗу Š¾Ń‚ ŠŗŠ¾Š³Š¾-тŠ¾ Š“руŠ³Š¾Š³Š¾, ŠæŠ¾ŃŃ‚Š¾Š¼Ńƒ уŠ±ŠµŠ“ŠøтŠµŃŃŒ, чтŠ¾ Š²Ń‹ Š“ŠµŠ»ŠøтŠµŃŃŒ ŠµŃŽ с Š“Š¾Š²ŠµŃ€ŠµŠ½Š½Ń‹Š¼Šø Š»ŃŽŠ“ьŠ¼Šø."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Š”Š¾Ń…Ń€Š°Š½Šøть ŠŗŠ°Šŗ чŠµŃ€Š½Š¾Š²ŠøŠŗ"; diff --git a/WordPress/Resources/sq.lproj/Localizable.strings b/WordPress/Resources/sq.lproj/Localizable.strings index 99a03443dd80..dff51e4103fe 100644 --- a/WordPress/Resources/sq.lproj/Localizable.strings +++ b/WordPress/Resources/sq.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-08 12:47:02+0000 */ +/* Translation-Revision-Date: 2022-04-27 10:59:06+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: sq_AL */ @@ -56,6 +56,12 @@ Plural format string for view title displaying the number of post likes. %1$d is the number of likes. */ "%1$d Likes" = "%1$d PĆ«lqime"; +/* Singular format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answer" = "%1$d pĆ«rgjigje"; + +/* Plural format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answers" = "%1$d pĆ«rgjigje"; + /* Format string for displaying number of completed quickstart tutorials. %1$d is number completed, %2$d is total number of tutorials available. */ "%1$d of %2$d completed" = "%1$d nga %2$d tĆ« plotĆ«suara"; @@ -345,6 +351,9 @@ translators: Block name. %s: The localized block name */ /* Title for a threat */ "A file contains a malicious code pattern" = "NjĆ« kartelĆ« pĆ«rmban rregullsi kodi dashakeq"; +/* Subtitle of the Site Name screen. */ +"A good name is short and memorable.\nYou can change it later." = "NjĆ« emĆ«r i mirĆ« do tĆ« ishte i shkurtĆ«r dhe qĆ« mbahet mend.\nMund ta ndryshoni mĆ« vonĆ«."; + /* Story Intro welcome title */ "A new way to create and publish engaging content on your site." = "NjĆ« rrugĆ« e re pĆ«r tĆ« krijuar dhe botuar lĆ«ndĆ« tĆ«rheqĆ«se nĆ« sajtin tuaj."; @@ -481,6 +490,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Add Block Before" = "Shtoni Bllok Para"; +/* No comment provided by engineer. */ +"Add Blocks" = "Shtoni Blloqe"; + /* Alert option to add document contents into a blog post. */ "Add Contents to Post" = "Shtoje LĆ«ndĆ«n te Postimi"; @@ -621,6 +633,9 @@ translators: Block name. %s: The localized block name */ /* Title for the advanced section in site settings screen */ "Advanced" = "TĆ« mĆ«tejshme"; +/* Screen reader text expressing the menu item is after another menu item. Argument is a name for another menu item. */ +"After %@" = "Pas %@"; + /* Option to select the Airmail app when logging in with magic links */ "Airmail" = "Airmail"; @@ -805,6 +820,9 @@ translators: Block name. %s: The localized block name */ Verb. Approves a 2fa authentication challenge, and logs in a user. */ "Approve" = "Miratoje"; +/* Approves a Comment */ +"Approve Comment" = "Miratojeni Komentin"; + /* Button title for Approved comment state. Title of approved Comments filter. */ "Approved" = "U shmiratua"; @@ -1036,6 +1054,9 @@ translators: Block name. %s: The localized block name */ /* Beauty site intent topic */ "Beauty" = "Bukuri"; +/* Screen reader text expressing the menu item is before another menu item. Argument is a name for another menu item. */ +"Before %@" = "Para %@"; + /* 'Best Day' label for Most Popular stat. */ "Best Day" = "Dita MĆ« e MirĆ«"; @@ -1398,6 +1419,9 @@ translators: Block name. %s: The localized block name */ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "Po kontrollohen blerjetā€¦"; +/* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ +"Child of %@" = "PjellĆ« e %@"; + /* Title for the button to progress with the selected site homepage design */ "Choose" = "Zgjidhni"; @@ -1437,6 +1461,9 @@ translators: Block name. %s: The localized block name */ /* Label for Publish time picker */ "Choose a time" = "Zgjidhni njĆ« kohĆ«"; +/* Select the site's intent. Subtitle */ +"Choose a topic from the list below or type your own." = "Zgjidhni njĆ« temĆ« nga lista mĆ« poshtĆ«, ose shtypni tuajĆ«n."; + /* Title of a Quick Start Tour */ "Choose a unique site icon" = "Zgjidhni njĆ« ikonĆ« sajti unike"; @@ -2444,6 +2471,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Double tap and hold to edit" = "PĆ«r pĆ«rpunim, prekeni dyfish dhe mbajeni tĆ« prekur"; +/* Screen reader hint for button that will move the menu item */ +"Double tap and hold to move this menu item up or down. Move horizontally to change hierarchy." = "Prekeni dy herĆ« dhe mbajeni tĆ« prekur, qĆ« ta lĆ«vizni kĆ«tĆ« element menuje sipĆ«r a poshtĆ«. QĆ« tā€™i ndryshoni hierarkinĆ«, lĆ«vizeni horizontalisht."; + /* No comment provided by engineer. */ "Double tap to add a block" = "QĆ« tĆ« shtoni njĆ« bllok, prekeni dy herĆ«"; @@ -2576,6 +2606,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Duplicate block" = "PĆ«rsĆ«dyte bllokun"; +/* Placeholder text for the search field int the Site Intent screen. */ +"E.g. Fashion, Poetry, Politics" = "P.sh., ModĆ«, Poezi, PolitikĆ«"; + /* No comment provided by engineer. */ "Each block has its own settings. To find them, tap on a block. Its settings will appear on the toolbar at the bottom of the screen." = "Ƈdo bllok ka rregullimet e veta. PĆ«r tā€™i gjetur, klikoni mbi njĆ« bllok. Rregullimet e tij do tĆ« shfaqen te paneli nĆ« fund tĆ« ekranit."; @@ -3363,6 +3396,13 @@ translators: Block name. %s: The localized block name */ /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "Jepini sajtit tuaj njĆ« emĆ«r qĆ« pasqyron personalitetin dhe subjektin e tij. PĆ«rshtypja e parĆ« ka vlerĆ«!"; +/* Default title of the Site Name screen. + Title for Site Name screen in iPhone landscape. */ +"Give your website a name" = "Jepini sajtit tuaj njĆ« emĆ«r"; + +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your%@website a name" = "Jepini your%@website njĆ« emĆ«r"; + /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "Gmail"; @@ -3760,6 +3800,9 @@ translators: Block name. %s: The localized block name */ /* Message displayed in an alert when user tries to install a first plugin on their site. */ "Installing the first plugin on your site can take up to 1 minute. During this time you wonā€™t be able to make changes to your site." = "Instalimi i shtojcĆ«s sĆ« parĆ« nĆ« sajtin tuaj mund tĆ« hajĆ« deri nĆ« 1 minutĆ«. GjatĆ« kĆ«saj kohe, sā€™do tĆ« jeni nĆ« gjendje tĆ« bĆ«ni ndryshime nĆ« sajtin tuaj."; +/* Title for a button that opens up the 'Getting More Views and Traffic' support page when tapped. */ +"Interested in building your audience? Check out our top tips" = "Ju intereson tĆ« ndĆ«rtoni publikun tuaj? Shihni ndihmĆ«zat tona kryesuese?"; + /* Interior Design site intent topic */ "Interior Design" = "Dizajn Mjedisesh tĆ« BrendshĆ«m"; @@ -4444,6 +4487,9 @@ translators: Block name. %s: The localized block name */ /* Insights 'Most Popular Time' header */ "Most Popular Time" = "Koha MĆ« Popullore"; +/* Screen reader text for button that will move the menu item. Argument is menu item's name. */ +"Move %@" = "LĆ«vizeni %@"; + /* No comment provided by engineer. */ "Move Image Backward" = "Shpjere FigurĆ«n Prapa"; @@ -5942,6 +5988,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* No comment provided by engineer. */ "Remove block" = "Hiqe bllokun"; +/* Destructive menu title to remove the prompt card from the dashboard. */ +"Remove from dashboard" = "Hiqe nga pulti"; + /* Option to remove Insight from view. */ "Remove from insights" = "Hiqe nga Prirjet"; @@ -8081,6 +8130,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Unapproves a comment */ "Unapprove" = "Shmiratoje"; +/* Unapproves a Comment */ +"Unapprove Comment" = "Shmiratojeni Komentin"; + /* VoiceOver accessibility hint, informing the user the button can be used to unapprove a comment */ "Unapproves the Comment." = "Heq miratimin e Komentit."; @@ -8305,9 +8357,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "PĆ«rdor buton ikone"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "PĆ«rdoreni kĆ«tĆ« lidhje pĆ«r hapat e mirĆ«seardhjes pĆ«r anĆ«tarĆ«t e ekipit tuaj, pa u dashur tā€™i ftoni tek e tek. Gjithkush qĆ« viziton kĆ«tĆ« URL, do tĆ« jetĆ« nĆ« gjendje tĆ« regjistrohet nĆ« entin tuaj, madje edhe nĆ«se lidhjen e marrin nga dikush tjetĆ«r, ndaj sigurohuni se ua jepni personave tĆ« besuar."; - /* No comment provided by engineer. */ "Use this site" = "PĆ«rdor kĆ«tĆ« sajt"; @@ -9409,6 +9458,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "QĆ« tĆ« shtohen foto ose video te postimet tuaja."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "PĆ«rdoreni kĆ«tĆ« lidhje pĆ«r mirĆ«seardhjen e anĆ«tarĆ«ve tĆ« ekipit tuaj, pa pasur nevojĆ« tā€™i ftoni ata tek pĆ«r tek. Cilido qĆ« viziton kĆ«tĆ« URL, do tĆ« jetĆ« nĆ« gjendje tĆ« regjistrohet nĆ« entin tuaj, madje edhe nĆ«se lidhjen e morĆ«n nga dikush tjetĆ«r, ndaj kujdesuni tā€™ua jepni personave tĆ« besuar."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Ruaje si SkicĆ«"; @@ -9580,3 +9632,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Item 2 of delete screen section listing things that will be deleted. */ "ā€¢ Users & Authors" = "ā€¢ PĆ«rdorues & AutorĆ«"; +/* Title label that indicates the prompt has been answered. */ +"āœ“ Answered" = "āœ“ Me PĆ«rgjigje"; + diff --git a/WordPress/Resources/sv.lproj/Localizable.strings b/WordPress/Resources/sv.lproj/Localizable.strings index e1df01f1c952..ade098667e77 100644 --- a/WordPress/Resources/sv.lproj/Localizable.strings +++ b/WordPress/Resources/sv.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-18 23:18:45+0000 */ +/* Translation-Revision-Date: 2022-04-23 13:27:35+0000 */ /* Plural-Forms: nplurals=2; plural=n != 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: sv_SE */ @@ -1315,6 +1315,9 @@ translators: Block name. %s: The localized block name */ Title for the warning shown to the user when he refuses to re-login when the authToken is missing. */ "Careful!" = "Var fƶrsiktig!"; +/* Example prompt for the Prompts card in Feature Introduction. */ +"Cast the movie of your life." = "Cast the movie of your life."; + /* Label for Categories Label for the categories field. Should be the same as WP core. */ "Categories" = "Kategorier"; @@ -1422,6 +1425,9 @@ translators: Block name. %s: The localized block name */ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "Kontrollerar inkƶp..."; +/* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ +"Child of %@" = "Child of %@"; + /* Title for the button to progress with the selected site homepage design */ "Choose" = "VƤlj"; @@ -3806,6 +3812,9 @@ translators: Block name. %s: The localized block name */ /* Message displayed in an alert when user tries to install a first plugin on their site. */ "Installing the first plugin on your site can take up to 1 minute. During this time you wonā€™t be able to make changes to your site." = "Det kan ta upp till en minut att installera ditt fƶrsta tillƤgg pĆ„ webbplatsen. Under denna tid kan du inte gƶra nĆ„gra Ƥndringar pĆ„ din webbplats."; +/* Title for a button that opens up the 'Getting More Views and Traffic' support page when tapped. */ +"Interested in building your audience? Check out our top tips" = "Interested in building your audience? Check out our top tips"; + /* Interior Design site intent topic */ "Interior Design" = "Inredningsdesign"; @@ -8378,9 +8387,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "AnvƤnd ikonknapp"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "AnvƤnd denna lƤnk fƶr att lƤgga till gruppmedlemmar utan att behƶva bjuda in dem en i taget. Vem som helst som besƶker denna URL kommer att kunna registrera sig i er organisation, Ƥven om de fĆ„tt lƤnken frĆ„n nĆ„gon annan. Se dƤrfƶr till att bara ge lƤnken till personer du litar pĆ„."; - /* No comment provided by engineer. */ "Use this site" = "AnvƤnd den hƤr webbplatsen"; @@ -9488,6 +9494,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Fƶr att lƤgga till bilder eller videoklipp i dina inlƤgg."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "AnvƤnd denna lƤnk fƶr att lĆ„ta dina teammedlemmar gĆ„ med utan att behƶva bjuda in dem en och en. Vem som helst som besƶker denna URL kan registrera sig till din organisation, Ƥven om de har fĆ„tt lƤnken frĆ„n nĆ„gon annan, sĆ„ se till att du delar den med betrodda personer."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Spara som utkast"; diff --git a/WordPress/Resources/tr.lproj/Localizable.strings b/WordPress/Resources/tr.lproj/Localizable.strings index fef0f311ce64..f792890a39f4 100644 --- a/WordPress/Resources/tr.lproj/Localizable.strings +++ b/WordPress/Resources/tr.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-11 11:54:09+0000 */ +/* Translation-Revision-Date: 2022-04-25 13:42:07+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: tr */ @@ -56,6 +56,12 @@ Plural format string for view title displaying the number of post likes. %1$d is the number of likes. */ "%1$d Likes" = "%1$d Beğenilenler"; +/* Singular format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answer" = "%1$d yanıt"; + +/* Plural format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answers" = "%1$d yanıt"; + /* Format string for displaying number of completed quickstart tutorials. %1$d is number completed, %2$d is total number of tutorials available. */ "%1$d of %2$d completed" = "%1$d\/%2$d tamamlandı"; @@ -345,6 +351,9 @@ translators: Block name. %s: The localized block name */ /* Title for a threat */ "A file contains a malicious code pattern" = "Bir dosya kƶtĆ¼ amaƧlı bir kod modeli iƧeriyor"; +/* Subtitle of the Site Name screen. */ +"A good name is short and memorable.\nYou can change it later." = "Ä°yi ad, kısa ve akılda kalıcı olan addır.\nBunu daha sonra değiştirebilirsiniz."; + /* Story Intro welcome title */ "A new way to create and publish engaging content on your site." = "Sitenizde ilgi Ƨekici iƧerik oluşturmanın ve yayınlamanın yeni bir yolu."; @@ -481,6 +490,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Add Block Before" = "Blok ƶncesine ekle"; +/* No comment provided by engineer. */ +"Add Blocks" = "Blok Ekle"; + /* Alert option to add document contents into a blog post. */ "Add Contents to Post" = "Yazıya iƧerik ekle"; @@ -621,6 +633,9 @@ translators: Block name. %s: The localized block name */ /* Title for the advanced section in site settings screen */ "Advanced" = "Gelişmiş"; +/* Screen reader text expressing the menu item is after another menu item. Argument is a name for another menu item. */ +"After %@" = "%@ Ć¶ÄŸesinden sonra"; + /* Option to select the Airmail app when logging in with magic links */ "Airmail" = "Airmail"; @@ -778,6 +793,9 @@ translators: Block name. %s: The localized block name */ /* the comment has an anonymous author. */ "Anonymous" = "Anonim"; +/* Title for a call-to-action button on the prompts card. */ +"Answer Prompt" = "Yanıt Ä°stemi"; + /* Navigates to picker screen to change the app's icon Title of screen to change the app's icon */ "App Icon" = "Uygulama simgesi"; @@ -1039,6 +1057,9 @@ translators: Block name. %s: The localized block name */ /* Beauty site intent topic */ "Beauty" = "GĆ¼zellik"; +/* Screen reader text expressing the menu item is before another menu item. Argument is a name for another menu item. */ +"Before %@" = "%@ Ć¶ÄŸesinden ƶnce"; + /* 'Best Day' label for Most Popular stat. */ "Best Day" = "En iyi gĆ¼n"; @@ -1294,6 +1315,9 @@ translators: Block name. %s: The localized block name */ Title for the warning shown to the user when he refuses to re-login when the authToken is missing. */ "Careful!" = "Dikkatli olun!"; +/* Example prompt for the Prompts card in Feature Introduction. */ +"Cast the movie of your life." = "Hayatınızın filmini oynayın."; + /* Label for Categories Label for the categories field. Should be the same as WP core. */ "Categories" = "Kategoriler"; @@ -1401,6 +1425,9 @@ translators: Block name. %s: The localized block name */ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "Satın alımlar kontrol ediliyorā€¦"; +/* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ +"Child of %@" = "%@ Ć¶ÄŸesinin alt Ć¶ÄŸesi"; + /* Title for the button to progress with the selected site homepage design */ "Choose" = "SeƧ"; @@ -1440,6 +1467,9 @@ translators: Block name. %s: The localized block name */ /* Label for Publish time picker */ "Choose a time" = "Saat seƧin"; +/* Select the site's intent. Subtitle */ +"Choose a topic from the list below or type your own." = "Aşağıdaki listeden bir konu seƧin veya kendi konunuzu yazın."; + /* Title of a Quick Start Tour */ "Choose a unique site icon" = "Benzersiz bir site simgesi seƧin"; @@ -2450,6 +2480,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Double tap and hold to edit" = "DĆ¼zenlemek iƧin Ƨift dokunup basılı tutun"; +/* Screen reader hint for button that will move the menu item */ +"Double tap and hold to move this menu item up or down. Move horizontally to change hierarchy." = "Bu menĆ¼ Ć¶ÄŸesini yukarı veya aşağı taşımak iƧin iki kez dokunup basılı tutun Hiyerarşiyi değiştirmek iƧin yatay olarak hareket ettirin."; + /* No comment provided by engineer. */ "Double tap to add a block" = "Blok eklemek iƧin Ƨift dokunun"; @@ -2582,6 +2615,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Duplicate block" = "Bloğu Ƨoğalt"; +/* Placeholder text for the search field int the Site Intent screen. */ +"E.g. Fashion, Poetry, Politics" = "Ɩr. Moda, Şiir, Politika"; + /* No comment provided by engineer. */ "Each block has its own settings. To find them, tap on a block. Its settings will appear on the toolbar at the bottom of the screen." = "Her blokun kendi ayarları vardır. Onları bulmak iƧin bir bloka dokunun. Ayarları, ekranın altındaki araƧ Ƨubuğunda gƶrĆ¼nĆ¼r."; @@ -3372,6 +3408,13 @@ translators: Block name. %s: The localized block name */ /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "Sitenize kişiliğini ve konuyu yansıtan bir ad verin. Ä°lk izlenim ƶnemlidir."; +/* Default title of the Site Name screen. + Title for Site Name screen in iPhone landscape. */ +"Give your website a name" = "Web sitenize bir ad verin"; + +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your%@website a name" = "web sitenize%@bir ad verin"; + /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "Gmail"; @@ -3769,6 +3812,9 @@ translators: Block name. %s: The localized block name */ /* Message displayed in an alert when user tries to install a first plugin on their site. */ "Installing the first plugin on your site can take up to 1 minute. During this time you wonā€™t be able to make changes to your site." = "Sitenize ilk eklentinin yĆ¼klenmesi 1 dakika kadar sĆ¼rebilir. Bu sırada sitenizde değişiklik yapamayacaksınız."; +/* Title for a button that opens up the 'Getting More Views and Traffic' support page when tapped. */ +"Interested in building your audience? Check out our top tips" = "Kitlenizi oluşturmak mı istiyorsunuz? En iyi ipuƧlarımıza gƶz atın"; + /* Interior Design site intent topic */ "Interior Design" = "İƧ Tasarım"; @@ -4456,6 +4502,9 @@ translators: Block name. %s: The localized block name */ /* Insights 'Most Popular Time' header */ "Most Popular Time" = "En PopĆ¼ler Zaman"; +/* Screen reader text for button that will move the menu item. Argument is menu item's name. */ +"Move %@" = "Taşı: %@"; + /* No comment provided by engineer. */ "Move Image Backward" = "Gƶrseli Geri Taşı"; @@ -5714,6 +5763,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Menu item label for linking a project page. */ "Projects" = "Projeler"; +/* Title label for the Prompts card in My Sites tab. */ +"Prompts" = "Ä°stemler"; + /* Privacy setting for posts set to 'Public' (default). Should be the same as in core WP. Text for privacy settings: Public */ "Public" = "Herkese aƧık"; @@ -5957,6 +6009,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* No comment provided by engineer. */ "Remove block" = "Bloğu kaldır"; +/* Destructive menu title to remove the prompt card from the dashboard. */ +"Remove from dashboard" = "Panodan kaldır"; + /* Option to remove Insight from view. */ "Remove from insights" = "Yƶnelimlerden Ƨıkar"; @@ -6850,6 +6905,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Title shown in alert to confirm skipping all quick start items */ "Skip Quick Start" = "Hızlı başlangıcı atla"; +/* Menu title to skip today's prompt. */ +"Skip this prompt" = "Bu bilgiyi atla"; + /* translators: Slash inserter autocomplete results */ "Slash inserter results" = "Eğik Ƨizgi yerleştirici sonuƧları"; @@ -8329,9 +8387,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "Simge dĆ¼ÄŸmesini kullan"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "Ekip Ć¼yelerinizi tek tek davet etmenize gerek kalmadan, bu bağlantıyla hepsini getirebilirsiniz. Ekibinizin Ć¼yelerini tek tek davet etmek zorunda kalmadan dahil etmek iƧin bu bağlantıyı kullanın. Bu bağlantıya tıklayan herkes, başkasından bile almış olsa, kurumunuza dahil olabilir. O nedenle, sadece gĆ¼vendiğiniz kişilerle paylaşmaya dikkat edin."; - /* No comment provided by engineer. */ "Use this site" = "Bu siteyi kullan"; @@ -8443,6 +8498,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Label for viewing more stats. */ "View more" = "Daha fazlasını gƶrĆ¼ntĆ¼le"; +/* Menu title to show more prompts. */ +"View more prompts" = "Daha fazla bilgi gƶrĆ¼ntĆ¼le"; + /* Description for view count. Singular. */ "View to your site so far" = "Şimdiye kadar sitenizdeki gƶrĆ¼ntĆ¼leme"; @@ -9436,6 +9494,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "Yazılarınızda fotoğraf veya video eklemek iƧin."; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Ekibinizin Ć¼yelerini tek tek davet etmek zorunda kalmadan dahil etmek iƧin bu bağlantıyı kullanın. Bu bağlantıya tıklayan herkes, başkasından bile almış olsa, kurumunuza dahil olabilir. O nedenle, sadece gĆ¼vendiğiniz kişilerle paylaşmaya dikkat edin."; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Taslak olarak kaydet"; @@ -9607,3 +9668,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Item 2 of delete screen section listing things that will be deleted. */ "ā€¢ Users & Authors" = "ā€¢ Kullanıcılar ve yazarlar"; +/* Title label that indicates the prompt has been answered. */ +"āœ“ Answered" = "āœ“ Yanıtlandı"; + diff --git a/WordPress/Resources/zh-Hans.lproj/Localizable.strings b/WordPress/Resources/zh-Hans.lproj/Localizable.strings index 51d232c7cad2..10148000c6e5 100644 --- a/WordPress/Resources/zh-Hans.lproj/Localizable.strings +++ b/WordPress/Resources/zh-Hans.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-08 09:54:09+0000 */ +/* Translation-Revision-Date: 2022-04-23 13:58:49+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/3.0.0 */ /* Language: zh_CN */ @@ -56,6 +56,12 @@ Plural format string for view title displaying the number of post likes. %1$d is the number of likes. */ "%1$d Likes" = "%1$d äŗŗå–œę¬¢"; +/* Singular format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answer" = "%1$d ę”å›žå¤"; + +/* Plural format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answers" = "%1$d ę”å›žå¤"; + /* Format string for displaying number of completed quickstart tutorials. %1$d is number completed, %2$d is total number of tutorials available. */ "%1$d of %2$d completed" = "å·²å®Œęˆ %1$d äøŖļ¼ˆå…± %2$d äøŖļ¼‰"; @@ -345,6 +351,9 @@ translators: Block name. %s: The localized block name */ /* Title for a threat */ "A file contains a malicious code pattern" = "äø€äøŖåŒ…å«ę¶ę„ä»£ē ęؔ式ēš„ꖇ件"; +/* Subtitle of the Site Name screen. */ +"A good name is short and memorable.\nYou can change it later." = "儽ēš„名ē§°åŗ”ē®€ēŸ­ę˜“记怂\nę‚Ø之后åÆ仄åÆ¹ę­¤čæ›č”Œę›“ę”¹ć€‚"; + /* Story Intro welcome title */ "A new way to create and publish engaging content on your site." = "åœØę‚Øēš„ē«™ē‚¹äøŠåˆ›å»ŗć€å‘åøƒåø引äŗŗ内容ēš„ę–°ę–¹ę³•ć€‚"; @@ -481,6 +490,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Add Block Before" = "åœØä¹‹å‰ę·»åŠ åŒŗ块"; +/* No comment provided by engineer. */ +"Add Blocks" = "ę·»åŠ åŒŗ块"; + /* Alert option to add document contents into a blog post. */ "Add Contents to Post" = "åœØꖇē« äø­ę·»åŠ å†…容"; @@ -621,6 +633,9 @@ translators: Block name. %s: The localized block name */ /* Title for the advanced section in site settings screen */ "Advanced" = "高ēŗ§"; +/* Screen reader text expressing the menu item is after another menu item. Argument is a name for another menu item. */ +"After %@" = "åœØ %@ 之后"; + /* Option to select the Airmail app when logging in with magic links */ "Airmail" = "Airmail"; @@ -778,6 +793,9 @@ translators: Block name. %s: The localized block name */ /* the comment has an anonymous author. */ "Anonymous" = "åŒæ名"; +/* Title for a call-to-action button on the prompts card. */ +"Answer Prompt" = "å›žå¤ęē¤ŗ"; + /* Navigates to picker screen to change the app's icon Title of screen to change the app's icon */ "App Icon" = "App å›¾ę ‡"; @@ -1039,6 +1057,9 @@ translators: Block name. %s: The localized block name */ /* Beauty site intent topic */ "Beauty" = "ē¾Žå®¹"; +/* Screen reader text expressing the menu item is before another menu item. Argument is a name for another menu item. */ +"Before %@" = "åœØ %@ 之前"; + /* 'Best Day' label for Most Popular stat. */ "Best Day" = "ęœ€ä½³ę—„ęœŸ"; @@ -1294,6 +1315,9 @@ translators: Block name. %s: The localized block name */ Title for the warning shown to the user when he refuses to re-login when the authToken is missing. */ "Careful!" = "小åæƒļ¼"; +/* Example prompt for the Prompts card in Feature Introduction. */ +"Cast the movie of your life." = "将ę‚Øēš„ē”Ÿę“»ę‹ęˆē”µå½±ć€‚"; + /* Label for Categories Label for the categories field. Should be the same as WP core. */ "Categories" = "分ē±»ē›®å½•"; @@ -1401,6 +1425,9 @@ translators: Block name. %s: The localized block name */ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "ę­£åœØę£€ęŸ„č“­ä¹°å†…å®¹ā€¦"; +/* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ +"Child of %@" = "%@ ēš„子锹"; + /* Title for the button to progress with the selected site homepage design */ "Choose" = "选ꋩ"; @@ -1440,6 +1467,9 @@ translators: Block name. %s: The localized block name */ /* Label for Publish time picker */ "Choose a time" = "选ꋩꗶ闓"; +/* Select the site's intent. Subtitle */ +"Choose a topic from the list below or type your own." = "čƷ从仄äø‹åˆ—č”Øäø­é€‰ę‹©äø»é¢˜ęˆ–č¾“å…„č‡Ŗå·±ēš„äø»é¢˜ć€‚"; + /* Title of a Quick Start Tour */ "Choose a unique site icon" = "选ꋩå”Æäø€ē«™ē‚¹å›¾ę ‡"; @@ -2450,6 +2480,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Double tap and hold to edit" = "č½»ē‚¹äø¤ę¬”å¹¶ęŒ‰ä½ä»„čæ›č”Œē¼–č¾‘"; +/* Screen reader hint for button that will move the menu item */ +"Double tap and hold to move this menu item up or down. Move horizontally to change hierarchy." = "åŒå‡»å¹¶ęŒ‰ä½åÆ向äøŠęˆ–向äø‹ē§»åŠØę­¤čœå•é”¹ć€‚ ę°“å¹³ē§»åŠØåÆę›“ę”¹å±‚ēŗ§ć€‚"; + /* No comment provided by engineer. */ "Double tap to add a block" = "č½»ē‚¹äø¤ę¬”ä»„ę·»åŠ åŒŗ块"; @@ -2582,6 +2615,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Duplicate block" = "复制åŒŗ块"; +/* Placeholder text for the search field int the Site Intent screen. */ +"E.g. Fashion, Poetry, Politics" = "例如ļ¼š ę—¶å°šć€čÆ—ę­Œć€ę”æę²»"; + /* No comment provided by engineer. */ "Each block has its own settings. To find them, tap on a block. Its settings will appear on the toolbar at the bottom of the screen." = "ęƏäøŖåŒŗå—éƒ½ęœ‰å„č‡Ŗēš„č®¾ē½®ć€‚č¦ę‰¾åˆ°čæ™äŗ›č®¾ē½®ļ¼ŒčÆ·ē‚¹å‡»äø€äøŖåŒŗå—ć€‚åŒŗ块ēš„č®¾ē½®å°†å‡ŗēŽ°åœØ屏幕åŗ•éƒØēš„å·„å…·ę äøŠć€‚"; @@ -3372,6 +3408,13 @@ translators: Block name. %s: The localized block name */ /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "äøŗę‚Øēš„ē«™ē‚¹ęä¾›äø€äøŖåę˜ å…¶äøŖę€§å’Œäø»é¢˜ēš„名ē§°ć€‚ ē¬¬äø€å°č±”å¾ˆé‡č¦ļ¼"; +/* Default title of the Site Name screen. + Title for Site Name screen in iPhone landscape. */ +"Give your website a name" = "äøŗę‚Øēš„ē½‘ē«™å‘½å"; + +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your%@website a name" = "äøŗę‚Øēš„ %@website 命名"; + /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "Gmail"; @@ -3769,6 +3812,9 @@ translators: Block name. %s: The localized block name */ /* Message displayed in an alert when user tries to install a first plugin on their site. */ "Installing the first plugin on your site can take up to 1 minute. During this time you wonā€™t be able to make changes to your site." = "åœØē«™ē‚¹äøŠå®‰č£…ē¬¬äø€äøŖę’ä»¶ęœ€å¤šéœ€č¦ 1 åˆ†é’Ÿć€‚åœØę­¤ęœŸé—“ļ¼Œę‚Øå°†ę— ę³•ę›“ę”¹č‡Ŗå·±ēš„ē«™ē‚¹ć€‚"; +/* Title for a button that opens up the 'Getting More Views and Traffic' support page when tapped. */ +"Interested in building your audience? Check out our top tips" = "ęƒ³å»ŗē«‹å—ä¼—ē¾¤ä½“ļ¼Ÿ ęŸ„ēœ‹ęˆ‘们ēš„实ē”Øꏐē¤ŗ"; + /* Interior Design site intent topic */ "Interior Design" = "å®¤å†…č®¾č®”"; @@ -4456,6 +4502,9 @@ translators: Block name. %s: The localized block name */ /* Insights 'Most Popular Time' header */ "Most Popular Time" = "äŗŗę°”ęœ€é«˜ēš„ꗶ闓"; +/* Screen reader text for button that will move the menu item. Argument is menu item's name. */ +"Move %@" = "ē§»åŠØ %@"; + /* No comment provided by engineer. */ "Move Image Backward" = "向后ē§»åŠØ图ē‰‡"; @@ -5714,6 +5763,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Menu item label for linking a project page. */ "Projects" = "锹ē›®"; +/* Title label for the Prompts card in My Sites tab. */ +"Prompts" = "ꏐē¤ŗ"; + /* Privacy setting for posts set to 'Public' (default). Should be the same as in core WP. Text for privacy settings: Public */ "Public" = "公开"; @@ -5957,6 +6009,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* No comment provided by engineer. */ "Remove block" = "ē§»é™¤åŒŗ块"; +/* Destructive menu title to remove the prompt card from the dashboard. */ +"Remove from dashboard" = "从ä»Ŗč”Øē›˜äø­ē§»é™¤"; + /* Option to remove Insight from view. */ "Remove from insights" = "ä»Žę•°ę®åˆ†ęžäø­åˆ é™¤"; @@ -6850,6 +6905,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Title shown in alert to confirm skipping all quick start items */ "Skip Quick Start" = "č·³čæ‡ā€œåæ«é€ŸåÆåŠØā€"; +/* Menu title to skip today's prompt. */ +"Skip this prompt" = "č·³čæ‡ę­¤ęē¤ŗ"; + /* translators: Slash inserter autocomplete results */ "Slash inserter results" = "ę–œę ę’å…„å™Øē»“ęžœ"; @@ -7768,7 +7826,7 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ "To use stats on your site, you'll need to install the Jetpack plugin." = "要åœØę‚Øēš„ē½‘ē«™äøŠä½æē”Øā€œē»Ÿč®”ā€åŠŸčƒ½ļ¼Œę‚Øéœ€č¦å®‰č£…Jetpackę’ä»¶ć€‚"; /* Message explaining that Jetpack needs to be installed for a particular site. Reads like 'To use this app for example.com you'll need to have... */ -"To use this app for %@ you'll need to have the Jetpack plugin installed and activated." = "č¦å°†ę­¤åŗ”ē”Øē”ØäŗŽ ļ¼…@ļ¼Œę‚Øéœ€č¦å®‰č£…å¹¶åÆē”Ø Jetpack ę’ä»¶ć€‚"; +"To use this app for %@ you'll need to have the Jetpack plugin installed and activated." = "č¦å°†ę­¤åŗ”ē”Øē”ØäŗŽ %@ļ¼Œę‚Øéœ€č¦å®‰č£…å¹¶åÆē”Ø Jetpack ę’ä»¶ć€‚"; /* Comments Today Section Header Insights 'Today' header @@ -8329,9 +8387,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "ä½æē”Øå›¾ę ‡ęŒ‰é’®"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "ä½æē”Øę­¤é“¾ęŽ„ę„é‚€čÆ·ęˆå‘˜åŠ å…„ę‚Øēš„团队ļ¼Œč€Œäøåæ…逐äø€é‚€čÆ·ć€‚ä»»ä½•č®æé—®ę­¤é“¾ęŽ„ēš„äŗŗéƒ½čƒ½č½»ę¾åŠ å…„åˆ°ę‚Øēš„ē»„ē»‡ļ¼Œå³ä½æ他们ę˜Æä»Žåˆ«å¤„ę”¶åˆ°ēš„é“¾ęŽ„ļ¼Œå› ę­¤čÆ·ē”®äæę‚ØäøŽåÆäæ”ēš„äŗŗ分äŗ«ę­¤é“¾ęŽ„怂"; - /* No comment provided by engineer. */ "Use this site" = "ä½æē”Øę­¤ē«™ē‚¹"; @@ -8443,6 +8498,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Label for viewing more stats. */ "View more" = "ęŸ„ēœ‹ę›“多äæ”ęÆ"; +/* Menu title to show more prompts. */ +"View more prompts" = "ęŸ„ēœ‹ę›“å¤šęē¤ŗ"; + /* Description for view count. Singular. */ "View to your site so far" = "到ē›®å‰äøŗę­¢ę‚Øē«™ē‚¹ēš„ęµč§ˆę¬”ꕰ"; @@ -9436,6 +9494,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "åœØę‚Øēš„ę–‡ē« å†…ę·»åŠ ē…§ē‰‡ęˆ–č§†é¢‘ć€‚"; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "ä½æē”Øę­¤é“¾ęŽ„čÆ·å›¢é˜Ÿęˆå‘˜åŠ å…„ļ¼Œč€Œäøåæ…逐äøŖ邀čÆ·å›¢é˜Ÿęˆå‘˜ć€‚ ä½æē”Øę­¤ URL ēš„任何äŗŗ都åÆ仄ę³Ø册ę‚Øēš„ē»„ē»‡ļ¼ˆå³ä½æä»–ä»¬ę”¶åˆ°äŗ†å…¶ä»–äŗŗēš„é“¾ęŽ„ļ¼‰ļ¼Œå› ę­¤čÆ·ē”®äæäøŽå€¼å¾—äæ”ä»»ēš„äŗŗ共äŗ«ć€‚"; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "äæå­˜äøŗ草ēØæ"; @@ -9607,3 +9668,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Item 2 of delete screen section listing things that will be deleted. */ "ā€¢ Users & Authors" = "ā€¢ē”ØꈷäøŽä½œč€…"; +/* Title label that indicates the prompt has been answered. */ +"āœ“ Answered" = "āœ“ 已回复"; + diff --git a/WordPress/Resources/zh-Hant.lproj/Localizable.strings b/WordPress/Resources/zh-Hant.lproj/Localizable.strings index e5500cac27d9..8eef1d3cdf90 100644 --- a/WordPress/Resources/zh-Hant.lproj/Localizable.strings +++ b/WordPress/Resources/zh-Hant.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-07 09:54:09+0000 */ +/* Translation-Revision-Date: 2022-04-25 16:21:15+0000 */ /* Plural-Forms: nplurals=1; plural=0; */ /* Generator: GlotPress/3.0.0 */ /* Language: zh_TW */ @@ -53,6 +53,12 @@ Plural format string for view title displaying the number of post likes. %1$d is the number of likes. */ "%1$d Likes" = "%1$d ęŒ‰č®šę•ø"; +/* Singular format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answer" = "%1$d 個ē­”ę”ˆ"; + +/* Plural format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answers" = "%1$d 個ē­”ę”ˆ"; + /* Format string for displaying number of completed quickstart tutorials. %1$d is number completed, %2$d is total number of tutorials available. */ "%1$d of %2$d completed" = "å·²å®Œęˆ %2$d 個ļ¼Œå…± %1$d 個"; @@ -342,6 +348,9 @@ translators: Block name. %s: The localized block name */ /* Title for a threat */ "A file contains a malicious code pattern" = "ęŖ”ę”ˆåŒ…å«ęƒ”ꄏē؋式ē¢¼ęؔ式"; +/* Subtitle of the Site Name screen. */ +"A good name is short and memorable.\nYou can change it later." = "儽名ēرåæ…é ˆē°”ēŸ­ę˜“čØ˜ć€‚\nę—„å¾Œä½ åÆéšØꙂ變ꛓ怂"; + /* Story Intro welcome title */ "A new way to create and publish engaging content on your site." = "ä½æē”Øå…Øę–°ę–¹å¼åœØē¶²ē«™äøŠå»ŗē«‹åŠē™¼ä½ˆåøē›å…§å®¹ć€‚"; @@ -478,6 +487,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Add Block Before" = "åœØä¹‹å‰ę–°å¢žå€å”Š"; +/* No comment provided by engineer. */ +"Add Blocks" = "ę–°å¢žå€å”Š"; + /* Alert option to add document contents into a blog post. */ "Add Contents to Post" = "å°‡å…§å®¹ę–°å¢žč‡³ę–‡ē« "; @@ -615,6 +627,9 @@ translators: Block name. %s: The localized block name */ /* Title for the advanced section in site settings screen */ "Advanced" = "進階"; +/* Screen reader text expressing the menu item is after another menu item. Argument is a name for another menu item. */ +"After %@" = "%@之後"; + /* Option to select the Airmail app when logging in with magic links */ "Airmail" = "Airmail"; @@ -772,6 +787,9 @@ translators: Block name. %s: The localized block name */ /* the comment has an anonymous author. */ "Anonymous" = "åŒæ名"; +/* Title for a call-to-action button on the prompts card. */ +"Answer Prompt" = "回ē­”ꏐē¤ŗ"; + /* Navigates to picker screen to change the app's icon Title of screen to change the app's icon */ "App Icon" = "ꇉē”Øē؋式圖ē¤ŗ"; @@ -1033,6 +1051,9 @@ translators: Block name. %s: The localized block name */ /* Beauty site intent topic */ "Beauty" = "ē¾Žå¦"; +/* Screen reader text expressing the menu item is before another menu item. Argument is a name for another menu item. */ +"Before %@" = "%@之前"; + /* 'Best Day' label for Most Popular stat. */ "Best Day" = "造čØŖå°–å³°ę—„"; @@ -1284,6 +1305,9 @@ translators: Block name. %s: The localized block name */ Title for the warning shown to the user when he refuses to re-login when the authToken is missing. */ "Careful!" = "č«‹å°åæƒļ¼"; +/* Example prompt for the Prompts card in Feature Introduction. */ +"Cast the movie of your life." = "ęŠ•ę”¾ä½ ēš„äŗŗē”Ÿé›»å½±ć€‚"; + /* Label for Categories Label for the categories field. Should be the same as WP core. */ "Categories" = "分锞"; @@ -1391,6 +1415,9 @@ translators: Block name. %s: The localized block name */ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "ę­£åœØē¢ŗčŖč³¼č²·é …ē›®ā€¦"; +/* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ +"Child of %@" = "%@ēš„子項"; + /* Title for the button to progress with the selected site homepage design */ "Choose" = "éø꓇"; @@ -1430,6 +1457,9 @@ translators: Block name. %s: The localized block name */ /* Label for Publish time picker */ "Choose a time" = "éø꓇Ꙃ間"; +/* Select the site's intent. Subtitle */ +"Choose a topic from the list below or type your own." = "č«‹å¾žäø‹ę–¹ęø…å–®éø꓇äø€å€‹äø»é”Œļ¼Œęˆ–č¼øå…„ä½ č‡Ŗå·±ēš„äø»é”Œć€‚"; + /* Title of a Quick Start Tour */ "Choose a unique site icon" = "éøę“‡å°ˆå±¬ē¶²ē«™åœ–ē¤ŗ"; @@ -2424,6 +2454,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Double tap and hold to edit" = "點兩äø‹äø¦ęŒ‰ä½äøę”¾å³åÆē·Øč¼Æ"; +/* Screen reader hint for button that will move the menu item */ +"Double tap and hold to move this menu item up or down. Move horizontally to change hierarchy." = "點兩äø‹äø¦ęŒ‰ä½ļ¼Œå³åÆäøŠäø‹ē§»å‹•ę­¤éø單項ē›® ę°“å¹³ē§»å‹•å³åÆč®Šę›“éšŽå±¤ć€‚"; + /* No comment provided by engineer. */ "Double tap to add a block" = "ęŒ‰å…©äø‹ä»„ę–°å¢žå€å”Š"; @@ -3340,6 +3373,13 @@ translators: Block name. %s: The localized block name */ /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "ē‚ŗē¶²ē«™å–äø€å€‹čƒ½åę˜ å‡ŗč‡Ŗꈑé¢Øę ¼å’Œäø»é”Œēš„名ēØ±ć€‚ ē¬¬äø€å°č±”å¾ˆé‡č¦ļ¼"; +/* Default title of the Site Name screen. + Title for Site Name screen in iPhone landscape. */ +"Give your website a name" = "ē‚ŗä½ ēš„ē¶²ē«™å–個名字"; + +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your%@website a name" = "ē‚ŗä½ ēš„%@ē¶²ē«™å–個名字"; + /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "Gmail"; @@ -3737,6 +3777,9 @@ translators: Block name. %s: The localized block name */ /* Message displayed in an alert when user tries to install a first plugin on their site. */ "Installing the first plugin on your site can take up to 1 minute. During this time you wonā€™t be able to make changes to your site." = "åœØä½ ēš„ē¶²ē«™äøŠå®‰č£ē¬¬äø€å€‹å¤–ꎛē؋式ļ¼ŒåÆčƒ½éœ€č¦ 1 分鐘ēš„Ꙃ間怂åœØꭤꜟ間ļ¼Œä½ ē„”ę³•å°ä½ ēš„ē¶²ē«™é€²č”Œä»»ä½•č®Šę›“怂"; +/* Title for a button that opens up the 'Getting More Views and Traffic' support page when tapped. */ +"Interested in building your audience? Check out our top tips" = "ęœ‰čˆˆč¶£åŸ¹é¤Šä½ ēš„讀者ē¾¤å—Žļ¼Ÿ ęŸ„ēœ‹ęˆ‘們ēš„é ‚å°–ē§˜čØ£ć€‚"; + /* Interior Design site intent topic */ "Interior Design" = "室內čØ­č؈"; @@ -5682,6 +5725,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Menu item label for linking a project page. */ "Projects" = "å°ˆę”ˆ"; +/* Title label for the Prompts card in My Sites tab. */ +"Prompts" = "ꏐē¤ŗ"; + /* Privacy setting for posts set to 'Public' (default). Should be the same as in core WP. Text for privacy settings: Public */ "Public" = "公開"; @@ -5925,6 +5971,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* No comment provided by engineer. */ "Remove block" = "ē§»é™¤å€å”Š"; +/* Destructive menu title to remove the prompt card from the dashboard. */ +"Remove from dashboard" = "從儀č”Øęæē§»é™¤"; + /* Option to remove Insight from view. */ "Remove from insights" = "å¾žę“žåƟ報告äø­ē§»é™¤"; @@ -6815,6 +6864,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Title shown in alert to confirm skipping all quick start items */ "Skip Quick Start" = "ē•„過åæ«é€Ÿå…„門"; +/* Menu title to skip today's prompt. */ +"Skip this prompt" = "ē•„過ꭤꏐē¤ŗ"; + /* translators: Slash inserter autocomplete results */ "Slash inserter results" = "ꖜē·šę’å…„å·„å…·ēµęžœ"; @@ -8291,9 +8343,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* No comment provided by engineer. */ "Use icon button" = "ä½æē”Ø圖ē¤ŗꌉ鈕"; -/* Footer text for Invite Links section of the Invite People screen. */ -"Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted peo" = "ä½ åÆ仄ä½æē”Øę­¤é€£ēµäø€ę¬”åŠ å…„ę‰€ęœ‰åœ˜éšŠęˆå“”ļ¼Œē„”須逐äø€é‚€č«‹ć€‚ 凔ę˜Æ造čØŖ這個 URL ēš„äŗŗļ¼Œäøč«–仄何ēØ®ę–¹å¼å–å¾—é€£ēµļ¼Œéƒ½åÆ仄čØ»å†ŠåŠ å…„č²“ę©Ÿę§‹ļ¼Œå› ę­¤åˆ†äŗ«ē¶²å€å‰ļ¼Œč«‹ē¢ŗčŖå°ę–¹å€¼å¾—äæ”任怂"; - /* No comment provided by engineer. */ "Use this site" = "ä½æē”Øę­¤ē¶²ē«™"; @@ -8405,6 +8454,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Label for viewing more stats. */ "View more" = "ęŖ¢č¦–ꛓ多"; +/* Menu title to show more prompts. */ +"View more prompts" = "ęŖ¢č¦–ę›“å¤šęē¤ŗ"; + /* Description for view count. Singular. */ "View to your site so far" = "ä½ ēš„ē¶²ē«™ē›®å‰ē‚ŗę­¢ēš„ē€č¦½ę¬”ę•ø"; @@ -9385,6 +9437,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Sentence to justify why the app asks permission from the user to access their Media Library. */ "infoplist.NSPhotoLibraryUsageDescription" = "åœØä½ ēš„ę–‡ē« äø­ę–°å¢žē›øē‰‡ęˆ–å½±ē‰‡ć€‚"; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "ē”Ø這個連ēµē›“ęŽ„åŠ å…„ęˆå“”ļ¼Œå°±äøéœ€č¦äø€å€‹äø€å€‹é‚€č«‹ć€‚ 造čØŖę­¤ URL ēš„äŗŗ都åÆ仄čػ冊你ēš„ēµ„ē¹”ļ¼Œå³ä½æ他們ę˜Æ從其他äŗŗé‚£č£”ę”¶åˆ°é€£ēµļ¼Œå› ę­¤č«‹å‹™åæ…čˆ‡å€¼å¾—äæ”ä»»ēš„äŗŗ分äŗ«ć€‚"; + /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "儲存ē‚ŗ草ēØæ"; @@ -9556,3 +9611,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Item 2 of delete screen section listing things that will be deleted. */ "ā€¢ Users & Authors" = "ā€¢ä½æē”Øč€…å’Œä½œč€…"; +/* Title label that indicates the prompt has been answered. */ +"āœ“ Answered" = "āœ“ 已回ē­”"; + From 0a32efb7e41c7a4d66d1efe98619dbee08236e38 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Thu, 28 Apr 2022 16:58:51 +1000 Subject: [PATCH 112/166] Update WordPress metadata translations --- fastlane/metadata/ar-SA/keywords.txt | 2 +- fastlane/metadata/ar-SA/name.txt | 2 +- fastlane/metadata/ar-SA/subtitle.txt | 2 +- fastlane/metadata/da/description.txt | 11 ----------- fastlane/metadata/da/keywords.txt | 1 - fastlane/metadata/da/name.txt | 1 - fastlane/metadata/da/subtitle.txt | 1 - fastlane/metadata/de-DE/keywords.txt | 2 +- fastlane/metadata/de-DE/name.txt | 2 +- fastlane/metadata/de-DE/subtitle.txt | 2 +- fastlane/metadata/default/release_notes.txt | 11 +++++++++++ fastlane/metadata/en-AU/description.txt | 11 ----------- fastlane/metadata/en-AU/keywords.txt | 1 - fastlane/metadata/en-AU/name.txt | 1 - fastlane/metadata/en-AU/subtitle.txt | 1 - fastlane/metadata/en-CA/keywords.txt | 2 +- fastlane/metadata/en-CA/name.txt | 2 +- fastlane/metadata/en-CA/subtitle.txt | 2 +- fastlane/metadata/en-GB/keywords.txt | 2 +- fastlane/metadata/en-GB/name.txt | 2 +- fastlane/metadata/en-GB/release_notes.txt | 11 +++++++++++ fastlane/metadata/en-GB/subtitle.txt | 2 +- fastlane/metadata/es-ES/keywords.txt | 2 +- fastlane/metadata/es-ES/name.txt | 2 +- fastlane/metadata/es-ES/release_notes.txt | 11 +++++++++++ fastlane/metadata/es-ES/subtitle.txt | 2 +- fastlane/metadata/es-MX/keywords.txt | 2 +- fastlane/metadata/es-MX/name.txt | 2 +- fastlane/metadata/es-MX/subtitle.txt | 2 +- fastlane/metadata/fr-FR/keywords.txt | 2 +- fastlane/metadata/fr-FR/name.txt | 2 +- fastlane/metadata/fr-FR/subtitle.txt | 2 +- fastlane/metadata/he/keywords.txt | 2 +- fastlane/metadata/he/name.txt | 2 +- fastlane/metadata/he/subtitle.txt | 2 +- fastlane/metadata/id/keywords.txt | 2 +- fastlane/metadata/id/name.txt | 2 +- fastlane/metadata/id/release_notes.txt | 11 +++++++++++ fastlane/metadata/id/subtitle.txt | 2 +- fastlane/metadata/it/keywords.txt | 2 +- fastlane/metadata/it/name.txt | 2 +- fastlane/metadata/it/subtitle.txt | 2 +- fastlane/metadata/ja/keywords.txt | 2 +- fastlane/metadata/ja/name.txt | 2 +- fastlane/metadata/ja/subtitle.txt | 2 +- fastlane/metadata/ko/keywords.txt | 2 +- fastlane/metadata/ko/name.txt | 2 +- fastlane/metadata/ko/subtitle.txt | 2 +- fastlane/metadata/nl-NL/keywords.txt | 2 +- fastlane/metadata/nl-NL/name.txt | 2 +- fastlane/metadata/nl-NL/subtitle.txt | 2 +- fastlane/metadata/no/keywords.txt | 1 - fastlane/metadata/no/name.txt | 1 - fastlane/metadata/no/subtitle.txt | 1 - fastlane/metadata/pt-BR/keywords.txt | 2 +- fastlane/metadata/pt-BR/name.txt | 2 +- fastlane/metadata/pt-BR/subtitle.txt | 2 +- fastlane/metadata/pt-PT/description.txt | 11 ----------- fastlane/metadata/pt-PT/keywords.txt | 1 - fastlane/metadata/pt-PT/name.txt | 1 - fastlane/metadata/pt-PT/subtitle.txt | 1 - fastlane/metadata/ru/keywords.txt | 2 +- fastlane/metadata/ru/name.txt | 2 +- fastlane/metadata/ru/subtitle.txt | 2 +- fastlane/metadata/sv/keywords.txt | 2 +- fastlane/metadata/sv/name.txt | 2 +- fastlane/metadata/sv/subtitle.txt | 2 +- fastlane/metadata/th/description.txt | 11 ----------- fastlane/metadata/th/keywords.txt | 1 - fastlane/metadata/th/name.txt | 1 - fastlane/metadata/th/subtitle.txt | 1 - fastlane/metadata/tr/keywords.txt | 2 +- fastlane/metadata/tr/name.txt | 2 +- fastlane/metadata/tr/subtitle.txt | 2 +- fastlane/metadata/zh-Hans/keywords.txt | 2 +- fastlane/metadata/zh-Hans/name.txt | 2 +- fastlane/metadata/zh-Hans/subtitle.txt | 2 +- fastlane/metadata/zh-Hant/keywords.txt | 2 +- fastlane/metadata/zh-Hant/name.txt | 2 +- fastlane/metadata/zh-Hant/subtitle.txt | 2 +- 80 files changed, 101 insertions(+), 116 deletions(-) delete mode 100644 fastlane/metadata/da/description.txt delete mode 100644 fastlane/metadata/da/keywords.txt delete mode 100644 fastlane/metadata/da/name.txt delete mode 100644 fastlane/metadata/da/subtitle.txt create mode 100644 fastlane/metadata/default/release_notes.txt delete mode 100644 fastlane/metadata/en-AU/description.txt delete mode 100644 fastlane/metadata/en-AU/keywords.txt delete mode 100644 fastlane/metadata/en-AU/name.txt delete mode 100644 fastlane/metadata/en-AU/subtitle.txt create mode 100644 fastlane/metadata/en-GB/release_notes.txt create mode 100644 fastlane/metadata/es-ES/release_notes.txt create mode 100644 fastlane/metadata/id/release_notes.txt delete mode 100644 fastlane/metadata/no/keywords.txt delete mode 100644 fastlane/metadata/no/name.txt delete mode 100644 fastlane/metadata/no/subtitle.txt delete mode 100644 fastlane/metadata/pt-PT/description.txt delete mode 100644 fastlane/metadata/pt-PT/keywords.txt delete mode 100644 fastlane/metadata/pt-PT/name.txt delete mode 100644 fastlane/metadata/pt-PT/subtitle.txt delete mode 100644 fastlane/metadata/th/description.txt delete mode 100644 fastlane/metadata/th/keywords.txt delete mode 100644 fastlane/metadata/th/name.txt delete mode 100644 fastlane/metadata/th/subtitle.txt diff --git a/fastlane/metadata/ar-SA/keywords.txt b/fastlane/metadata/ar-SA/keywords.txt index ac9503d564b9..8cdb610d6e1b 100644 --- a/fastlane/metadata/ar-SA/keywords.txt +++ b/fastlane/metadata/ar-SA/keywords.txt @@ -1 +1 @@ -Ł…ŲÆŁˆŁ†, ŁƒŲŖŲ§ŲØŲ©, ŲŖŲÆŁˆŁŠŁ†, ŁˆŁŠŲØ, ŲµŲ§Ł†Ų¹, Ų¹ŲØŲ± Ų§Ł„Ų„Ł†ŲŖŲ±Ł†ŲŖ, Ł…ŲŖŲ¬Ų±, Ų£Ų¹Ł…Ų§Ł„, Ų„Ų¹ŲÆŲ§ŲÆ, Ų„Ł†Ų“Ų§Ų”, ŁƒŲŖŲ§ŲØŲ©, Ł…ŲÆŁˆŁ†Ų§ŲŖ \ No newline at end of file +Ł…ŲÆŁˆŁ†, ŁƒŲŖŲ§ŲØŲ©, ŲŖŲÆŁˆŁŠŁ†, ŁˆŁŠŲØ, ŲµŲ§Ł†Ų¹, Ų¹ŲØŲ± Ų§Ł„Ų„Ł†ŲŖŲ±Ł†ŲŖ, Ł…ŲŖŲ¬Ų±, Ų£Ų¹Ł…Ų§Ł„, Ų„Ų¹ŲÆŲ§ŲÆ, Ų„Ł†Ų“Ų§Ų”, ŁƒŲŖŲ§ŲØŲ©, Ł…ŲÆŁˆŁ†Ų§ŲŖ diff --git a/fastlane/metadata/ar-SA/name.txt b/fastlane/metadata/ar-SA/name.txt index 591d95996f72..9e24718c05fe 100644 --- a/fastlane/metadata/ar-SA/name.txt +++ b/fastlane/metadata/ar-SA/name.txt @@ -1 +1 @@ -ŁˆŁˆŲ±ŲÆŲØŲ±ŁŠŲ³ ā€“ Ł…ŁŁ†Ų“Ų¦ Ł…ŁˆŲ§Ł‚Ų¹ Ų§Ł„ŁˆŁŠŲØ \ No newline at end of file +ŁˆŁˆŲ±ŲÆŲØŲ±ŁŠŲ³ ā€“ Ł…ŁŁ†Ų“Ų¦ Ł…ŁˆŲ§Ł‚Ų¹ Ų§Ł„ŁˆŁŠŲØ diff --git a/fastlane/metadata/ar-SA/subtitle.txt b/fastlane/metadata/ar-SA/subtitle.txt index 51f5b9ed5182..f59d6fe3500b 100644 --- a/fastlane/metadata/ar-SA/subtitle.txt +++ b/fastlane/metadata/ar-SA/subtitle.txt @@ -1 +1 @@ -ŲŖŲµŁ…ŁŠŁ… Ł…ŁˆŁ‚Ų¹ŲŒ Ų„Ł†Ų“Ų§Ų” Ł…ŲÆŁˆŁ†Ų© \ No newline at end of file +ŲŖŲµŁ…ŁŠŁ… Ł…ŁˆŁ‚Ų¹ŲŒ Ų„Ł†Ų“Ų§Ų” Ł…ŲÆŁˆŁ†Ų© diff --git a/fastlane/metadata/da/description.txt b/fastlane/metadata/da/description.txt deleted file mode 100644 index 04a5230800f7..000000000000 --- a/fastlane/metadata/da/description.txt +++ /dev/null @@ -1,11 +0,0 @@ -Manage or create your WordPress blog or website right from your iOS device: create and edit posts and pages, upload your favorite photos and videos, view stats and reply to comments. - -With WordPress for iOS, you have the power to publish in the palm of your hand. Draft a spontaneous haiku from the couch. Snap and post a photo on your lunch break. Respond to your latest comments, or check your stats to see what new countries todayā€™s visitors are coming from. - -WordPress for iOS is an Open Source project, which means you too can contribute to its development. Learn more at https://apps.wordpress.com/contribute/. - -WordPress for iOS supports WordPress.com and self-hosted WordPress.org sites running WordPress 4.0 or higher. - -Need help with the app? Visit the forums at https://ios.forums.wordpress.org/ or tweet us @WordPressiOS. - -View the Privacy Notice for California Users at https://automattic.com/privacy/#california-consumer-privacy-act-ccpa. diff --git a/fastlane/metadata/da/keywords.txt b/fastlane/metadata/da/keywords.txt deleted file mode 100644 index ab6cbfc0f9a1..000000000000 --- a/fastlane/metadata/da/keywords.txt +++ /dev/null @@ -1 +0,0 @@ -social,network,notes,jetpack,photos,writing,geotagging,media,blog,wordpress,website,blogging,design diff --git a/fastlane/metadata/da/name.txt b/fastlane/metadata/da/name.txt deleted file mode 100644 index bacf8ed91ea2..000000000000 --- a/fastlane/metadata/da/name.txt +++ /dev/null @@ -1 +0,0 @@ -WordPress diff --git a/fastlane/metadata/da/subtitle.txt b/fastlane/metadata/da/subtitle.txt deleted file mode 100644 index 4181b65c7d44..000000000000 --- a/fastlane/metadata/da/subtitle.txt +++ /dev/null @@ -1 +0,0 @@ -Manage your website anywhere diff --git a/fastlane/metadata/de-DE/keywords.txt b/fastlane/metadata/de-DE/keywords.txt index ef03c7827fa2..8762b2c9a1dd 100644 --- a/fastlane/metadata/de-DE/keywords.txt +++ b/fastlane/metadata/de-DE/keywords.txt @@ -1 +1 @@ -blogger,schreiben,bloggen,web,maker,online,store,business,entwerfen,erstellen,schreiben,blogs \ No newline at end of file +blogger,schreiben,bloggen,web,maker,online,store,business,entwerfen,erstellen,schreiben,blogs diff --git a/fastlane/metadata/de-DE/name.txt b/fastlane/metadata/de-DE/name.txt index 7019b1be1ac6..7289f714054d 100644 --- a/fastlane/metadata/de-DE/name.txt +++ b/fastlane/metadata/de-DE/name.txt @@ -1 +1 @@ -WordPressĀ ā€“ Website-Baukasten \ No newline at end of file +WordPressĀ ā€“ Website-Baukasten diff --git a/fastlane/metadata/de-DE/subtitle.txt b/fastlane/metadata/de-DE/subtitle.txt index 17da612d1d1f..d2fd51a1ada2 100644 --- a/fastlane/metadata/de-DE/subtitle.txt +++ b/fastlane/metadata/de-DE/subtitle.txt @@ -1 +1 @@ -Website und Blog erstellen \ No newline at end of file +Website und Blog erstellen diff --git a/fastlane/metadata/default/release_notes.txt b/fastlane/metadata/default/release_notes.txt new file mode 100644 index 000000000000..16fdae8901ab --- /dev/null +++ b/fastlane/metadata/default/release_notes.txt @@ -0,0 +1,11 @@ +We made a small but mighty change to the block editor: the ā€œAdd Blockā€ button is more visible when you first open the editor with no blocks selected. We also removed one of three error notifications when a media or audio block fails to uploadā€”it felt like overkill. + +Youā€™ll hear some accessibility tweaks in the VoiceOver experience when youā€™re rearranging menu items. Instructions and notices are clearer, and the menu hierarchy makes more sense out loud. + +We added a new screen to the site creation process where you can enter your siteā€™s intent. We tested this screen with a small group of users, and we think youā€™ll like it, too. + +Web previews wonā€™t cut off bottom-of-the-screen notifications when your browser toolbar is visible. + +Whatā€™s in a name? Well, if your site has one, youā€™ll see it in the My Site navigation title. + +When you swipe left on a comment in your Notifications, you wonā€™t see the ā€œTrashā€ option anymore. Instead youā€™ll see ā€œUnapprove Commentā€ and ā€œApprove Comment.ā€ We approve. diff --git a/fastlane/metadata/en-AU/description.txt b/fastlane/metadata/en-AU/description.txt deleted file mode 100644 index 04a5230800f7..000000000000 --- a/fastlane/metadata/en-AU/description.txt +++ /dev/null @@ -1,11 +0,0 @@ -Manage or create your WordPress blog or website right from your iOS device: create and edit posts and pages, upload your favorite photos and videos, view stats and reply to comments. - -With WordPress for iOS, you have the power to publish in the palm of your hand. Draft a spontaneous haiku from the couch. Snap and post a photo on your lunch break. Respond to your latest comments, or check your stats to see what new countries todayā€™s visitors are coming from. - -WordPress for iOS is an Open Source project, which means you too can contribute to its development. Learn more at https://apps.wordpress.com/contribute/. - -WordPress for iOS supports WordPress.com and self-hosted WordPress.org sites running WordPress 4.0 or higher. - -Need help with the app? Visit the forums at https://ios.forums.wordpress.org/ or tweet us @WordPressiOS. - -View the Privacy Notice for California Users at https://automattic.com/privacy/#california-consumer-privacy-act-ccpa. diff --git a/fastlane/metadata/en-AU/keywords.txt b/fastlane/metadata/en-AU/keywords.txt deleted file mode 100644 index 7ab147e34e06..000000000000 --- a/fastlane/metadata/en-AU/keywords.txt +++ /dev/null @@ -1 +0,0 @@ -blogger,writing,blogging,web,maker,online,store,business,make,create,write,blogs diff --git a/fastlane/metadata/en-AU/name.txt b/fastlane/metadata/en-AU/name.txt deleted file mode 100644 index f1c6744c4874..000000000000 --- a/fastlane/metadata/en-AU/name.txt +++ /dev/null @@ -1 +0,0 @@ -WordPress ā€“ Website Builder diff --git a/fastlane/metadata/en-AU/subtitle.txt b/fastlane/metadata/en-AU/subtitle.txt deleted file mode 100644 index 08d11992ce2f..000000000000 --- a/fastlane/metadata/en-AU/subtitle.txt +++ /dev/null @@ -1 +0,0 @@ -Design a site, build a blog diff --git a/fastlane/metadata/en-CA/keywords.txt b/fastlane/metadata/en-CA/keywords.txt index 46d9ead15c94..7ab147e34e06 100644 --- a/fastlane/metadata/en-CA/keywords.txt +++ b/fastlane/metadata/en-CA/keywords.txt @@ -1 +1 @@ -blogger,writing,blogging,web,maker,online,store,business,make,create,write,blogs \ No newline at end of file +blogger,writing,blogging,web,maker,online,store,business,make,create,write,blogs diff --git a/fastlane/metadata/en-CA/name.txt b/fastlane/metadata/en-CA/name.txt index 028d836eea1f..f1c6744c4874 100644 --- a/fastlane/metadata/en-CA/name.txt +++ b/fastlane/metadata/en-CA/name.txt @@ -1 +1 @@ -WordPress ā€“ Website Builder \ No newline at end of file +WordPress ā€“ Website Builder diff --git a/fastlane/metadata/en-CA/subtitle.txt b/fastlane/metadata/en-CA/subtitle.txt index b082dcb78bf7..08d11992ce2f 100644 --- a/fastlane/metadata/en-CA/subtitle.txt +++ b/fastlane/metadata/en-CA/subtitle.txt @@ -1 +1 @@ -Design a site, build a blog \ No newline at end of file +Design a site, build a blog diff --git a/fastlane/metadata/en-GB/keywords.txt b/fastlane/metadata/en-GB/keywords.txt index 46d9ead15c94..7ab147e34e06 100644 --- a/fastlane/metadata/en-GB/keywords.txt +++ b/fastlane/metadata/en-GB/keywords.txt @@ -1 +1 @@ -blogger,writing,blogging,web,maker,online,store,business,make,create,write,blogs \ No newline at end of file +blogger,writing,blogging,web,maker,online,store,business,make,create,write,blogs diff --git a/fastlane/metadata/en-GB/name.txt b/fastlane/metadata/en-GB/name.txt index 028d836eea1f..f1c6744c4874 100644 --- a/fastlane/metadata/en-GB/name.txt +++ b/fastlane/metadata/en-GB/name.txt @@ -1 +1 @@ -WordPress ā€“ Website Builder \ No newline at end of file +WordPress ā€“ Website Builder diff --git a/fastlane/metadata/en-GB/release_notes.txt b/fastlane/metadata/en-GB/release_notes.txt new file mode 100644 index 000000000000..d60e8d1febe9 --- /dev/null +++ b/fastlane/metadata/en-GB/release_notes.txt @@ -0,0 +1,11 @@ +We made a small but mighty change to the block editor: the ā€œAdd Blockā€ button is more visible when you first open the editor with no blocks selected. We also removed one of three error notifications when a media or audio block fails to uploadā€”it felt like overkill. + +Youā€™ll hear some accessibility tweaks in the VoiceOver experience when youā€™re rearranging menu items. Instructions and notices are clearer, and the menu hierarchy makes more sense out loud. + +We added a new screen to the site creation process where you can enter your site's intent. We tested this screen with a small group of users, and we think youā€™ll like it, too. + +Web previews wonā€™t cut off bottom-of-the-screen notifications when your browser toolbar is visible. + +Whatā€™s in a name? Well, if your site has one, youā€™ll see it in the My Site navigation title. + +When you swipe left on a comment in your Notifications, you wonā€™t see the ā€œBinā€ option anymore. Instead youā€™ll see ā€œUnapprove Commentā€ and ā€œApprove Comment.ā€ We approve. diff --git a/fastlane/metadata/en-GB/subtitle.txt b/fastlane/metadata/en-GB/subtitle.txt index b082dcb78bf7..08d11992ce2f 100644 --- a/fastlane/metadata/en-GB/subtitle.txt +++ b/fastlane/metadata/en-GB/subtitle.txt @@ -1 +1 @@ -Design a site, build a blog \ No newline at end of file +Design a site, build a blog diff --git a/fastlane/metadata/es-ES/keywords.txt b/fastlane/metadata/es-ES/keywords.txt index 9fa7ea3941f7..53eac7946caf 100644 --- a/fastlane/metadata/es-ES/keywords.txt +++ b/fastlane/metadata/es-ES/keywords.txt @@ -1 +1 @@ -bloguero,escritura,bloguear,web,creador,online,tienda,negocio,construir,crear,escribir,blogs \ No newline at end of file +bloguero,escritura,bloguear,web,creador,online,tienda,negocio,construir,crear,escribir,blogs diff --git a/fastlane/metadata/es-ES/name.txt b/fastlane/metadata/es-ES/name.txt index fbca32a5e561..678c41168ce0 100644 --- a/fastlane/metadata/es-ES/name.txt +++ b/fastlane/metadata/es-ES/name.txt @@ -1 +1 @@ -WordPress - Constructor web \ No newline at end of file +WordPress - Constructor web diff --git a/fastlane/metadata/es-ES/release_notes.txt b/fastlane/metadata/es-ES/release_notes.txt new file mode 100644 index 000000000000..904d23f91b34 --- /dev/null +++ b/fastlane/metadata/es-ES/release_notes.txt @@ -0,0 +1,11 @@ +Hemos hecho un pequeƱo pero mĆ”gico cambio al editor de bloques: El botĆ³n de Ā«AƱadir bloqueĀ» es mĆ”s visible cuando abres el editor y no hay ningĆŗn bloque seleccionado. TambiĆ©n hemos quitado uno de los tres avisos de error cuando falla en subirse un bloque de audio o medios - era un poco exagerado. + +EscucharĆ”s algunos retoques de accesibilidad en la experiencia con VoiceOver cuando reordenes elementos de un menĆŗ. Las instrucciones y avisos son mĆ”s claros, y la jerarquĆ­a del menĆŗ tiene mĆ”s sentido al hablarla. + +Hemos aƱadido una nueva pantalla al proceso de creaciĆ³n del sitio en la que puedes introducir la intenciĆ³n del sitio. Hemos probado esta pantalla con un pequeƱo grupo de usuarios y creemos que tambiĆ©n te gustarĆ”. + +Las vistas previas web no cortan el fondo de los avisos cuando estĆ” visible la barra de herramientas de tu navegador. + +ĀæQuĆ© hay del nombre? Bueno, si tu sitio tiene nombre, lo verĆ”s en el tĆ­tulo de navegaciĆ³n de Ā«Mi sitioĀ». + +Cuando deslizas hacia la izquierda en un comentario en tu secciĆ³n de avisos, ya no verĆ”s la opciĆ³n de Ā«Enviar a la papeleraĀ». En su lugar verĆ”s Ā«Rechazar comentarioĀ» y Ā«Aprobar comentarioĀ». Lo aprobamos. diff --git a/fastlane/metadata/es-ES/subtitle.txt b/fastlane/metadata/es-ES/subtitle.txt index 695eb975fd7a..ea5b02af5b52 100644 --- a/fastlane/metadata/es-ES/subtitle.txt +++ b/fastlane/metadata/es-ES/subtitle.txt @@ -1 +1 @@ -DiseƱa un sitio, crea un blog \ No newline at end of file +DiseƱa un sitio, crea un blog diff --git a/fastlane/metadata/es-MX/keywords.txt b/fastlane/metadata/es-MX/keywords.txt index 9fa7ea3941f7..53eac7946caf 100644 --- a/fastlane/metadata/es-MX/keywords.txt +++ b/fastlane/metadata/es-MX/keywords.txt @@ -1 +1 @@ -bloguero,escritura,bloguear,web,creador,online,tienda,negocio,construir,crear,escribir,blogs \ No newline at end of file +bloguero,escritura,bloguear,web,creador,online,tienda,negocio,construir,crear,escribir,blogs diff --git a/fastlane/metadata/es-MX/name.txt b/fastlane/metadata/es-MX/name.txt index fbca32a5e561..678c41168ce0 100644 --- a/fastlane/metadata/es-MX/name.txt +++ b/fastlane/metadata/es-MX/name.txt @@ -1 +1 @@ -WordPress - Constructor web \ No newline at end of file +WordPress - Constructor web diff --git a/fastlane/metadata/es-MX/subtitle.txt b/fastlane/metadata/es-MX/subtitle.txt index 695eb975fd7a..ea5b02af5b52 100644 --- a/fastlane/metadata/es-MX/subtitle.txt +++ b/fastlane/metadata/es-MX/subtitle.txt @@ -1 +1 @@ -DiseƱa un sitio, crea un blog \ No newline at end of file +DiseƱa un sitio, crea un blog diff --git a/fastlane/metadata/fr-FR/keywords.txt b/fastlane/metadata/fr-FR/keywords.txt index 63916c8815f8..bc957286bcac 100644 --- a/fastlane/metadata/fr-FR/keywords.txt +++ b/fastlane/metadata/fr-FR/keywords.txt @@ -1 +1 @@ -blogueur,Ć©criture,blogs,web,crĆ©ateur,en ligne,boutique,entreprise,crĆ©er,Ć©crire,blog \ No newline at end of file +blogueur,Ć©criture,blogs,web,crĆ©ateur,en ligne,boutique,entreprise,crĆ©er,Ć©crire,blog diff --git a/fastlane/metadata/fr-FR/name.txt b/fastlane/metadata/fr-FR/name.txt index 9610a3500dfe..f0ecebc43067 100644 --- a/fastlane/metadata/fr-FR/name.txt +++ b/fastlane/metadata/fr-FR/name.txt @@ -1 +1 @@ -WordPress - CrĆ©ation de sites \ No newline at end of file +WordPress - CrĆ©ation de sites diff --git a/fastlane/metadata/fr-FR/subtitle.txt b/fastlane/metadata/fr-FR/subtitle.txt index 0916feea62b9..c439391d070a 100644 --- a/fastlane/metadata/fr-FR/subtitle.txt +++ b/fastlane/metadata/fr-FR/subtitle.txt @@ -1 +1 @@ -Concevez un site crĆ©ez un blog \ No newline at end of file +Concevez un site crĆ©ez un blog diff --git a/fastlane/metadata/he/keywords.txt b/fastlane/metadata/he/keywords.txt index 46d9ead15c94..7ab147e34e06 100644 --- a/fastlane/metadata/he/keywords.txt +++ b/fastlane/metadata/he/keywords.txt @@ -1 +1 @@ -blogger,writing,blogging,web,maker,online,store,business,make,create,write,blogs \ No newline at end of file +blogger,writing,blogging,web,maker,online,store,business,make,create,write,blogs diff --git a/fastlane/metadata/he/name.txt b/fastlane/metadata/he/name.txt index 028d836eea1f..f1c6744c4874 100644 --- a/fastlane/metadata/he/name.txt +++ b/fastlane/metadata/he/name.txt @@ -1 +1 @@ -WordPress ā€“ Website Builder \ No newline at end of file +WordPress ā€“ Website Builder diff --git a/fastlane/metadata/he/subtitle.txt b/fastlane/metadata/he/subtitle.txt index b082dcb78bf7..08d11992ce2f 100644 --- a/fastlane/metadata/he/subtitle.txt +++ b/fastlane/metadata/he/subtitle.txt @@ -1 +1 @@ -Design a site, build a blog \ No newline at end of file +Design a site, build a blog diff --git a/fastlane/metadata/id/keywords.txt b/fastlane/metadata/id/keywords.txt index 082f945adfc8..6e65dcd4514f 100644 --- a/fastlane/metadata/id/keywords.txt +++ b/fastlane/metadata/id/keywords.txt @@ -1 +1 @@ -blogger,tulisan,blogging,web,kreator,online,toko,bisnis,buat,ciptakan,tulis,blog \ No newline at end of file +blogger,tulisan,blogging,web,kreator,online,toko,bisnis,buat,ciptakan,tulis,blog diff --git a/fastlane/metadata/id/name.txt b/fastlane/metadata/id/name.txt index 838f34ae88e7..61b4296a6651 100644 --- a/fastlane/metadata/id/name.txt +++ b/fastlane/metadata/id/name.txt @@ -1 +1 @@ -WordPress ā€“ Pembuat Situs Web \ No newline at end of file +WordPress ā€“ Pembuat Situs Web diff --git a/fastlane/metadata/id/release_notes.txt b/fastlane/metadata/id/release_notes.txt new file mode 100644 index 000000000000..ac27ad02715f --- /dev/null +++ b/fastlane/metadata/id/release_notes.txt @@ -0,0 +1,11 @@ +Kami membuat perubahan kecil yang berarti pada editor blok: tombol "Tambah Blok" lebih terlihat saat Anda pertama kali membuka editor tanpa ada blok yang dipilih. Kami juga menghapus salah satu dari tiga pemberitahuan kesalahan saat media atau blok audio gagal diunggahā€”rasanya berlebihan. + +Anda akan mendengar beberapa penyesuaian aksesibilitas pada pengalaman VoiceOver saat Anda mengatur ulang item menu. Panduan dan catatan lebih jelas, dan hirarki menu lebih terstruktur. + +Kami menambahkan layar baru ke proses pembuatan situs, tempat Anda dapat menuliskan maksud situs Anda. Kami telah menguji layar tersebut dengan sekelompok kecil pengguna. Kami pikir Anda juga akan menyukainya. + +Pratinjau web tidak akan memotong pemberitahuan di bagian bawah layar saat toolbar browser Anda terlihat. + +Apa maksud sebuah nama? Nah, jika situs Anda memiliki nama, Anda akan melihatnya di judul navigasi Situs Saya. + +Saat Anda menggeser ke kiri pada komentar di Notifikasi, Anda tidak akan melihat opsi "Tong Sampah" lagi. Sebagai gantinya, Anda akan melihat "Komentar yang Tidak Disetujui" dan "Setujui Komentar". Kami menyetujui. diff --git a/fastlane/metadata/id/subtitle.txt b/fastlane/metadata/id/subtitle.txt index b699dc2c20e9..d568ccd36e2c 100644 --- a/fastlane/metadata/id/subtitle.txt +++ b/fastlane/metadata/id/subtitle.txt @@ -1 +1 @@ -Desain situs, buat blog \ No newline at end of file +Desain situs, buat blog diff --git a/fastlane/metadata/it/keywords.txt b/fastlane/metadata/it/keywords.txt index e211ad9021d5..0b09861ed2b9 100644 --- a/fastlane/metadata/it/keywords.txt +++ b/fastlane/metadata/it/keywords.txt @@ -1 +1 @@ -blogger,scrittura,blogging,web,realizzatore,online,negozio,attivitĆ ,creare,scrivere,blog \ No newline at end of file +blogger,scrittura,blogging,web,realizzatore,online,negozio,attivitĆ ,creare,scrivere,blog diff --git a/fastlane/metadata/it/name.txt b/fastlane/metadata/it/name.txt index e18bcccc6fb0..87bafecc5499 100644 --- a/fastlane/metadata/it/name.txt +++ b/fastlane/metadata/it/name.txt @@ -1 +1 @@ -WordPress ā€“ Costruzione siti \ No newline at end of file +WordPress ā€“ Costruzione siti diff --git a/fastlane/metadata/it/subtitle.txt b/fastlane/metadata/it/subtitle.txt index b2d4709d40c7..bcd33ae73152 100644 --- a/fastlane/metadata/it/subtitle.txt +++ b/fastlane/metadata/it/subtitle.txt @@ -1 +1 @@ -Progetta un sito, crea un blog \ No newline at end of file +Progetta un sito, crea un blog diff --git a/fastlane/metadata/ja/keywords.txt b/fastlane/metadata/ja/keywords.txt index b9c7cc21adc3..d61b533720d2 100644 --- a/fastlane/metadata/ja/keywords.txt +++ b/fastlane/metadata/ja/keywords.txt @@ -1 +1 @@ -ćƒ–ćƒ­ć‚¬ćƒ¼,ćƒ©ć‚¤ćƒ†ć‚£ćƒ³ć‚°,ćƒ–ćƒ­ć‚°åŸ·ē­†,ć‚¦ć‚§ćƒ–,ćƒ”ćƒ¼ć‚«ćƒ¼,ć‚Ŗćƒ³ćƒ©ć‚¤ćƒ³,ć‚¹ćƒˆć‚¢,惓ć‚øćƒć‚¹,꧋ēƉ,ä½œęˆ,執ē­†,惖惭悰 \ No newline at end of file +ćƒ–ćƒ­ć‚¬ćƒ¼,ćƒ©ć‚¤ćƒ†ć‚£ćƒ³ć‚°,ćƒ–ćƒ­ć‚°åŸ·ē­†,ć‚¦ć‚§ćƒ–,ćƒ”ćƒ¼ć‚«ćƒ¼,ć‚Ŗćƒ³ćƒ©ć‚¤ćƒ³,ć‚¹ćƒˆć‚¢,惓ć‚øćƒć‚¹,꧋ēƉ,ä½œęˆ,執ē­†,惖惭悰 diff --git a/fastlane/metadata/ja/name.txt b/fastlane/metadata/ja/name.txt index 48acd04a8199..a88bf76f2002 100644 --- a/fastlane/metadata/ja/name.txt +++ b/fastlane/metadata/ja/name.txt @@ -1 +1 @@ -WordPress - ć‚µć‚¤ćƒˆćƒ“ćƒ«ćƒ€ćƒ¼ \ No newline at end of file +WordPress - ć‚µć‚¤ćƒˆćƒ“ćƒ«ćƒ€ćƒ¼ diff --git a/fastlane/metadata/ja/subtitle.txt b/fastlane/metadata/ja/subtitle.txt index c8e2d8235ba9..4505b21a7510 100644 --- a/fastlane/metadata/ja/subtitle.txt +++ b/fastlane/metadata/ja/subtitle.txt @@ -1 +1 @@ -ć‚µć‚¤ćƒˆć‚’ćƒ‡ć‚¶ć‚¤ćƒ³ć€ćƒ–ćƒ­ć‚°ć‚’ä½œęˆ \ No newline at end of file +ć‚µć‚¤ćƒˆć‚’ćƒ‡ć‚¶ć‚¤ćƒ³ć€ćƒ–ćƒ­ć‚°ć‚’ä½œęˆ diff --git a/fastlane/metadata/ko/keywords.txt b/fastlane/metadata/ko/keywords.txt index 82379101486a..cfced05c8a88 100644 --- a/fastlane/metadata/ko/keywords.txt +++ b/fastlane/metadata/ko/keywords.txt @@ -1 +1 @@ -ėø”ė”œź±°,źø€ģ“°źø°,ėø”ė”œź¹…,ģ›¹,ģ œģž‘ģž,ģ˜Øė¼ģø,ģŠ¤ķ† ģ–“,ė¹„ģ¦ˆė‹ˆģŠ¤,ė§Œė“¤źø°,ģƒģ„±,ģ“°źø°,ėø”ė”œź·ø \ No newline at end of file +ėø”ė”œź±°,źø€ģ“°źø°,ėø”ė”œź¹…,ģ›¹,ģ œģž‘ģž,ģ˜Øė¼ģø,ģŠ¤ķ† ģ–“,ė¹„ģ¦ˆė‹ˆģŠ¤,ė§Œė“¤źø°,ģƒģ„±,ģ“°źø°,ėø”ė”œź·ø diff --git a/fastlane/metadata/ko/name.txt b/fastlane/metadata/ko/name.txt index 8c935b5d153a..eb024ef3bbea 100644 --- a/fastlane/metadata/ko/name.txt +++ b/fastlane/metadata/ko/name.txt @@ -1 +1 @@ -ģ›Œė“œķ”„ė ˆģŠ¤ ā€“ ģ›¹ģ‚¬ģ“ķŠø ģ œģž‘ ė„źµ¬ \ No newline at end of file +ģ›Œė“œķ”„ė ˆģŠ¤ ā€“ ģ›¹ģ‚¬ģ“ķŠø ģ œģž‘ ė„źµ¬ diff --git a/fastlane/metadata/ko/subtitle.txt b/fastlane/metadata/ko/subtitle.txt index 83cfcab15b51..d414cfad6190 100644 --- a/fastlane/metadata/ko/subtitle.txt +++ b/fastlane/metadata/ko/subtitle.txt @@ -1 +1 @@ -ģ‚¬ģ“ķŠø ė””ģžģø, ėø”ė”œź·ø ģ œģž‘ \ No newline at end of file +ģ‚¬ģ“ķŠø ė””ģžģø, ėø”ė”œź·ø ģ œģž‘ diff --git a/fastlane/metadata/nl-NL/keywords.txt b/fastlane/metadata/nl-NL/keywords.txt index c6146c7062f8..a34914743428 100644 --- a/fastlane/metadata/nl-NL/keywords.txt +++ b/fastlane/metadata/nl-NL/keywords.txt @@ -1 +1 @@ -blogger,schrijven,blogging,web,maker,online,winkel,bedrijf,maak,creĆ«er,schrijf,blogs \ No newline at end of file +blogger,schrijven,blogging,web,maker,online,winkel,bedrijf,maak,creĆ«er,schrijf,blogs diff --git a/fastlane/metadata/nl-NL/name.txt b/fastlane/metadata/nl-NL/name.txt index 11448f85e18c..699fcf110050 100644 --- a/fastlane/metadata/nl-NL/name.txt +++ b/fastlane/metadata/nl-NL/name.txt @@ -1 +1 @@ -WordPress ā€“ Website bouwer \ No newline at end of file +WordPress ā€“ Website bouwer diff --git a/fastlane/metadata/nl-NL/subtitle.txt b/fastlane/metadata/nl-NL/subtitle.txt index 860c1c7b6c10..6fcc6ea493d0 100644 --- a/fastlane/metadata/nl-NL/subtitle.txt +++ b/fastlane/metadata/nl-NL/subtitle.txt @@ -1 +1 @@ -Ontwerp je site, bouw je blog \ No newline at end of file +Ontwerp je site, bouw je blog diff --git a/fastlane/metadata/no/keywords.txt b/fastlane/metadata/no/keywords.txt deleted file mode 100644 index 216b4985fa33..000000000000 --- a/fastlane/metadata/no/keywords.txt +++ /dev/null @@ -1 +0,0 @@ -sosial,notater,foto,skriving,geotagging,medier,blogg,wordpress,nettsted,hjemmeside,blogging,design diff --git a/fastlane/metadata/no/name.txt b/fastlane/metadata/no/name.txt deleted file mode 100644 index bacf8ed91ea2..000000000000 --- a/fastlane/metadata/no/name.txt +++ /dev/null @@ -1 +0,0 @@ -WordPress diff --git a/fastlane/metadata/no/subtitle.txt b/fastlane/metadata/no/subtitle.txt deleted file mode 100644 index 9114a459ffc9..000000000000 --- a/fastlane/metadata/no/subtitle.txt +++ /dev/null @@ -1 +0,0 @@ -Administrer nettsted overalt \ No newline at end of file diff --git a/fastlane/metadata/pt-BR/keywords.txt b/fastlane/metadata/pt-BR/keywords.txt index b7ff165b6962..612155c522b0 100644 --- a/fastlane/metadata/pt-BR/keywords.txt +++ b/fastlane/metadata/pt-BR/keywords.txt @@ -1 +1 @@ -blogueiro,escrita,blog,web,criador,online,loja,negĆ³cio,criar,fazer,escrever,blogs \ No newline at end of file +blogueiro,escrita,blog,web,criador,online,loja,negĆ³cio,criar,fazer,escrever,blogs diff --git a/fastlane/metadata/pt-BR/name.txt b/fastlane/metadata/pt-BR/name.txt index c43a37e40408..cdd44ec19838 100644 --- a/fastlane/metadata/pt-BR/name.txt +++ b/fastlane/metadata/pt-BR/name.txt @@ -1 +1 @@ -WordPress ā€“ Criador de sites \ No newline at end of file +WordPress ā€“ Criador de sites diff --git a/fastlane/metadata/pt-BR/subtitle.txt b/fastlane/metadata/pt-BR/subtitle.txt index b5e051496d72..7b522406a32d 100644 --- a/fastlane/metadata/pt-BR/subtitle.txt +++ b/fastlane/metadata/pt-BR/subtitle.txt @@ -1 +1 @@ -FaƧa um site, crie um blog \ No newline at end of file +FaƧa um site, crie um blog diff --git a/fastlane/metadata/pt-PT/description.txt b/fastlane/metadata/pt-PT/description.txt deleted file mode 100644 index 04a5230800f7..000000000000 --- a/fastlane/metadata/pt-PT/description.txt +++ /dev/null @@ -1,11 +0,0 @@ -Manage or create your WordPress blog or website right from your iOS device: create and edit posts and pages, upload your favorite photos and videos, view stats and reply to comments. - -With WordPress for iOS, you have the power to publish in the palm of your hand. Draft a spontaneous haiku from the couch. Snap and post a photo on your lunch break. Respond to your latest comments, or check your stats to see what new countries todayā€™s visitors are coming from. - -WordPress for iOS is an Open Source project, which means you too can contribute to its development. Learn more at https://apps.wordpress.com/contribute/. - -WordPress for iOS supports WordPress.com and self-hosted WordPress.org sites running WordPress 4.0 or higher. - -Need help with the app? Visit the forums at https://ios.forums.wordpress.org/ or tweet us @WordPressiOS. - -View the Privacy Notice for California Users at https://automattic.com/privacy/#california-consumer-privacy-act-ccpa. diff --git a/fastlane/metadata/pt-PT/keywords.txt b/fastlane/metadata/pt-PT/keywords.txt deleted file mode 100644 index ab6cbfc0f9a1..000000000000 --- a/fastlane/metadata/pt-PT/keywords.txt +++ /dev/null @@ -1 +0,0 @@ -social,network,notes,jetpack,photos,writing,geotagging,media,blog,wordpress,website,blogging,design diff --git a/fastlane/metadata/pt-PT/name.txt b/fastlane/metadata/pt-PT/name.txt deleted file mode 100644 index bacf8ed91ea2..000000000000 --- a/fastlane/metadata/pt-PT/name.txt +++ /dev/null @@ -1 +0,0 @@ -WordPress diff --git a/fastlane/metadata/pt-PT/subtitle.txt b/fastlane/metadata/pt-PT/subtitle.txt deleted file mode 100644 index 4181b65c7d44..000000000000 --- a/fastlane/metadata/pt-PT/subtitle.txt +++ /dev/null @@ -1 +0,0 @@ -Manage your website anywhere diff --git a/fastlane/metadata/ru/keywords.txt b/fastlane/metadata/ru/keywords.txt index 1f4be17077d5..827eea729852 100644 --- a/fastlane/metadata/ru/keywords.txt +++ b/fastlane/metadata/ru/keywords.txt @@ -1 +1 @@ -Š±Š»Š¾Š³ŠµŃ€,Š½Š°ŠæŠøсŠ°Š½ŠøŠµ стŠ°Ń‚ŠµŠ¹,Š²ŠµŠ“ŠµŠ½ŠøŠµ Š±Š»Š¾Š³Š°,Š²ŠµŠ±,сŠ¾Š·Š“Š°Ń‚ŠµŠ»ŃŒ,Š¾Š½Š»Š°Š¹Š½,Š¼Š°Š³Š°Š·ŠøŠ½,Š±ŠøŠ·Š½ŠµŃ,сŠ¾Š·Š“Š°Š²Š°Ń‚ŃŒ,тŠ²Š¾Ń€Šøть,ŠæŠøсŠ°Ń‚ŃŒ \ No newline at end of file +Š±Š»Š¾Š³ŠµŃ€,Š½Š°ŠæŠøсŠ°Š½ŠøŠµ стŠ°Ń‚ŠµŠ¹,Š²ŠµŠ“ŠµŠ½ŠøŠµ Š±Š»Š¾Š³Š°,Š²ŠµŠ±,сŠ¾Š·Š“Š°Ń‚ŠµŠ»ŃŒ,Š¾Š½Š»Š°Š¹Š½,Š¼Š°Š³Š°Š·ŠøŠ½,Š±ŠøŠ·Š½ŠµŃ,сŠ¾Š·Š“Š°Š²Š°Ń‚ŃŒ,тŠ²Š¾Ń€Šøть,ŠæŠøсŠ°Ń‚ŃŒ diff --git a/fastlane/metadata/ru/name.txt b/fastlane/metadata/ru/name.txt index e088ad38f18a..c6f82962c874 100644 --- a/fastlane/metadata/ru/name.txt +++ b/fastlane/metadata/ru/name.txt @@ -1 +1 @@ -WordPress ā€“ ŠŗŠ¾Š½ŃŃ‚Ń€ŃƒŠŗтŠ¾Ń€ сŠ°Š¹Ń‚Š¾Š² \ No newline at end of file +WordPress ā€“ ŠŗŠ¾Š½ŃŃ‚Ń€ŃƒŠŗтŠ¾Ń€ сŠ°Š¹Ń‚Š¾Š² diff --git a/fastlane/metadata/ru/subtitle.txt b/fastlane/metadata/ru/subtitle.txt index 633f1a06f843..8efcce480a22 100644 --- a/fastlane/metadata/ru/subtitle.txt +++ b/fastlane/metadata/ru/subtitle.txt @@ -1 +1 @@ -Š”Š¾Š·Š“Š°Š¹Ń‚Šµ Š²ŠµŠ±-сŠ°Š¹Ń‚ ŠøŠ»Šø Š±Š»Š¾Š³ \ No newline at end of file +Š”Š¾Š·Š“Š°Š¹Ń‚Šµ Š²ŠµŠ±-сŠ°Š¹Ń‚ ŠøŠ»Šø Š±Š»Š¾Š³ diff --git a/fastlane/metadata/sv/keywords.txt b/fastlane/metadata/sv/keywords.txt index faf412f6b335..c8a4b649888e 100644 --- a/fastlane/metadata/sv/keywords.txt +++ b/fastlane/metadata/sv/keywords.txt @@ -1 +1 @@ -bloggare,skriva,bloggande,webb,ebutik,handel,system,bygga,skapa,bloggar \ No newline at end of file +bloggare,skriva,bloggande,webb,ebutik,handel,system,bygga,skapa,bloggar diff --git a/fastlane/metadata/sv/name.txt b/fastlane/metadata/sv/name.txt index d944d4d838d2..e7f5c55225cc 100644 --- a/fastlane/metadata/sv/name.txt +++ b/fastlane/metadata/sv/name.txt @@ -1 +1 @@ -WordPress ā€“ webbplatsbyggare \ No newline at end of file +WordPress ā€“ webbplatsbyggare diff --git a/fastlane/metadata/sv/subtitle.txt b/fastlane/metadata/sv/subtitle.txt index 562fd5055106..d038d0f9365a 100644 --- a/fastlane/metadata/sv/subtitle.txt +++ b/fastlane/metadata/sv/subtitle.txt @@ -1 +1 @@ -Skapa webbplats eller blogg \ No newline at end of file +Skapa webbplats eller blogg diff --git a/fastlane/metadata/th/description.txt b/fastlane/metadata/th/description.txt deleted file mode 100644 index 04a5230800f7..000000000000 --- a/fastlane/metadata/th/description.txt +++ /dev/null @@ -1,11 +0,0 @@ -Manage or create your WordPress blog or website right from your iOS device: create and edit posts and pages, upload your favorite photos and videos, view stats and reply to comments. - -With WordPress for iOS, you have the power to publish in the palm of your hand. Draft a spontaneous haiku from the couch. Snap and post a photo on your lunch break. Respond to your latest comments, or check your stats to see what new countries todayā€™s visitors are coming from. - -WordPress for iOS is an Open Source project, which means you too can contribute to its development. Learn more at https://apps.wordpress.com/contribute/. - -WordPress for iOS supports WordPress.com and self-hosted WordPress.org sites running WordPress 4.0 or higher. - -Need help with the app? Visit the forums at https://ios.forums.wordpress.org/ or tweet us @WordPressiOS. - -View the Privacy Notice for California Users at https://automattic.com/privacy/#california-consumer-privacy-act-ccpa. diff --git a/fastlane/metadata/th/keywords.txt b/fastlane/metadata/th/keywords.txt deleted file mode 100644 index ab6cbfc0f9a1..000000000000 --- a/fastlane/metadata/th/keywords.txt +++ /dev/null @@ -1 +0,0 @@ -social,network,notes,jetpack,photos,writing,geotagging,media,blog,wordpress,website,blogging,design diff --git a/fastlane/metadata/th/name.txt b/fastlane/metadata/th/name.txt deleted file mode 100644 index bacf8ed91ea2..000000000000 --- a/fastlane/metadata/th/name.txt +++ /dev/null @@ -1 +0,0 @@ -WordPress diff --git a/fastlane/metadata/th/subtitle.txt b/fastlane/metadata/th/subtitle.txt deleted file mode 100644 index 4181b65c7d44..000000000000 --- a/fastlane/metadata/th/subtitle.txt +++ /dev/null @@ -1 +0,0 @@ -Manage your website anywhere diff --git a/fastlane/metadata/tr/keywords.txt b/fastlane/metadata/tr/keywords.txt index 066982aa1d36..274a912a79e5 100644 --- a/fastlane/metadata/tr/keywords.txt +++ b/fastlane/metadata/tr/keywords.txt @@ -1 +1 @@ -blogger,yazı,bloglama,web,maker,ƧevrimiƧi,mağaza,iş,yap,oluştur,yaz,bloglar \ No newline at end of file +blogger,yazı,bloglama,web,maker,ƧevrimiƧi,mağaza,iş,yap,oluştur,yaz,bloglar diff --git a/fastlane/metadata/tr/name.txt b/fastlane/metadata/tr/name.txt index 5af11bc5d4e2..895b84237ceb 100644 --- a/fastlane/metadata/tr/name.txt +++ b/fastlane/metadata/tr/name.txt @@ -1 +1 @@ -WordPress ā€“ Site Oluşturucu \ No newline at end of file +WordPress ā€“ Site Oluşturucu diff --git a/fastlane/metadata/tr/subtitle.txt b/fastlane/metadata/tr/subtitle.txt index 864b54c82f19..d742bfb8bc5e 100644 --- a/fastlane/metadata/tr/subtitle.txt +++ b/fastlane/metadata/tr/subtitle.txt @@ -1 +1 @@ -Siteni tasarla, blog oluştur \ No newline at end of file +Siteni tasarla, blog oluştur diff --git a/fastlane/metadata/zh-Hans/keywords.txt b/fastlane/metadata/zh-Hans/keywords.txt index 307408df3f93..3087f6c90f0d 100644 --- a/fastlane/metadata/zh-Hans/keywords.txt +++ b/fastlane/metadata/zh-Hans/keywords.txt @@ -1 +1 @@ -博äø»,ę’°å†™,博客,ē½‘锵,制作巄具,åœØēŗæ,商åŗ—,äøšåŠ”,制作,创å»ŗ,ę’°å†™,博客 \ No newline at end of file +博äø»,ę’°å†™,博客,ē½‘锵,制作巄具,åœØēŗæ,商åŗ—,äøšåŠ”,制作,创å»ŗ,ę’°å†™,博客 diff --git a/fastlane/metadata/zh-Hans/name.txt b/fastlane/metadata/zh-Hans/name.txt index ccc2b01af848..4547d43f7ce6 100644 --- a/fastlane/metadata/zh-Hans/name.txt +++ b/fastlane/metadata/zh-Hans/name.txt @@ -1 +1 @@ -WordPress - ē½‘ē«™ęž„å»ŗå™Ø \ No newline at end of file +WordPress - ē½‘ē«™ęž„å»ŗå™Ø diff --git a/fastlane/metadata/zh-Hans/subtitle.txt b/fastlane/metadata/zh-Hans/subtitle.txt index 79e4f081d709..a43b04c50bf9 100644 --- a/fastlane/metadata/zh-Hans/subtitle.txt +++ b/fastlane/metadata/zh-Hans/subtitle.txt @@ -1 +1 @@ -č®¾č®”ē«™ē‚¹ļ¼Œåˆ›å»ŗ博客 \ No newline at end of file +č®¾č®”ē«™ē‚¹ļ¼Œåˆ›å»ŗ博客 diff --git a/fastlane/metadata/zh-Hant/keywords.txt b/fastlane/metadata/zh-Hant/keywords.txt index a7257502b1dd..e88c89311f60 100644 --- a/fastlane/metadata/zh-Hant/keywords.txt +++ b/fastlane/metadata/zh-Hant/keywords.txt @@ -1 +1 @@ -éƒØč½å®¢,åƫ作,꒰åÆ«ē¶²čŖŒ,ē¶²é ,č£½ä½œå·„å…·,ē·šäøŠ,商åŗ—,商ē”Øē‰ˆ,č£½ä½œ,å»ŗē«‹,꒰åÆ«,ē¶²čŖŒ \ No newline at end of file +éƒØč½å®¢,åƫ作,꒰åÆ«ē¶²čŖŒ,ē¶²é ,č£½ä½œå·„å…·,ē·šäøŠ,商åŗ—,商ē”Øē‰ˆ,č£½ä½œ,å»ŗē«‹,꒰åÆ«,ē¶²čŖŒ diff --git a/fastlane/metadata/zh-Hant/name.txt b/fastlane/metadata/zh-Hant/name.txt index c7a8e02234dd..1bc7f4f30c3b 100644 --- a/fastlane/metadata/zh-Hant/name.txt +++ b/fastlane/metadata/zh-Hant/name.txt @@ -1 +1 @@ -WordPress ā€“ ē¶²ē«™å»ŗē«‹å·„具 \ No newline at end of file +WordPress ā€“ ē¶²ē«™å»ŗē«‹å·„具 diff --git a/fastlane/metadata/zh-Hant/subtitle.txt b/fastlane/metadata/zh-Hant/subtitle.txt index 9ccb19178b32..1304820b0bfa 100644 --- a/fastlane/metadata/zh-Hant/subtitle.txt +++ b/fastlane/metadata/zh-Hant/subtitle.txt @@ -1 +1 @@ -čØ­č؈ē¶²ē«™ļ¼Œå»ŗē«‹ē¶²čŖŒ \ No newline at end of file +čØ­č؈ē¶²ē«™ļ¼Œå»ŗē«‹ē¶²čŖŒ From 2e0471b5dccb7b453284c69d0980b1515173e5cd Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Thu, 28 Apr 2022 16:58:56 +1000 Subject: [PATCH 113/166] Update Jetpack metadata translations --- fastlane/jetpack_metadata/ar-SA/keywords.txt | 2 +- fastlane/jetpack_metadata/ar-SA/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/ar-SA/subtitle.txt | 2 +- fastlane/jetpack_metadata/de-DE/keywords.txt | 2 +- fastlane/jetpack_metadata/de-DE/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/de-DE/subtitle.txt | 2 +- fastlane/jetpack_metadata/default/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/es-ES/keywords.txt | 2 +- fastlane/jetpack_metadata/es-ES/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/es-ES/subtitle.txt | 2 +- fastlane/jetpack_metadata/fr-FR/keywords.txt | 2 +- fastlane/jetpack_metadata/fr-FR/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/fr-FR/subtitle.txt | 2 +- fastlane/jetpack_metadata/he/keywords.txt | 2 +- fastlane/jetpack_metadata/he/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/he/subtitle.txt | 2 +- fastlane/jetpack_metadata/id/keywords.txt | 2 +- fastlane/jetpack_metadata/id/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/id/subtitle.txt | 2 +- fastlane/jetpack_metadata/it/keywords.txt | 2 +- fastlane/jetpack_metadata/it/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/it/subtitle.txt | 2 +- fastlane/jetpack_metadata/ja/keywords.txt | 2 +- fastlane/jetpack_metadata/ja/subtitle.txt | 2 +- fastlane/jetpack_metadata/ko/keywords.txt | 2 +- fastlane/jetpack_metadata/ko/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/ko/subtitle.txt | 2 +- fastlane/jetpack_metadata/nl-NL/keywords.txt | 2 +- fastlane/jetpack_metadata/nl-NL/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/nl-NL/subtitle.txt | 2 +- fastlane/jetpack_metadata/pt-BR/keywords.txt | 2 +- fastlane/jetpack_metadata/pt-BR/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/pt-BR/subtitle.txt | 2 +- fastlane/jetpack_metadata/ru/keywords.txt | 2 +- fastlane/jetpack_metadata/ru/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/ru/subtitle.txt | 2 +- fastlane/jetpack_metadata/sv/keywords.txt | 2 +- fastlane/jetpack_metadata/sv/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/sv/subtitle.txt | 2 +- fastlane/jetpack_metadata/tr/keywords.txt | 2 +- fastlane/jetpack_metadata/tr/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/tr/subtitle.txt | 2 +- fastlane/jetpack_metadata/zh-Hans/keywords.txt | 2 +- fastlane/jetpack_metadata/zh-Hans/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/zh-Hans/subtitle.txt | 2 +- fastlane/jetpack_metadata/zh-Hant/keywords.txt | 2 +- fastlane/jetpack_metadata/zh-Hant/release_notes.txt | 11 +++++++++++ fastlane/jetpack_metadata/zh-Hant/subtitle.txt | 2 +- 48 files changed, 208 insertions(+), 32 deletions(-) create mode 100644 fastlane/jetpack_metadata/ar-SA/release_notes.txt create mode 100644 fastlane/jetpack_metadata/de-DE/release_notes.txt create mode 100644 fastlane/jetpack_metadata/default/release_notes.txt create mode 100644 fastlane/jetpack_metadata/es-ES/release_notes.txt create mode 100644 fastlane/jetpack_metadata/fr-FR/release_notes.txt create mode 100644 fastlane/jetpack_metadata/he/release_notes.txt create mode 100644 fastlane/jetpack_metadata/id/release_notes.txt create mode 100644 fastlane/jetpack_metadata/it/release_notes.txt create mode 100644 fastlane/jetpack_metadata/ko/release_notes.txt create mode 100644 fastlane/jetpack_metadata/nl-NL/release_notes.txt create mode 100644 fastlane/jetpack_metadata/pt-BR/release_notes.txt create mode 100644 fastlane/jetpack_metadata/ru/release_notes.txt create mode 100644 fastlane/jetpack_metadata/sv/release_notes.txt create mode 100644 fastlane/jetpack_metadata/tr/release_notes.txt create mode 100644 fastlane/jetpack_metadata/zh-Hans/release_notes.txt create mode 100644 fastlane/jetpack_metadata/zh-Hant/release_notes.txt diff --git a/fastlane/jetpack_metadata/ar-SA/keywords.txt b/fastlane/jetpack_metadata/ar-SA/keywords.txt index abe7a9f3c77d..289ace86cbd2 100644 --- a/fastlane/jetpack_metadata/ar-SA/keywords.txt +++ b/fastlane/jetpack_metadata/ar-SA/keywords.txt @@ -1 +1 @@ -Ų§Ų¬ŲŖŁ…Ų§Ų¹ŁŠ,Ł…Ł„Ų§Ų­ŲøŲ§ŲŖ,jetpack,ŁƒŲŖŲ§ŲØŲ©,ŁˆŲ³Ł… Ų¬ŲŗŲ±Ų§ŁŁŠ,ŁˆŲ³Ų§Ų¦Ų·,Ł…ŁˆŁ‚Ų¹ ŁˆŁŠŲØ,Ł…ŁˆŁ‚Ų¹ Ų„Ł„ŁƒŲŖŲ±ŁˆŁ†ŁŠ,ŲŖŲÆŁˆŁŠŁ†,Ł…Ų¬Ł„Ų© \ No newline at end of file +Ų§Ų¬ŲŖŁ…Ų§Ų¹ŁŠ,Ł…Ł„Ų§Ų­ŲøŲ§ŲŖ,jetpack,ŁƒŲŖŲ§ŲØŲ©,ŁˆŲ³Ł… Ų¬ŲŗŲ±Ų§ŁŁŠ,ŁˆŲ³Ų§Ų¦Ų·,Ł…ŁˆŁ‚Ų¹ ŁˆŁŠŲØ,Ł…ŁˆŁ‚Ų¹ Ų„Ł„ŁƒŲŖŲ±ŁˆŁ†ŁŠ,ŲŖŲÆŁˆŁŠŁ†,Ł…Ų¬Ł„Ų© diff --git a/fastlane/jetpack_metadata/ar-SA/release_notes.txt b/fastlane/jetpack_metadata/ar-SA/release_notes.txt new file mode 100644 index 000000000000..8a0b0cdcbfed --- /dev/null +++ b/fastlane/jetpack_metadata/ar-SA/release_notes.txt @@ -0,0 +1,11 @@ +Ł„Ł‚ŲÆ Ų£Ų¬Ų±ŁŠŁ†Ų§ ŲŖŲŗŁŠŁŠŲ±Ł‹Ų§ ŲµŲŗŁŠŲ±Ł‹Ų§ Ł„ŁƒŁ†Ł‡ Ų±Ų§Ų¦Ų¹ Ų¹Ł„Ł‰ Ł…Ų­Ų±Ł‘ŁŲ± Ų§Ł„Ł…ŁƒŁˆŁ‘ŁŁ†: Ų£ŲµŲØŲ­ Ų²Ų± "Ų„Ų¶Ų§ŁŲ© Ł…ŁƒŁˆŁ‘ŁŁ†" Ų£ŁƒŲ«Ų± ŁˆŲ¶ŁˆŲ­Ł‹Ų§ Ų¹Ł†ŲÆŁ…Ų§ ŲŖŁŲŖŲ­ Ų§Ł„Ł…Ų­Ų±Ł‘ŁŲ± Ł„Ł„Ł…Ų±Ų© Ų§Ł„Ų£ŁˆŁ„Ł‰ Ł…Ł† ŲÆŁˆŁ† ŲŖŲ­ŲÆŁŠŲÆ Ų£ŁŠ Ł…ŁƒŁˆŁ‘ŁŁ†Ų§ŲŖ. Ł‚Ł…Ł†Ų§ ŁƒŲ°Ł„Łƒ ŲØŲ„Ų²Ų§Ł„Ų© ŁˆŲ§Ų­ŲÆ Ł…Ł† Ų«Ł„Ų§Ų«Ų© ŲŖŁ†ŲØŁŠŁ‡Ų§ŲŖ Ų®Ų·Ų£ Ų¹Ł†ŲÆŁ…Ų§ ŁŠŁŲ“Ł„ Ų±ŁŲ¹ Ł…ŁƒŁˆŁ‘ŁŁ† Ų§Ł„ŁˆŲ³Ų§Ų¦Ų· Ų£Łˆ Ų§Ł„ŲµŁˆŲŖā€”ŲØŲÆŲ§ Ų§Ł„Ų£Ł…Ų± Ł…ŲØŲ§Ł„ŲŗŁ‹Ų§ ŁŁŠŁ‡. + +Ų³ŲŖŲ³Ł…Ų¹ ŲØŲ¹Ų¶ ŲŖŲ¹ŲÆŁŠŁ„Ų§ŲŖ Ų„Ł…ŁƒŲ§Ł†ŁŠŲ© Ų§Ł„ŁˆŲµŁˆŁ„ ŁŁŠ ŲŖŲ¬Ų±ŲØŲ© VoiceOver Ų¹Ł†ŲÆŁ…Ų§ ŲŖŁ‚ŁˆŁ… ŲØŲ„Ų¹Ų§ŲÆŲ© ŲŖŲ±ŲŖŁŠŲØ Ų¹Ł†Ų§ŲµŲ± Ų§Ł„Ł‚Ų§Ų¦Ł…Ų©. Ų§Ł„Ų„Ų±Ų“Ų§ŲÆŲ§ŲŖ ŁˆŲ§Ł„Ų„Ų“Ų¹Ų§Ų±Ų§ŲŖ Ų£ŁƒŲ«Ų± ŁˆŲ¶ŁˆŲ­Ł‹Ų§ŲŒ ŁˆŁŠŲØŲÆŁˆ ŲŖŲ³Ł„Ų³Ł„ Ų§Ł„Ł‚Ų§Ł„ŲØ Ų£ŁƒŲ«Ų± Ł…Ł†Ų·Ł‚ŁŠŲ© ŲØŲ“ŁƒŁ„ ŁˆŲ§Ų¶Ų­. + +Ų£Ų¶ŁŁ†Ų§ Ų“Ų§Ų“Ų© Ų¬ŲÆŁŠŲÆŲ© Ų„Ł„Ł‰ Ų¹Ł…Ł„ŁŠŲ© Ų„Ł†Ų“Ų§Ų” Ų§Ł„Ł…ŁˆŁ‚Ų¹ Ų­ŁŠŲ« ŁŠŁ…ŁƒŁ†Łƒ Ų„ŲÆŲ®Ų§Ł„ Ł‡ŲÆŁ Ł…ŁˆŁ‚Ų¹Łƒ. Ł‚Ł…Ł†Ų§ ŲØŲŖŲ¬Ų±ŲØŲ© Ł‡Ų°Ł‡ Ų§Ł„Ų“Ų§Ų“Ų© ŲØŲ§Ų³ŲŖŲ®ŲÆŲ§Ł… Ł…Ų¬Ł…ŁˆŲ¹Ų© ŲµŲŗŁŠŲ±Ų© Ł…Ł† Ų§Ł„Ł…Ų³ŲŖŲ®ŲÆŁ…ŁŠŁ†ŲŒ ŁˆŁ†Ų¹ŲŖŁ‚ŲÆ Ų£Ł†Ł‡Ų§ Ų³ŲŖŁ†Ų§Ł„ Ų„Ų¹Ų¬Ų§ŲØŁƒ ŁƒŲ°Ł„Łƒ. + +Ł„Ł† ŲŖŲ­Ų°Ł Ł…Ų¹Ų§ŁŠŁ†Ų§ŲŖ Ų§Ł„ŁˆŁŠŲØ ŲŖŁ†ŲØŁŠŁ‡Ų§ŲŖ Ų§Ł„Ų¬Ų²Ų” Ų§Ł„Ų³ŁŁ„ŁŠ Ł…Ł† Ų§Ł„Ų“Ų§Ų“Ų© Ų¹Ł†ŲÆŁ…Ų§ ŁŠŁƒŁˆŁ† Ų“Ų±ŁŠŲ· Ų£ŲÆŁˆŲ§ŲŖ Ų§Ł„Ł…ŲŖŲµŁŲ­ Ų§Ł„Ų®Ų§Ųµ ŲØŁƒ Ł…Ų±Ų¦ŁŠŁ‹Ų§. + +Ł…Ų§Ų°Ų§ ŁŠŁˆŲ¬ŲÆ ŁŁŠ Ų§Ł„Ų§Ų³Ł…ŲŸ Ų­Ų³Ł†Ł‹Ų§ŲŒ Ų„Ų°Ų§ ŁƒŲ§Ł† Ł…ŁˆŁ‚Ų¹Łƒ ŁŠŲ­ŲŖŁˆŁŠ Ų¹Ł„Ł‰ ŁˆŲ§Ų­ŲÆŲŒ ŁŲ³ŲŖŲ±Ų§Ł‡ ŁŁŠ Ų¹Ł†ŁˆŲ§Ł† ŲŖŁ†Ł‚Ł„ Ł…ŁˆŁ‚Ų¹ŁŠ. + +Ų¹Ł†ŲÆŁ…Ų§ ŲŖŲ³Ų­ŲØ ŲŖŲ¹Ł„ŁŠŁ‚Ł‹Ų§ ŁŁŠ ŲŖŁ†ŲØŁŠŁ‡Ų§ŲŖŁƒ Ų„Ł„Ł‰ Ų§Ł„ŁŠŲ³Ų§Ų±ŲŒ Ł„Ł† ŲŖŲ±Ł‰ Ų®ŁŠŲ§Ų± "Ų³Ł„Ų© Ų§Ł„Ł…Ł‡Ł…Ł„Ų§ŲŖ" ŲØŲ¹ŲÆ Ų§Ł„Ų¢Ł†. ŲØŲÆŁ„Ų§Ł‹ Ł…Ł† Ų°Ł„ŁƒŲŒ Ų³ŲŖŲ±Ł‰ Ų®ŁŠŲ§Ų±Ų§ŲŖ "Ų¹ŲÆŁ… Ų§Ł„Ł…ŁˆŲ§ŁŁ‚Ų© Ų¹Ł„Ł‰ Ų§Ł„ŲŖŲ¹Ł„ŁŠŁ‚" Łˆ"Ų§Ł„Ł…ŁˆŲ§ŁŁ‚Ų© Ų¹Ł„Ł‰ Ų§Ł„ŲŖŲ¹Ł„ŁŠŁ‚". Ł†Ų­Ł† Ł…Ł† Ł†ŲŖŁˆŁ„Ł‰ Ų§Ł„Ł…ŁˆŲ§ŁŁ‚Ų©. diff --git a/fastlane/jetpack_metadata/ar-SA/subtitle.txt b/fastlane/jetpack_metadata/ar-SA/subtitle.txt index 004e1e386e9a..57a4981d2b19 100644 --- a/fastlane/jetpack_metadata/ar-SA/subtitle.txt +++ b/fastlane/jetpack_metadata/ar-SA/subtitle.txt @@ -1 +1 @@ -ŁˆŁˆŲ±ŲÆŲØŲ±ŁŠŲ³ Ų£Ų³Ų±Ų¹ ŁˆŲ£ŁƒŲ«Ų± Ų£Ł…Ų§Ł†Ł‹Ų§ \ No newline at end of file +ŁˆŁˆŲ±ŲÆŲØŲ±ŁŠŲ³ Ų£Ų³Ų±Ų¹ ŁˆŲ£ŁƒŲ«Ų± Ų£Ł…Ų§Ł†Ł‹Ų§ diff --git a/fastlane/jetpack_metadata/de-DE/keywords.txt b/fastlane/jetpack_metadata/de-DE/keywords.txt index fe3e7dd3ff5e..901b52992b73 100644 --- a/fastlane/jetpack_metadata/de-DE/keywords.txt +++ b/fastlane/jetpack_metadata/de-DE/keywords.txt @@ -1 +1 @@ -Social,Notizen,Jetpack,schreiben,Geotagging,Media,Blog,Website,Blogging,Tagebuch \ No newline at end of file +Social,Notizen,Jetpack,schreiben,Geotagging,Media,Blog,Website,Blogging,Tagebuch diff --git a/fastlane/jetpack_metadata/de-DE/release_notes.txt b/fastlane/jetpack_metadata/de-DE/release_notes.txt new file mode 100644 index 000000000000..63e33bfa9d0f --- /dev/null +++ b/fastlane/jetpack_metadata/de-DE/release_notes.txt @@ -0,0 +1,11 @@ +Wir haben eine kleine, aber sehr nĆ¼tzliche Ƅnderung am Block-Editor vorgenommen: Der Button ā€žBlock hinzufĆ¼genā€œ ist besser zu erkennen, wenn du den Editor zuerst ohne ausgewƤhlte Blƶcke ƶffnest. Zudem haben wir eine von drei Fehlerbenachrichtigungen entfernt, die angezeigt wurden, wenn ein Medien- oder Audioblock nicht hochgeladen werden konnteĀ ā€“ das war zu viel des Guten. + +Wenn du MenĆ¼eintrƤge neu anordnest, wirst du bemerken, dass wir einige Funktionen zur Barrierefreiheit beim VoiceOver-Erlebnis optimiert haben. Die Anweisungen und Hinweise sind klarer und die MenĆ¼hierarchie klingt logischer. + +Wir haben bei der Website-Erstellung eine neue Ansicht hinzugefĆ¼gt, auf der du den Intent fĆ¼r deine Website eingeben kannst. Diese Ansicht haben wir mit einer kleinen Benutzergruppe getestet. Daher glauben wir, dass sie dir auch gefallen wird. + +Bei der Web-Vorschau werden Benachrichtigungen am Ende des Bildschirms nicht mehr abgeschnitten, wenn deine Browser-Werkzeugleiste angezeigt wird. + +Ist ein Name wichtig? Nun, falls deine Website einen hat, wird er dir im Navigationstitel unter ā€žMeine Websiteā€œ angezeigt. + +Wenn du bei einem Kommentar in deinen Benachrichtigungen nach links wischst, wird dir nicht mehr die Option ā€žPapierkorbā€œ angezeigt. Stattdessen siehst du die Optionen ā€žKommentar zurĆ¼ckweisenā€œ und ā€žKommentar genehmigenā€œ. Genehmigt. diff --git a/fastlane/jetpack_metadata/de-DE/subtitle.txt b/fastlane/jetpack_metadata/de-DE/subtitle.txt index 152c5e10be9a..e120aff19d3d 100644 --- a/fastlane/jetpack_metadata/de-DE/subtitle.txt +++ b/fastlane/jetpack_metadata/de-DE/subtitle.txt @@ -1 +1 @@ -Schneller, sicherer, WordPress \ No newline at end of file +Schneller, sicherer, WordPress diff --git a/fastlane/jetpack_metadata/default/release_notes.txt b/fastlane/jetpack_metadata/default/release_notes.txt new file mode 100644 index 000000000000..16fdae8901ab --- /dev/null +++ b/fastlane/jetpack_metadata/default/release_notes.txt @@ -0,0 +1,11 @@ +We made a small but mighty change to the block editor: the ā€œAdd Blockā€ button is more visible when you first open the editor with no blocks selected. We also removed one of three error notifications when a media or audio block fails to uploadā€”it felt like overkill. + +Youā€™ll hear some accessibility tweaks in the VoiceOver experience when youā€™re rearranging menu items. Instructions and notices are clearer, and the menu hierarchy makes more sense out loud. + +We added a new screen to the site creation process where you can enter your siteā€™s intent. We tested this screen with a small group of users, and we think youā€™ll like it, too. + +Web previews wonā€™t cut off bottom-of-the-screen notifications when your browser toolbar is visible. + +Whatā€™s in a name? Well, if your site has one, youā€™ll see it in the My Site navigation title. + +When you swipe left on a comment in your Notifications, you wonā€™t see the ā€œTrashā€ option anymore. Instead youā€™ll see ā€œUnapprove Commentā€ and ā€œApprove Comment.ā€ We approve. diff --git a/fastlane/jetpack_metadata/es-ES/keywords.txt b/fastlane/jetpack_metadata/es-ES/keywords.txt index 2a7d98301043..bdc915e50305 100644 --- a/fastlane/jetpack_metadata/es-ES/keywords.txt +++ b/fastlane/jetpack_metadata/es-ES/keywords.txt @@ -1 +1 @@ -social,notas,jetpack,escritura,geoetiquetado,medios,blog,web,bloguear,diario \ No newline at end of file +social,notas,jetpack,escritura,geoetiquetado,medios,blog,web,bloguear,diario diff --git a/fastlane/jetpack_metadata/es-ES/release_notes.txt b/fastlane/jetpack_metadata/es-ES/release_notes.txt new file mode 100644 index 000000000000..1e8f909d6bb9 --- /dev/null +++ b/fastlane/jetpack_metadata/es-ES/release_notes.txt @@ -0,0 +1,11 @@ +Hemos realizado un cambio (pequeƱo, pero importante) en el editor de bloques: el botĆ³n "AƱadir bloque" estĆ” mĆ”s visible cuando abres el editor sin haber seleccionado ningĆŗn bloque. TambiĆ©n hemos eliminado una de las tres notificaciones de error que aparecen cuando no se puede cargar un bloque Medios o Audio. Era un poco excesivo. + +OirĆ”s algunos cambios de accesibilidad en la experiencia de VoiceOver cuando reorganices los elementos del menĆŗ. Las instrucciones y los avisos son mĆ”s claros, y la jerarquĆ­a del menĆŗ tiene mucho mĆ”s sentido. + +Hemos aƱadido una pantalla nueva al proceso de creaciĆ³n de sitios web. En ella puedes introducir el objetivo de tu sitio. Hemos probado la pantalla con un grupo reducido de usuarios y creemos que a ti tambiĆ©n te va a gustar. + +Las vistas previas web no cortarĆ”n las notificaciones que aparecen en la parte inferior de la pantalla cuando la barra de herramientas del navegador estĆ” visible. + +ĀæQuĆ© importa el nombre? Bueno, si tu sitio tiene uno, lo verĆ”s en el tĆ­tulo de navegaciĆ³n de Mi sitio. + +En Notificaciones, al deslizar el dedo hacia la izquierda sobre un comentario, ya no verĆ”s la opciĆ³n "Papelera". En su lugar te aparecerĆ” "Desaprobar comentario" y "Aprobar comentario". Aprobamos. diff --git a/fastlane/jetpack_metadata/es-ES/subtitle.txt b/fastlane/jetpack_metadata/es-ES/subtitle.txt index 096bc3fb5117..8f0a70a23e1b 100644 --- a/fastlane/jetpack_metadata/es-ES/subtitle.txt +++ b/fastlane/jetpack_metadata/es-ES/subtitle.txt @@ -1 +1 @@ -WordPress mĆ”s rĆ”pido y seguro \ No newline at end of file +WordPress mĆ”s rĆ”pido y seguro diff --git a/fastlane/jetpack_metadata/fr-FR/keywords.txt b/fastlane/jetpack_metadata/fr-FR/keywords.txt index 8908b715157c..514a81ed14a7 100644 --- a/fastlane/jetpack_metadata/fr-FR/keywords.txt +++ b/fastlane/jetpack_metadata/fr-FR/keywords.txt @@ -1 +1 @@ -social,notes,jetpack,rĆ©daction,gĆ©olocalisation,mĆ©dia,blog,site web,blogging,journal \ No newline at end of file +social,notes,jetpack,rĆ©daction,gĆ©olocalisation,mĆ©dia,blog,site web,blogging,journal diff --git a/fastlane/jetpack_metadata/fr-FR/release_notes.txt b/fastlane/jetpack_metadata/fr-FR/release_notes.txt new file mode 100644 index 000000000000..ab025f8e6723 --- /dev/null +++ b/fastlane/jetpack_metadata/fr-FR/release_notes.txt @@ -0,0 +1,11 @@ +Nous avons apportĆ© un petit changement, mais non des moindres, Ć  lā€™Ć©diteur de blocsĀ : le bouton Ā«Ā Ajouter un blocĀ Ā» gagne en visibilitĆ© lors de la premiĆØre ouverture de lā€™Ć©diteur, lorsquā€™aucun bloc nā€™est encore sĆ©lectionnĆ©. Nous avons Ć©galement supprimĆ© lā€™une des trois notifications dā€™erreur (cā€™Ć©tait un peu exagĆ©rĆ©) lors de lā€™Ć©chec de chargement dā€™un bloc mĆ©dia ou audio. + +Vous entendrez certains changements dans lā€™expĆ©rience dā€™accessibilitĆ© VoiceOver lors de la rĆ©organisation des Ć©lĆ©ments de menu. Les instructions et notifications sont plus claires, et la hiĆ©rarchie du menu a plus de sens Ć  voix haute. + +Nous avons ajoutĆ© un nouvel Ć©cran au processus de crĆ©ation de site, oĆ¹ vous pouvez saisir lā€™intention de ce dernier. Nous avons testĆ© cet Ć©cran auprĆØs dā€™un petit groupe dā€™utilisateurs - il devrait aussi vous plaireĀ ! + +Les aperƧus Web ne couperont pas les notifications au bas de lā€™Ć©cran lorsque la barre dā€™outils de votre navigateur sera visible. + +Un nom bien choisi peut ĆŖtre un rĆ©el atout. Si vous avez donnĆ© un nom Ć  votre site, vous le verrez dans le titre de navigation de lā€™Ć©cran Mon site. + +Lorsque vous effectuerez un balayage vers la gauche sur un commentaire dans vos notifications, vous ne verrez plus lā€™option Ā«Ā DĆ©placer vers la corbeilleĀ Ā», mais Ā«Ā DĆ©sapprouver le commentaireĀ Ā» et Ā«Ā Approuver le commentaireĀ Ā». On approuveĀ ! diff --git a/fastlane/jetpack_metadata/fr-FR/subtitle.txt b/fastlane/jetpack_metadata/fr-FR/subtitle.txt index 637264694425..506bea0cce10 100644 --- a/fastlane/jetpack_metadata/fr-FR/subtitle.txt +++ b/fastlane/jetpack_metadata/fr-FR/subtitle.txt @@ -1 +1 @@ -WordPress plus sĆ»r et rapide \ No newline at end of file +WordPress plus sĆ»r et rapide diff --git a/fastlane/jetpack_metadata/he/keywords.txt b/fastlane/jetpack_metadata/he/keywords.txt index 9faeb7428160..de9a2de88ac8 100644 --- a/fastlane/jetpack_metadata/he/keywords.txt +++ b/fastlane/jetpack_metadata/he/keywords.txt @@ -1 +1 @@ -×Øש×Ŗו×Ŗ חב×Ø×Ŗיו×Ŗ,פ×Ŗקים,Jetpack,כ×Ŗיבה,×Ŗיוג גיאוג×Øפי,מדיה,בלוג,א×Ŗ×Ø,כ×Ŗיב×Ŗ בלוג,כ×Ŗיב×Ŗ יומן \ No newline at end of file +×Øש×Ŗו×Ŗ חב×Ø×Ŗיו×Ŗ,פ×Ŗקים,Jetpack,כ×Ŗיבה,×Ŗיוג גיאוג×Øפי,מדיה,בלוג,א×Ŗ×Ø,כ×Ŗיב×Ŗ בלוג,כ×Ŗיב×Ŗ יומן diff --git a/fastlane/jetpack_metadata/he/release_notes.txt b/fastlane/jetpack_metadata/he/release_notes.txt new file mode 100644 index 000000000000..fd7370aa7529 --- /dev/null +++ b/fastlane/jetpack_metadata/he/release_notes.txt @@ -0,0 +1,11 @@ +ביצענו שינוי קטן אך עוצמ×Ŗי בעו×Øך הבלוקים: ה×Ŗצוגה של הכפ×Ŗו×Ø 'להוהיף בלוק' ב×Øו×Øה יו×Ŗ×Ø ×›××©×Ø ×¤×•×Ŗחים ל×Øאשונה א×Ŗ העו×Øך ללא בלוקים שנבח×Øו. ×”×”×Øנו גם אח×Ŗ משלוש הודעו×Ŗ השגיאה שמופיעו×Ŗ כאש×Ø × ×›×©×œ×Ŗ הטעינה של בלוק מדיה או אודיו ā€“ חשבנו ששלוש היו יו×Ŗ×Ø ×ž×“×™. + +אפש×Ø ×œ×©×ž×•×¢ גם כמה שינויים בנגישו×Ŗ בחוויי×Ŗ השימוש עם VoiceOver כאש×Ø ×ž×©× ×™× א×Ŗ הד×Ø ×”×¤×Øיטים ב×Ŗפ×Øיט. ההו×Øאו×Ŗ וההודעו×Ŗ ב×Øו×Øו×Ŗ יו×Ŗ×Ø ×•×”×”×™×Ø×Øכיה של ה×Ŗפ×Øיט הגיוני×Ŗ יו×Ŗ×Ø ×œ×§×Øיאה בקול. + +הוהפנו מהך חדש ל×Ŗהליך יצי×Ø×Ŗ הא×Ŗ×Ø ×•×›×¢×Ŗ אפש×Ø ×œ×”×–×™×Ÿ א×Ŗ הכוונה של הא×Ŗ×Ø ×©×œ×š. בדקנו א×Ŗ המהך הזה מול קבוצה קטנה של מש×Ŗמשים ואנחנו חושבים שהוא ימצא חן גם בעיניך. + +×Ŗצוגו×Ŗ מקדימו×Ŗ לפ×Ø×™×”×Ŗ אינט×Øנט כב×Ø ×œ× חו×Ŗכו×Ŗ הודעו×Ŗ שמוצגו×Ŗ ב×Ŗח×Ŗי×Ŗ המהך כאש×Ø ×”×Øגל הכלים של הדפדפן מוצג. + +איפה שמנו א×Ŗ השם? אם הענק×Ŗ לא×Ŗ×Ø ×©×œ×š שם, הוא יוצג בכו×Ŗ×Ø×Ŗ הניווט של 'הא×Ŗ×Ø ×©×œ×™'. + +כאש×Ø ×¢×•×ž×“×™× על ×Ŗגובה ומחליקים שמאלה במקטע 'הודעו×Ŗ', לא ×Ŗופיע עוד האפש×Øו×Ŗ 'להעבי×Ø ×œ×¤×—'. במקום, יופיעו האפש×Øויו×Ŗ 'לבטל אישו×Ø ×Ŗגובה' ו'לאש×Ø ×Ŗגובה'. אנחנו מאוש×Øים. diff --git a/fastlane/jetpack_metadata/he/subtitle.txt b/fastlane/jetpack_metadata/he/subtitle.txt index aaa145748a90..978123444816 100644 --- a/fastlane/jetpack_metadata/he/subtitle.txt +++ b/fastlane/jetpack_metadata/he/subtitle.txt @@ -1 +1 @@ -שי×Øו×Ŗ מהי×Ø ×•×‘×˜×•×— ב-WordPress \ No newline at end of file +שי×Øו×Ŗ מהי×Ø ×•×‘×˜×•×— ב-WordPress diff --git a/fastlane/jetpack_metadata/id/keywords.txt b/fastlane/jetpack_metadata/id/keywords.txt index c99a0f7359d1..b9d49ea7b45e 100644 --- a/fastlane/jetpack_metadata/id/keywords.txt +++ b/fastlane/jetpack_metadata/id/keywords.txt @@ -1 +1 @@ -sosial,catatan,jetpack,tulisan,geotagging,media,blog,situsweb,blog,jurnal \ No newline at end of file +sosial,catatan,jetpack,tulisan,geotagging,media,blog,situsweb,blog,jurnal diff --git a/fastlane/jetpack_metadata/id/release_notes.txt b/fastlane/jetpack_metadata/id/release_notes.txt new file mode 100644 index 000000000000..3ed8eb02856e --- /dev/null +++ b/fastlane/jetpack_metadata/id/release_notes.txt @@ -0,0 +1,11 @@ +Kami membuat perubahan kecil tetapi signifikan pada editor blok: ketika Anda membuka editor untuk pertama kalinya dan belum memilih blok, tombol ā€œTambahkan Blokā€ akan tampak lebih jelas. Kami juga menghapus salah satu dari tiga pemberitahuan error jika unggahan blok media atau audio gagal. Tiga rasanya terlalu berlebihan. + +Anda akan mendengar perubahan aksesibilitas dalam pengalaman VoiceOver ketika menyusun ulang item menu. Instruksi dan pemberitahuan lebih jelas dan pembacaan hierarki menu lebih mudah dimengerti. + +Kami menambahkan layar baru ke proses pembuatan situs sehingga Anda dapat memasukkan tujuan situs. Kami sudah menguji coba layar ini bersama sejumlah kecil pengguna dan kami rasa Anda juga akan menyukainya. + +Pratinjau situs tidak akan memotong pemberitahuan di bawah layar ketika bilah peralatan browser Anda terlihat. + +Apalah arti sebuah nama? Namun, kalaupun situs Anda mempunyai nama, Anda dapat melihatnya di judul navigasi Situs Saya. + +Jika menggeser komentar ke kiri pada Pemberitahuan, Anda tidak akan lagi melihat pilihan ā€œBuangā€. Sebagai gantinya, Anda akan melihat "Tolak Komentar" dan "Setujui Komentar." Ini lebih baik. Anda setuju? diff --git a/fastlane/jetpack_metadata/id/subtitle.txt b/fastlane/jetpack_metadata/id/subtitle.txt index b6c553d0dbdd..b1fe80366827 100644 --- a/fastlane/jetpack_metadata/id/subtitle.txt +++ b/fastlane/jetpack_metadata/id/subtitle.txt @@ -1 +1 @@ -WordPress lebih cepat dan aman \ No newline at end of file +WordPress lebih cepat dan aman diff --git a/fastlane/jetpack_metadata/it/keywords.txt b/fastlane/jetpack_metadata/it/keywords.txt index bc4dbdc3454c..14834306e971 100644 --- a/fastlane/jetpack_metadata/it/keywords.txt +++ b/fastlane/jetpack_metadata/it/keywords.txt @@ -1 +1 @@ -social,note,jetpack,scrittura,geotagging,media,blog,sito web,blogging,periodico \ No newline at end of file +social,note,jetpack,scrittura,geotagging,media,blog,sito web,blogging,periodico diff --git a/fastlane/jetpack_metadata/it/release_notes.txt b/fastlane/jetpack_metadata/it/release_notes.txt new file mode 100644 index 000000000000..3082a1220969 --- /dev/null +++ b/fastlane/jetpack_metadata/it/release_notes.txt @@ -0,0 +1,11 @@ +Abbiamo apportato alcune piccole ma significative modifiche all'editor a blocchi: il pulsante "Aggiungi blocco" ĆØ ora visibile alla prima apertura dell'editor senza i blocchi selezionati. Abbiamo anche rimosso una delle tre notifiche di errore quando un blocco Media o Audio non si caricava: sembrava eccessivo. + +Sentirai alcune ottimizzazioni all'accessibilitĆ  nell'esperienza VoiceOver durante la riorganizzazione degli elementi di menu. Le istruzioni e gli avvisi sono piĆ¹ chiari e la gerarchia del menu ha piĆ¹ senso ad alta voce. + +Abbiamo aggiunto una nuova schermata al processo di creazione del sito in cui puoi inserire lo scopo del sito. Abbiamo provato questa schermata con un piccolo gruppo di utenti e pensiamo potrĆ  piacere anche a te. + +Le anteprime web non interromperanno le notifiche nella parte inferiore dello schermo quando la barra degli strumenti del browser ĆØ visibile. + +Cosa c'ĆØ in un nome? Se il sito ne ha uno, lo vedrai nel titolo della navigazione Il mio sito. + +Quando scorri verso sinistra su un commento nelle Notifiche, non vedrai piĆ¹ l'opzione "Sposta nel cestino". Vedrai invece "Rimuovi l'approvazione del commento" e "Approva commento". Approviamo. diff --git a/fastlane/jetpack_metadata/it/subtitle.txt b/fastlane/jetpack_metadata/it/subtitle.txt index 83793d5cb839..e1ece21b10c9 100644 --- a/fastlane/jetpack_metadata/it/subtitle.txt +++ b/fastlane/jetpack_metadata/it/subtitle.txt @@ -1 +1 @@ -WordPress piĆ¹ veloce e sicuro \ No newline at end of file +WordPress piĆ¹ veloce e sicuro diff --git a/fastlane/jetpack_metadata/ja/keywords.txt b/fastlane/jetpack_metadata/ja/keywords.txt index cb8ea0513482..41802ec998d0 100644 --- a/fastlane/jetpack_metadata/ja/keywords.txt +++ b/fastlane/jetpack_metadata/ja/keywords.txt @@ -1 +1 @@ -ć‚½ćƒ¼ć‚·ćƒ£ćƒ«,ćƒ”ćƒ¢,jetpack,ꊕēØæ,ć‚øć‚Ŗć‚æć‚®ćƒ³ć‚°,ćƒ”ćƒ‡ć‚£ć‚¢,惖惭悰,ć‚µć‚¤ćƒˆ,ćƒ–ćƒ­ć‚°ä½œęˆ,ę—„čؘ \ No newline at end of file +ć‚½ćƒ¼ć‚·ćƒ£ćƒ«,ćƒ”ćƒ¢,jetpack,ꊕēØæ,ć‚øć‚Ŗć‚æć‚®ćƒ³ć‚°,ćƒ”ćƒ‡ć‚£ć‚¢,惖惭悰,ć‚µć‚¤ćƒˆ,ćƒ–ćƒ­ć‚°ä½œęˆ,ę—„čؘ diff --git a/fastlane/jetpack_metadata/ja/subtitle.txt b/fastlane/jetpack_metadata/ja/subtitle.txt index 766f272a8516..d07da75d61d8 100644 --- a/fastlane/jetpack_metadata/ja/subtitle.txt +++ b/fastlane/jetpack_metadata/ja/subtitle.txt @@ -1 +1 @@ -ć‚ˆć‚Šé€Ÿćå®‰å…ØćŖ WordPress \ No newline at end of file +ć‚ˆć‚Šé€Ÿćå®‰å…ØćŖ WordPress diff --git a/fastlane/jetpack_metadata/ko/keywords.txt b/fastlane/jetpack_metadata/ko/keywords.txt index df5678052d25..aaf780e5b01c 100644 --- a/fastlane/jetpack_metadata/ko/keywords.txt +++ b/fastlane/jetpack_metadata/ko/keywords.txt @@ -1 +1 @@ -ģ†Œģ…œ,ė…øķŠø,ģ ÆķŒ©,ģ“°źø°,ģœ„ģ¹˜ ķƒœź·ø,ėÆøė””ģ–“,ėø”ė”œź·ø,ģ›¹ģ‚¬ģ“ķŠø,ėø”ė”œź¹…,ģ €ė„ \ No newline at end of file +ģ†Œģ…œ,ė…øķŠø,ģ ÆķŒ©,ģ“°źø°,ģœ„ģ¹˜ ķƒœź·ø,ėÆøė””ģ–“,ėø”ė”œź·ø,ģ›¹ģ‚¬ģ“ķŠø,ėø”ė”œź¹…,ģ €ė„ diff --git a/fastlane/jetpack_metadata/ko/release_notes.txt b/fastlane/jetpack_metadata/ko/release_notes.txt new file mode 100644 index 000000000000..3f33ae43d1bd --- /dev/null +++ b/fastlane/jetpack_metadata/ko/release_notes.txt @@ -0,0 +1,11 @@ +ėø”ė” ķŽøģ§‘źø°ģ— ģž‘ģ§€ė§Œ ź°•ė „ķ•œ ė³€ź²½ ģ‚¬ķ•­ģ„ ģ ģš©ķ–ˆģŠµė‹ˆė‹¤. ėø”ė”ģ„ ģ„ ķƒķ•˜ģ§€ ģ•Šź³  ķŽøģ§‘źø°ė„¼ ģ²˜ģŒ ģ—“ ė•Œ "ėø”ė” ģ¶”ź°€" ė²„ķŠ¼ģ“ ė” ģž˜ ė³“ģž…ė‹ˆė‹¤. ė˜ķ•œ ėÆøė””ģ–“ ė˜ėŠ” ģ˜¤ė””ģ˜¤ ėø”ė”ģ“ ģ—…ė”œė“œė˜ģ§€ ģ•Šģ„ ė•Œ ķ‘œģ‹œė˜ėŠ” 3ź°€ģ§€ ģ˜¤ė„˜ ģ•Œė¦¼ ģ¤‘ ģ§€ė‚˜ģ¹˜ė‹¤ź³  ėŠź»“ģ”Œė˜ ķ•˜ė‚˜ė„¼ ģ œź±°ķ–ˆģŠµė‹ˆė‹¤. + +ė©”ė‰“ ķ•­ėŖ©ģ„ ģž¬ģ •ė ¬ķ•  ė•Œ VoiceOver ķ™˜ź²½ģ˜ ģ¼ė¶€ ģ ‘ź·¼ģ„±ģ“ ģ”°ģ •ė©ė‹ˆė‹¤. ģ§€ģ¹Øź³¼ ź³µģ§€ź°€ ė” ėŖ…ķ™•ķ•˜ź³ , ė©”ė‰“ ź³„ģøµźµ¬ģ”°ź°€ ķ›Øģ”¬ ģž˜ ģ“ķ•“ė©ė‹ˆė‹¤. + +ģ‚¬ģ“ķŠøģ˜ ģ˜ė„ė„¼ ģž…ė „ķ•  ģˆ˜ ģžˆėŠ” ģƒˆ ķ™”ė©“ģ„ ģ‚¬ģ“ķŠø ģƒģ„± ķ”„ė”œģ„øģŠ¤ģ— ģ¶”ź°€ķ–ˆģŠµė‹ˆė‹¤. ģž‘ģ€ ģ‚¬ģš©ģž ź·øė£¹ģœ¼ė”œ ģ“ ķ™”ė©“ģ„ ķ…ŒģŠ¤ķŠøķ–ˆģœ¼ė©° ė§ˆģŒģ— ė“œģ‹œė¦¬ė¼ ģƒź°ķ•©ė‹ˆė‹¤. + +ģ›¹ ėÆøė¦¬ė³“źø°ģ—ģ„œ ėøŒė¼ģš°ģ € ė„źµ¬ ėŖØģŒģ“ ķ‘œģ‹œė  ė•Œ ķ™”ė©“ ķ•˜ė‹Ø ģ•Œė¦¼ģ“ ģž˜ė¦¬ģ§€ ģ•ŠģŠµė‹ˆė‹¤. + +ģ“ė¦„ģ€ ģ–“ė–»ź²Œ ė˜ė‚˜ģš”? ģ‚¬ģ“ķŠøģ— ģ“ė¦„ģ“ ģžˆģœ¼ė©“ ė‚“ ģ‚¬ģ“ķŠø ķƒģƒ‰ ģ œėŖ©ģ“ ķ‘œģ‹œė©ė‹ˆė‹¤. + +ģ•Œė¦¼ģ—ģ„œ ėŒ“źø€ģ„ ģ™¼ģŖ½ģœ¼ė”œ ģ‚“ģ§ ė°€ ė•Œ ģ“ģ œėŠ” "ķœ“ģ§€ķ†µ" ģ˜µģ…˜ģ“ ķ‘œģ‹œė˜ģ§€ ģ•ŠģŠµė‹ˆė‹¤. ź·ø ėŒ€ģ‹ ģ— "ėŒ“źø€ ėÆøģŠ¹ģø"ź³¼ "ėŒ“źø€ ģŠ¹ģø"ģ“ ķ‘œģ‹œė©ė‹ˆė‹¤. ģžė™ģœ¼ė”œ ģŠ¹ģøė©ė‹ˆė‹¤. diff --git a/fastlane/jetpack_metadata/ko/subtitle.txt b/fastlane/jetpack_metadata/ko/subtitle.txt index eb95844473e3..62c3a21f1a73 100644 --- a/fastlane/jetpack_metadata/ko/subtitle.txt +++ b/fastlane/jetpack_metadata/ko/subtitle.txt @@ -1 +1 @@ -ė” ė¹ ė„“ź³  ė” ģ•ˆģ „ķ•œ ģ›Œė“œķ”„ė ˆģŠ¤ \ No newline at end of file +ė” ė¹ ė„“ź³  ė” ģ•ˆģ „ķ•œ ģ›Œė“œķ”„ė ˆģŠ¤ diff --git a/fastlane/jetpack_metadata/nl-NL/keywords.txt b/fastlane/jetpack_metadata/nl-NL/keywords.txt index 095835fc2a38..6172a6792301 100644 --- a/fastlane/jetpack_metadata/nl-NL/keywords.txt +++ b/fastlane/jetpack_metadata/nl-NL/keywords.txt @@ -1 +1 @@ -social, notities, jetpack, schrijven, geotagging, media, blog, site, bloggen, dagboek \ No newline at end of file +social, notities, jetpack, schrijven, geotagging, media, blog, site, bloggen, dagboek diff --git a/fastlane/jetpack_metadata/nl-NL/release_notes.txt b/fastlane/jetpack_metadata/nl-NL/release_notes.txt new file mode 100644 index 000000000000..4637ce371f6a --- /dev/null +++ b/fastlane/jetpack_metadata/nl-NL/release_notes.txt @@ -0,0 +1,11 @@ +We hebben een kleine maar toffe aanpassing gedaan aan de blokeditor: de knop 'Blokken toevoegen' is nu duidelijker weergegeven als je de editor opent wanneer er nog geen blokken zijn geselecteerd. Daarnaast hebben we een van de drie foutmeldingen verwijderd die bij een mislukte upload van een media- of audioblok verschijnt. Deze leek overbodig. + +Je zult enkele kleine veranderingen aan de toegankelijkheid merken in de VoiceOver wanneer je delen van het menu opnieuw ordent. Instructies en berichtgevingen zijn duidelijker en de menuhiĆ«rarchie is logischer wanneer deze wordt uitgesproken. + +We hebben een nieuw scherm aan het aanmaakproces van websites toegevoegd, waar je het doel van je site kunt invoeren. We hebben dit scherm getest bij een kleine groep gebruikers en denken dat je dit ook leuk zult vinden. + +Voorbeeldweergaven van websites snijden meldingen onderaan het scherm niet meer af wanneer de browserwerkbalk open staat. + +Shakespeare schreef ooit: What's in a name? Nou, als je site een naam heeft, zie je deze in de navigatietitel bij Mijn site. + +Als je naar links veegt bij een opmerking in je meldingen, zie je geen optie 'Prullenbak' meer. In plaats daarvan zie je 'Opmerking afkeuren' en 'Opmerking goedkeuren'. We keuren het goed. diff --git a/fastlane/jetpack_metadata/nl-NL/subtitle.txt b/fastlane/jetpack_metadata/nl-NL/subtitle.txt index 1214c0b9253f..4279bb841036 100644 --- a/fastlane/jetpack_metadata/nl-NL/subtitle.txt +++ b/fastlane/jetpack_metadata/nl-NL/subtitle.txt @@ -1 +1 @@ -Sneller, veiliger WordPress \ No newline at end of file +Sneller, veiliger WordPress diff --git a/fastlane/jetpack_metadata/pt-BR/keywords.txt b/fastlane/jetpack_metadata/pt-BR/keywords.txt index f2276671df81..0c858028c21b 100644 --- a/fastlane/jetpack_metadata/pt-BR/keywords.txt +++ b/fastlane/jetpack_metadata/pt-BR/keywords.txt @@ -1 +1 @@ -social,notas,jetpack,escrever,geotag,mĆ­dia,blog,site,blogar,diĆ”rio \ No newline at end of file +social,notas,jetpack,escrever,geotag,mĆ­dia,blog,site,blogar,diĆ”rio diff --git a/fastlane/jetpack_metadata/pt-BR/release_notes.txt b/fastlane/jetpack_metadata/pt-BR/release_notes.txt new file mode 100644 index 000000000000..b35c82c45659 --- /dev/null +++ b/fastlane/jetpack_metadata/pt-BR/release_notes.txt @@ -0,0 +1,11 @@ +Fizemos uma alteraĆ§Ć£o pequena, mas importante no editor de bloco: o botĆ£o "Adicionar bloco" agora estĆ” mais visĆ­vel quando vocĆŖ abre o editor sem selecionar blocos. TambĆ©m removemos uma das trĆŖs notificaƧƵes de erro quando hĆ” uma falha ao fazer upload do bloco de mĆ­dia ou Ć”udio, pois parecia um excesso. + +VocĆŖ perceberĆ” alguns ajustes de acessibilidade na experiĆŖncia de VoiceOver quando reorganizar itens do menu. As instruƧƵes e os avisos estĆ£o mais claros, e a hierarquia de menu faz mais sentido quando lida em voz alta. + +Adicionamos uma nova tela ao processo de criaĆ§Ć£o de sites, em que Ć© possĆ­vel informar a intenĆ§Ć£o do site. NĆ³s testamos essa tela com um grupo pequeno de usuĆ”rios e achamos que vocĆŖ tambĆ©m vai gostar. + +As visualizaƧƵes da web nĆ£o cortarĆ£o notificaƧƵes na parte inferior da tela quando a barra de ferramentas do navegador estiver visĆ­vel. + +O que hĆ” em um nome? Bem, se seu site tiver um, vocĆŖ o verĆ” no tĆ­tulo de navegaĆ§Ć£o Meu site. + +Quando vocĆŖ arrastar para a esquerda em comentĆ”rios nas NotificaƧƵes, nĆ£o verĆ” mais a opĆ§Ć£o Lixeira. Em vez disso, vocĆŖ verĆ” "Desaprovar comentĆ”rio" e "Aprovar comentĆ”rio". NĆ³s aprovamos. diff --git a/fastlane/jetpack_metadata/pt-BR/subtitle.txt b/fastlane/jetpack_metadata/pt-BR/subtitle.txt index 8500dd6d16f5..13a1ead232fd 100644 --- a/fastlane/jetpack_metadata/pt-BR/subtitle.txt +++ b/fastlane/jetpack_metadata/pt-BR/subtitle.txt @@ -1 +1 @@ -O WordPress mais Ć”gil e seguro \ No newline at end of file +O WordPress mais Ć”gil e seguro diff --git a/fastlane/jetpack_metadata/ru/keywords.txt b/fastlane/jetpack_metadata/ru/keywords.txt index 5c5179cad3fb..a6fb60ed9036 100644 --- a/fastlane/jetpack_metadata/ru/keywords.txt +++ b/fastlane/jetpack_metadata/ru/keywords.txt @@ -1 +1 @@ -сŠ¾Ń†ŠøŠ°Š»ŃŒŠ½Ń‹Šµ сŠµŃ‚Šø,Š·Š°Š¼ŠµŃ‚ŠŗŠø,jetpack,Š±Š»Š¾Š³,Š²ŠµŠ±-сŠ°Š¹Ń‚,Š¼ŠµŠ“ŠøŠ°,стŠ°Ń‚ŃŒŠø,Š³ŠµŠ¾Š»Š¾ŠŗŠ°Ń†Šøя,Š±Š»Š¾Š³Š³ŠøŠ½Š³ \ No newline at end of file +сŠ¾Ń†ŠøŠ°Š»ŃŒŠ½Ń‹Šµ сŠµŃ‚Šø,Š·Š°Š¼ŠµŃ‚ŠŗŠø,jetpack,Š±Š»Š¾Š³,Š²ŠµŠ±-сŠ°Š¹Ń‚,Š¼ŠµŠ“ŠøŠ°,стŠ°Ń‚ŃŒŠø,Š³ŠµŠ¾Š»Š¾ŠŗŠ°Ń†Šøя,Š±Š»Š¾Š³Š³ŠøŠ½Š³ diff --git a/fastlane/jetpack_metadata/ru/release_notes.txt b/fastlane/jetpack_metadata/ru/release_notes.txt new file mode 100644 index 000000000000..c6e7b0c5a525 --- /dev/null +++ b/fastlane/jetpack_metadata/ru/release_notes.txt @@ -0,0 +1,11 @@ +ŠœŃ‹ Š²Š½ŠµŃŠ»Šø Š½ŠµŠ±Š¾Š»ŃŒŃˆŠ¾Šµ, Š½Š¾ Š²Š°Š¶Š½Š¾Šµ ŠøŠ·Š¼ŠµŠ½ŠµŠ½ŠøŠµ Š² рŠµŠ“Š°ŠŗтŠ¾Ń€ Š±Š»Š¾ŠŗŠ¾Š²: ŠŗŠ½Š¾ŠæŠŗŠ° "Š”Š¾Š±Š°Š²Šøть Š±Š»Š¾Šŗ" стŠ°Š»Š° Š»ŃƒŃ‡ŃˆŠµ Š²ŠøŠ“Š½Š° ŠæрŠø Š¾Ń‚ŠŗрытŠøŠø рŠµŠ“Š°ŠŗтŠ¾Ń€Š° Š±ŠµŠ· Š²Ń‹Š±Ń€Š°Š½Š½Ń‹Ń… Š±Š»Š¾ŠŗŠ¾Š². ŠšŃ€Š¾Š¼Šµ тŠ¾Š³Š¾, Š¼Ń‹ уŠ“Š°Š»ŠøŠ»Šø Š¾Š“Š½Š¾ ŠøŠ· трёх уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠ¹ Š¾Š± Š¾ŃˆŠøŠ±ŠŗŠµ ŠæрŠø Š½ŠµŃƒŃŠæŠµŃˆŠ½Š¾Š¹ Š²Ń‹Š³Ń€ŃƒŠ·ŠŗŠµ Š¼ŠµŠ“ŠøŠ°- ŠøŠ»Šø Š°ŃƒŠ“ŠøŠ¾Š±Š»Š¾ŠŗŠ°, тŠ°Šŗ ŠŗŠ°Šŗ Š¾Š½Š¾ Š±Ń‹Š»Š¾ ŠøŠ·Š±Ń‹Ń‚Š¾Ń‡Š½Ń‹Š¼. + +Š’Ń‹ усŠ»Ń‹ŃˆŠøтŠµ Š½ŠµŠŗŠ¾Ń‚Š¾Ń€Ń‹Šµ ŠøŠ·Š¼ŠµŠ½ŠµŠ½Šøя Š² ŠøŠ½Ń‚ŠµŃ€Ń„ŠµŠ¹ŃŠµ VoiceOver Š“Š»Ń сŠ»Š°Š±Š¾Š²ŠøŠ“ящŠøх, ŠŗŠ¾Š³Š“Š° Š±ŃƒŠ“ŠµŃ‚Šµ Š¼ŠµŠ½ŃŃ‚ŃŒ ŠæŠ¾Ń€ŃŠ“Š¾Šŗ эŠ»ŠµŠ¼ŠµŠ½Ń‚Š¾Š² Š¼ŠµŠ½ŃŽ. Š˜Š½ŃŃ‚Ń€ŃƒŠŗцŠøŠø Šø уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½Šøя стŠ°Š»Šø Š±Š¾Š»ŠµŠµ Š½Š°Š³Š»ŃŠ“Š½Ń‹Š¼Šø, Š° ŠøŠµŃ€Š°Ń€Ń…Šøя Š¼ŠµŠ½ŃŽĀ ā€” Š±Š¾Š»ŠµŠµ Š»Š¾Š³ŠøчŠ½Š¾Š¹. + +ŠœŃ‹ Š“Š¾Š±Š°Š²ŠøŠ»Šø Š½Š¾Š²Ń‹Š¹ эŠŗрŠ°Š½ Š² ŠæрŠ¾Ń†ŠµŃŃ сŠ¾Š·Š“Š°Š½Šøя сŠ°Š¹Ń‚Š°, Š½Š° ŠŗŠ¾Ń‚Š¾Ń€Š¾Š¼ Š¼Š¾Š¶Š½Š¾ уŠŗŠ°Š·Š°Ń‚ŃŒ ŠæрŠµŠ“Š½Š°Š·Š½Š°Ń‡ŠµŠ½ŠøŠµ сŠ°Š¹Ń‚Š°. Š­ŠŗрŠ°Š½ Š±Ń‹Š» ŠæрŠ¾Ń‚ŠµŃŃ‚ŠøрŠ¾Š²Š°Š½ Š½ŠµŠ±Š¾Š»ŃŒŃˆŠ¾Š¹ Š³Ń€ŃƒŠæŠæŠ¾Š¹ ŠæŠ¾Š»ŃŒŠ·Š¾Š²Š°Ń‚ŠµŠ»ŠµŠ¹, Šø Š¼Ń‹ Š½Š°Š“ŠµŠµŠ¼ŃŃ, чтŠ¾ Š²Š°Š¼ Š¾Š½ тŠ°ŠŗŠ¶Šµ ŠæŠ¾Š½Ń€Š°Š²Šøтся. + +ŠžŠŗŠ½Š¾ ŠæрŠµŠ“Š²Š°Ń€ŠøтŠµŠ»ŃŒŠ½Š¾Š³Š¾ ŠæрŠ¾ŃŠ¼Š¾Ń‚Ń€Š° Š²ŠµŠ±-стрŠ°Š½Šøц Š½Šµ усŠµŠŗŠ°ŠµŃ‚ уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½Šøя Š² Š½ŠøŠ¶Š½ŠµŠ¹ чŠ°ŃŃ‚Šø эŠŗрŠ°Š½Š° ŠæрŠø Š¾Ń‚Š¾Š±Ń€Š°Š¶ŠµŠ½ŠøŠø ŠæŠ°Š½ŠµŠ»Šø ŠøŠ½ŃŃ‚Ń€ŃƒŠ¼ŠµŠ½Ń‚Š¾Š² Š±Ń€Š°ŃƒŠ·ŠµŃ€Š°. + +Š§Ń‚Š¾ Š“Š°Ń‘Ń‚ Š½Š°Š·Š²Š°Š½ŠøŠµ? Š•ŃŠ»Šø у Š²Š°ŃˆŠµŠ³Š¾ сŠ°Š¹Ń‚Š° ŠµŃŃ‚ŃŒ Š½Š°Š·Š²Š°Š½ŠøŠµ, Š¾Š½Š¾ Š¾Ń‚Š¾Š±Ń€Š°Š¶Š°ŠµŃ‚ся Š² Š·Š°Š³Š¾Š»Š¾Š²ŠŗŠµ Š¾ŠŗŠ½Š° Š½Š°Š²ŠøŠ³Š°Ń†ŠøŠø "ŠœŠ¾Š¹ сŠ°Š¹Ń‚". + +ŠŸŃ€Šø сŠ¼Š°Ń…ŠøŠ²Š°Š½ŠøŠø ŠŗŠ¾Š¼Š¼ŠµŠ½Ń‚Š°Ń€Šøя Š²Š»ŠµŠ²Š¾ Š² рŠ°Š·Š“ŠµŠ»Šµ уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠ¹ Š±Š¾Š»ŃŒŃˆŠµ Š½Šµ Š¾Ń‚Š¾Š±Ń€Š°Š¶Š°ŠµŃ‚ся Š¾ŠæцŠøя "ŠšŠ¾Ń€Š·ŠøŠ½Š°". Š’Š¼ŠµŃŃ‚Š¾ Š½ŠµŠ³Š¾ Š¾Ń‚Š¾Š±Ń€Š°Š¶Š°ŃŽŃ‚ся Š¾ŠæцŠøŠø "ŠžŃ‚Š¼ŠµŠ½Šøть утŠ²ŠµŃ€Š¶Š“ŠµŠ½ŠøŠµ ŠŗŠ¾Š¼Š¼ŠµŠ½Ń‚Š°Ń€Šøя" Šø "Š£Ń‚Š²ŠµŃ€Š“Šøть ŠŗŠ¾Š¼Š¼ŠµŠ½Ń‚Š°Ń€ŠøŠ¹". ŠœŃ‹ Š¾Š“Š¾Š±Ń€ŃŠµŠ¼. diff --git a/fastlane/jetpack_metadata/ru/subtitle.txt b/fastlane/jetpack_metadata/ru/subtitle.txt index 40f194becec2..c4ce68f9b03b 100644 --- a/fastlane/jetpack_metadata/ru/subtitle.txt +++ b/fastlane/jetpack_metadata/ru/subtitle.txt @@ -1 +1 @@ -Š‘ыстрыŠ¹ Šø Š±ŠµŠ·Š¾ŠæŠ°ŃŠ½Ń‹Š¹ WordPress \ No newline at end of file +Š‘ыстрыŠ¹ Šø Š±ŠµŠ·Š¾ŠæŠ°ŃŠ½Ń‹Š¹ WordPress diff --git a/fastlane/jetpack_metadata/sv/keywords.txt b/fastlane/jetpack_metadata/sv/keywords.txt index ac5dbc76f513..976328b2897b 100644 --- a/fastlane/jetpack_metadata/sv/keywords.txt +++ b/fastlane/jetpack_metadata/sv/keywords.txt @@ -1 +1 @@ -socialt, anteckningar, jetpack, skrivande, geotaggning, media, blogg, webbplats, bloggande, dagbok \ No newline at end of file +socialt, anteckningar, jetpack, skrivande, geotaggning, media, blogg, webbplats, bloggande, dagbok diff --git a/fastlane/jetpack_metadata/sv/release_notes.txt b/fastlane/jetpack_metadata/sv/release_notes.txt new file mode 100644 index 000000000000..4fb7dcf5a04a --- /dev/null +++ b/fastlane/jetpack_metadata/sv/release_notes.txt @@ -0,0 +1,11 @@ +Vi har gjort en liten men viktig Ƥndring i blockredigeraren: knappen "LƤgg till block" Ƥr nu mer synlig nƤr du ƶppnar redigeraren och inte har valt nĆ„gra block. Vi har Ƥven tagit bort ett av de tre felmeddelandena som visades om uppladdningen av en mediafil eller ett ljudblock misslyckades ā€“ det behƶvdes helt enkelt inte. + +Du kommer dessutom att kunna hƶra nĆ„gra tillgƤnglighetsfƶrbƤttringar i VoiceOver-upplevelsen nƤr du arrangerar om menyval. Instruktionerna och meddelandena Ƥr nu tydligare och menyhierarkin lĆ„ter mer vettig. + +Vi har lagt till en ny skƤrm i processen fƶr webbplatsskapande, dƤr du kan ange syftet med din webbplats. Vi har testat den hƤr skƤrmen med en lite grupp anvƤndare och vi tror att du ocksĆ„ kommer att gilla den. + +Webbfƶrhandsgranskningar kommer inte lƤngre att skƤra av meddelanden lƤngst ner pĆ„ skƤrmen nƤr din webblƤsares verktygsfƤlt Ƥr synligt. + +Vad sƤger ett namn? Om din webbplats har ett kommer du i alla fall att se det i navigeringsrubriken fƶr Min webbplats. + +NƤr du sveper Ć„t vƤnster pĆ„ en kommentar i dina Notiser kommer du inte lƤngre att se alternativet "Ta bort". IstƤllet kommer alternativen "GodkƤnn ej kommentar" och "GodkƤnn kommentar" att visas. Det godkƤnner vi. diff --git a/fastlane/jetpack_metadata/sv/subtitle.txt b/fastlane/jetpack_metadata/sv/subtitle.txt index 156b6f91eade..ccef9f6d1674 100644 --- a/fastlane/jetpack_metadata/sv/subtitle.txt +++ b/fastlane/jetpack_metadata/sv/subtitle.txt @@ -1 +1 @@ -Snabbare, sƤkrare WordPress \ No newline at end of file +Snabbare, sƤkrare WordPress diff --git a/fastlane/jetpack_metadata/tr/keywords.txt b/fastlane/jetpack_metadata/tr/keywords.txt index 6fca98604a58..a58edf412504 100644 --- a/fastlane/jetpack_metadata/tr/keywords.txt +++ b/fastlane/jetpack_metadata/tr/keywords.txt @@ -1 +1 @@ -sosyal,notlar,jetpack,yazma,coğrafi etiketleme,medya,blog,web sitesi,blog oluşturma,gĆ¼nlĆ¼k \ No newline at end of file +sosyal,notlar,jetpack,yazma,coğrafi etiketleme,medya,blog,web sitesi,blog oluşturma,gĆ¼nlĆ¼k diff --git a/fastlane/jetpack_metadata/tr/release_notes.txt b/fastlane/jetpack_metadata/tr/release_notes.txt new file mode 100644 index 000000000000..a5bdb54632d5 --- /dev/null +++ b/fastlane/jetpack_metadata/tr/release_notes.txt @@ -0,0 +1,11 @@ +Blok dĆ¼zenleyicide kĆ¼Ć§Ć¼k ama gĆ¼Ć§lĆ¼ bir değişiklik yaptık: DĆ¼zenleyiciyi hiƧbir blok seƧili olmadan ilk aƧtığınızda "Blok Ekle" dĆ¼ÄŸmesi artık daha kolay gƶrĆ¼lĆ¼yor. Ayrıca, bir ortam veya ses bloku yĆ¼klenemediğinde gƶrĆ¼nen ve insanı bezdiren Ć¼Ć§ hata bildiriminden birini kaldırdık. + +Artık menĆ¼ Ć¶ÄŸelerini yeniden dĆ¼znelerken VoiceOver deneyiminde erişilebilirlikle ilgili bazı ipuƧları duyacaksınız. Talimatlar ve bildirimler artık daha net, ses ƶzellikli menĆ¼ hiyerarşisi ise daha anlamlı. + +Site oluşturma işlemine sitenizin amacını girebileceğiniz yeni bir ekran eklendi. Bu ekran kĆ¼Ć§Ć¼k bir kullanıcı grubuyla test edildi, sizin de beğeneceğinizi dĆ¼ÅŸĆ¼nĆ¼yoruz. + +Tarayıcı araƧ Ƨubuğunuz gƶrĆ¼nĆ¼r durumdayken web ƶnizlemeleri artık ekranın alt kısmındaki bildirimleri engellemiyor. + +Ya ad? Sitenizde varsa, bunu Sitem gezinme başlığında gƶrĆ¼rsĆ¼nĆ¼z. + +Bildirimlerinizden bir yorumu sola kaydırdığınızda artık "Ƈƶp Kutusu" seƧeneğini gƶrmeyeceksiniz. Bunun yerine "Yorumu Onaylama" ve "Yorumu Onayla" mesajlarını gƶreceksiniz. Biz onaylıyoruz. diff --git a/fastlane/jetpack_metadata/tr/subtitle.txt b/fastlane/jetpack_metadata/tr/subtitle.txt index b35dc8720905..526a69fc6df1 100644 --- a/fastlane/jetpack_metadata/tr/subtitle.txt +++ b/fastlane/jetpack_metadata/tr/subtitle.txt @@ -1 +1 @@ -Daha hızlı, gĆ¼venli WordPress \ No newline at end of file +Daha hızlı, gĆ¼venli WordPress diff --git a/fastlane/jetpack_metadata/zh-Hans/keywords.txt b/fastlane/jetpack_metadata/zh-Hans/keywords.txt index eab6e4aaff65..8d92dbdf71d3 100644 --- a/fastlane/jetpack_metadata/zh-Hans/keywords.txt +++ b/fastlane/jetpack_metadata/zh-Hans/keywords.txt @@ -1 +1 @@ -ē¤¾äŗ¤,ē¬”č®°,jetpack,写作,地ē†ä½ē½®ę ‡ē­¾,åŖ’体,博客,ē½‘ē«™,博äø»,ę—„åæ—,Wordpress,å»ŗē«™ \ No newline at end of file +ē¤¾äŗ¤,ē¬”č®°,jetpack,写作,地ē†ä½ē½®ę ‡ē­¾,åŖ’体,博客,ē½‘ē«™,博äø»,ę—„åæ—,Wordpress,å»ŗē«™ diff --git a/fastlane/jetpack_metadata/zh-Hans/release_notes.txt b/fastlane/jetpack_metadata/zh-Hans/release_notes.txt new file mode 100644 index 000000000000..7eac1afeb8fe --- /dev/null +++ b/fastlane/jetpack_metadata/zh-Hans/release_notes.txt @@ -0,0 +1,11 @@ +ęˆ‘ä»¬åƹåŒŗ块ē¼–č¾‘å™Ø做äŗ†äø€äøŖå¾®å°č€Œå¼ŗ大ēš„ę›“ę”¹ļ¼šå½“ę‚Øé¦–ę¬”ę‰“å¼€ęœŖ选ꋩåŒŗ块ēš„ē¼–č¾‘å™Øę—¶ļ¼Œā€œę·»åŠ åŒŗ块ā€ęŒ‰é’®ä¼šę›“åŠ ę˜¾ēœ¼ć€‚ åŖ’ä½“ęˆ–éŸ³é¢‘åŒŗ块äøŠä¼ å¤±č“„后ļ¼Œęˆ‘们也会ē§»é™¤äø‰äøŖ错čÆÆ通ēŸ„äø­ēš„å…¶äø­äø€äøŖ - čæ™ę„Ÿč§‰čæ‡ēŠ¹äøåŠć€‚ + +å½“é‡ę–°ęŽ’åˆ—čœå•é”¹ę—¶ļ¼Œę‚Ø将åœØ VoiceOver 体éŖŒäø­å¬åˆ°äø€äŗ›åÆč®æé—®ę€§å¾®č°ƒć€‚ čÆ“ę˜Žå’Œé€šēŸ„ę›“åŠ ęø…ę™°ļ¼Œå¹¶äø”čœå•å±‚ēŗ§ę›“ęœ‰ę„ä¹‰ć€‚ + +ęˆ‘ä»¬åœØē«™ē‚¹åˆ›å»ŗčæ‡ē؋äø­ę·»åŠ äŗ†ę–°å±å¹•ļ¼Œę‚ØåÆä»„č¾“å…„ē«™ē‚¹ę„å›¾ć€‚ ęˆ‘ä»¬ē”Øäø€å°ē»„ē”Øęˆ·ęµ‹čƕäŗ†ę­¤å±å¹•ļ¼Œå¹¶äø”ęˆ‘ä»¬ē›øäæ”ę‚Øä¹Ÿä¼šå–œę¬¢ć€‚ + +ę˜¾ē¤ŗęµč§ˆå™Øå·„å…·ę ę—¶ļ¼Œē½‘é”µé¢„č§ˆäøä¼šåˆ‡ę–­å±å¹•åŗ•ē«Æēš„通ēŸ„怂 + +名ē§°é‡Œęœ‰ä»€ä¹ˆļ¼Ÿ å¦‚ęžœę‚Øēš„ē«™ē‚¹ęœ‰äø€äøŖ名ē§°ļ¼Œę‚Ø将åœØā€œęˆ‘ēš„ē«™ē‚¹ā€åƼčˆŖę ‡é¢˜äø­ēœ‹åˆ°čƄ名ē§°ć€‚ + +åœØā€œé€šēŸ„ā€äø­å‘å·¦ę»‘åŠØčƄč®ŗę—¶ļ¼Œę‚Ø将äøä¼šå†ēœ‹åˆ°ā€œå›žę”¶ē«™ā€é€‰é”¹ć€‚ ē›ø反ēš„ę˜Æļ¼Œę‚Ø将ēœ‹åˆ°ā€œäøę‰¹å‡†čƄč®ŗā€å’Œā€œę‰¹å‡†čƄč®ŗā€ć€‚ ęˆ‘ä»¬å¤§åŠ›ę”Æꌁ怂 diff --git a/fastlane/jetpack_metadata/zh-Hans/subtitle.txt b/fastlane/jetpack_metadata/zh-Hans/subtitle.txt index b1d833861a76..9d1774ffa949 100644 --- a/fastlane/jetpack_metadata/zh-Hans/subtitle.txt +++ b/fastlane/jetpack_metadata/zh-Hans/subtitle.txt @@ -1 +1 @@ -ꛓåæ«é€Ÿć€ę›“安å…Øēš„ WordPress \ No newline at end of file +ꛓåæ«é€Ÿć€ę›“安å…Øēš„ WordPress diff --git a/fastlane/jetpack_metadata/zh-Hant/keywords.txt b/fastlane/jetpack_metadata/zh-Hant/keywords.txt index 6371e10b952e..edc1f0b03b04 100644 --- a/fastlane/jetpack_metadata/zh-Hant/keywords.txt +++ b/fastlane/jetpack_metadata/zh-Hant/keywords.txt @@ -1 +1 @@ -ē¤¾äŗ¤,附čØ»,jetpack,꒰åÆ«,地ē†ä½ē½®ęؙčؘ,åŖ’é«”,ē¶²čŖŒ,ē¶²ē«™,꒰åÆ«ē¶²čŖŒ,ę—„čŖŒ \ No newline at end of file +ē¤¾äŗ¤,附čØ»,jetpack,꒰åÆ«,地ē†ä½ē½®ęؙčؘ,åŖ’é«”,ē¶²čŖŒ,ē¶²ē«™,꒰åÆ«ē¶²čŖŒ,ę—„čŖŒ diff --git a/fastlane/jetpack_metadata/zh-Hant/release_notes.txt b/fastlane/jetpack_metadata/zh-Hant/release_notes.txt new file mode 100644 index 000000000000..41fb94d4707e --- /dev/null +++ b/fastlane/jetpack_metadata/zh-Hant/release_notes.txt @@ -0,0 +1,11 @@ +ęˆ‘å€‘å°å€å”Šē·Øč¼Æå™Øé€²č”Œäŗ†ē“°å¾®å»é‡å¤§ēš„čŖæę•“ļ¼šé¦–ꬔ開啟ē·Øč¼Æå™Øäø”ęœŖéøå–å€å”Šę™‚ļ¼Œć€Œę–°å¢žå€å”Šć€ęŒ‰éˆ•č®Šå¾—ꛓé”Æēœ¼äŗ†ć€‚ ęˆ‘å€‘ä¹Ÿē§»é™¤äŗ†åœØåŖ’é«”ęˆ–éŸ³č؊區唊äøŠå‚³å¤±ę•—Ꙃēš„éŒÆčŖ¤é€šēŸ„之äø€ (åŽŸęœ¬å…±ęœ‰äø‰å€‹éŒÆčŖ¤é€šēŸ„)ļ¼Œå› ē‚ŗ這é”Æå¾—ęœ‰é»žå¤šé¤˜ć€‚ + +重ꖰꎒåŗéø單項ē›®ę™‚ļ¼Œä½ ęœƒåœØ VoiceOver äø­č½åˆ°äø€äŗ›č¼”åŠ©åŠŸčƒ½čŖæꕓ怂 ę“ä½œęŒ‡ē¤ŗ和通ēŸ„č®Šå¾—ę›“ęø…ę„šäŗ†ļ¼Œéøå–®éšŽå±¤ä¹Ÿč®Šå¾—ę›“ęø…ę™°å„½ę‡‚ć€‚ + +ęˆ‘å€‘åœØē¶²ē«™å»ŗē«‹ęµē؋äø­ę–°å¢žäø€å€‹ē•«é¢ļ¼ŒåÆč®“ä½ č¼øå…„ē¶²ē«™ē”Ø途怂 ęˆ‘å€‘å·²č«‹äø€ē¾¤ä½æē”Ø者ęø¬č©¦éŽę­¤ē•«é¢ļ¼Œęƒ³åæ…ä½ ä¹Ÿęœƒå–œę­”ēš„怂 + +ē•«é¢å‡ŗē¾ē€č¦½å™Øå·„å…·åˆ—ę™‚ļ¼Œē¶²é é č¦½äøęœƒåˆ‡ęŽ‰ē•«é¢åŗ•éƒØēš„通ēŸ„äŗ†ć€‚ + +ē‚ŗē¶²ē«™å‘½åäŗ†å—Žļ¼Ÿ å¦‚ęžœęœ‰ļ¼Œä½ ęœƒåœØ怌ꈑēš„ē¶²ē«™ć€å°Žč¦½ęؙ锌äø­ēœ‹åˆ°ē¶²ē«™åēØ±ć€‚ + +åœØ通ēŸ„äø­å°‡ē•™čØ€å‘å·¦ę»‘å‹•ę™‚ļ¼Œä½ äøęœƒå†ēœ‹åˆ°ć€Œåžƒåœ¾ę”¶ć€éø項怂 ē•«é¢ęœƒę”¹ē‚ŗé”Æē¤ŗć€Œé§å›žē•™čØ€ć€å’Œć€Œę ø准ē•™čØ€ć€ć€‚ ęˆ‘å€‘å¾ˆč“Šč³žę­¤čØ­čØˆć€‚ diff --git a/fastlane/jetpack_metadata/zh-Hant/subtitle.txt b/fastlane/jetpack_metadata/zh-Hant/subtitle.txt index 2c6ec69061bd..0ecbf3efd608 100644 --- a/fastlane/jetpack_metadata/zh-Hant/subtitle.txt +++ b/fastlane/jetpack_metadata/zh-Hant/subtitle.txt @@ -1 +1 @@ -ꛓåæ«é€Ÿå®‰å…Øēš„ WordPress 體驗 \ No newline at end of file +ꛓåæ«é€Ÿå®‰å…Øēš„ WordPress 體驗 From 8ec0a3d6c39c8c70bb9ca6f59d2cd41917f7d230 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Thu, 28 Apr 2022 16:58:58 +1000 Subject: [PATCH 114/166] Bump version number --- config/Version.internal.xcconfig | 2 +- config/Version.public.xcconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/Version.internal.xcconfig b/config/Version.internal.xcconfig index f0ac7b096971..7efce8d722b8 100644 --- a/config/Version.internal.xcconfig +++ b/config/Version.internal.xcconfig @@ -1,4 +1,4 @@ VERSION_SHORT=19.7 // Internal long version example: VERSION_LONG=9.9.0.20180423 -VERSION_LONG=19.7.0.20220421 +VERSION_LONG=19.7.0.20220428 diff --git a/config/Version.public.xcconfig b/config/Version.public.xcconfig index 9346cbb59175..ee32a663078f 100644 --- a/config/Version.public.xcconfig +++ b/config/Version.public.xcconfig @@ -1,4 +1,4 @@ VERSION_SHORT=19.7 // Public long version example: VERSION_LONG=9.9.0.0 -VERSION_LONG=19.7.0.1 +VERSION_LONG=19.7.0.2 From 3adfbe8e7e8dc3b68508122a72a11a0bfe8da36c Mon Sep 17 00:00:00 2001 From: Siobhan Date: Thu, 28 Apr 2022 10:45:36 +0100 Subject: [PATCH 115/166] Update RELEASE-NOTES --- RELEASE-NOTES.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 729357acc9a7..04acd0f02728 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -4,6 +4,11 @@ * [*] [internal] My Site Dashboard: Made some changes to the code architecture of the dashboard. The majority of the changes are related to the posts cards. It should have no visible changes but could cause regressions. Please test it by creating/trashing drafts and scheduled posts and testing that they appear correctly on the dashboard. [#18405] * [*] Quick Start: Updated the Stats tour. The tour can now be accessed from either the dashboard or the menu tab. [#18413] * [*] [internal] Quick Start: Refactored some code related to the tasks displayed in the Quick Start Card and the Quick Start modal. It should have no visible changes but could cause regressions. [#18395] +* [*] Block Editor: Latest Posts block: Add featured image settings [https://github.com/WordPress/gutenberg/pull/39257] +* [*] Block Editor: Prevent incorrect notices displaying when switching between HTML-Visual mode quickly [https://github.com/WordPress/gutenberg/pull/40415] +* [*] Block Editor: Embed block: Fix inline preview cut-off when editing URL [https://github.com/WordPress/gutenberg/pull/35326] +* [*] Block Editor: Prevent gaps shown around floating toolbar when using external keyboard [https://github.com/WordPress/gutenberg/pull/40266] + 19.7 ----- From cf49b1d1b0a071ec9643fcd94484e7cb5f73f2be Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Thu, 28 Apr 2022 11:28:49 +0100 Subject: [PATCH 116/166] Fix: syncing blog and updating blog title after PtR This fixes two PtR issues. 1. Fixed updating the site picker header title / the nav title after PtR 2. Fixed syncing blog and metadata for the dashboard tab --- .../Blog Details/BlogDetailsViewController.h | 2 +- .../Blog Details/BlogDetailsViewController.m | 24 +++++++-------- .../Blog/My Site/MySiteViewController.swift | 30 +++++++++++-------- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h index 65f908d6756e..b9262ae594c9 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h @@ -158,5 +158,5 @@ typedef NS_ENUM(NSUInteger, BlogDetailsNavigationSource) { - (void)showStatsFromSource:(BlogDetailsNavigationSource)source; - (void)updateTableView:(nullable void(^)(void))completion; - (void)preloadMetadata; -- (void)pulledToRefreshWith:(nonnull UIRefreshControl *)refreshControl onCompletion:(nullable void(^)(void))completion; +- (void)pulledToRefreshWith:(nonnull UIRefreshControl *)refreshControl; @end diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m index 3d43e51c0c09..d66832f67e68 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m @@ -1757,22 +1757,18 @@ - (void)updateTableView:(void(^)(void))completion } #pragma mark - Pull To Refresh -- (void)pulledToRefresh { - [self pulledToRefreshWith:self.tableView.refreshControl onCompletion:^{}]; -} -- (void)pulledToRefreshWith:(UIRefreshControl *)refreshControl onCompletion:( void(^)(void))completion { +- (void)pulledToRefreshWith:(UIRefreshControl *)refreshControl { + + [self configureTableViewData]; + [self reloadTableViewPreservingSelection]; - [self updateTableView: ^{ - // WORKAROUND: if we don't dispatch this asynchronously, the refresh end animation is clunky. - // To recognize if we can remove this, simply remove the dispatch_async call and test pulling - // down to refresh the site. - dispatch_async(dispatch_get_main_queue(), ^(void){ - [refreshControl endRefreshing]; - - completion(); - }); - }]; + // WORKAROUND: if we don't dispatch this asynchronously, the refresh end animation is clunky. + // To recognize if we can remove this, simply remove the dispatch_async call and test pulling + // down to refresh the site. + dispatch_async(dispatch_get_main_queue(), ^(void){ + [refreshControl endRefreshing]; + }); } @end diff --git a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift index 6a33c8e842d3..4c008ad00477 100644 --- a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift @@ -427,24 +427,30 @@ class MySiteViewController: UIViewController, NoResultsViewHost { @objc private func pulledToRefresh() { - guard let section = currentSection else { - return + + guard let blog = blog, + let section = currentSection else { + return } - switch section { - case .siteMenu: - blogDetailsViewController?.pulledToRefresh(with: refreshControl) { [weak self] in - guard let self = self else { - return - } + blogService.syncBlogAndAllMetadata(blog) { [weak self] in - self.sitePickerViewController?.blogDetailHeaderView.blog = self.blog + guard let self = self else { + return } - case .dashboard: - blogDashboardViewController?.pulledToRefresh { [weak self] in - self?.refreshControl.endRefreshing() + self.updateNavigationTitle(for: blog) + self.sitePickerViewController?.blogDetailHeaderView.blog = blog + + switch section { + case .siteMenu: + self.blogDetailsViewController?.pulledToRefresh(with: self.refreshControl) + case .dashboard: + self.blogDashboardViewController?.pulledToRefresh { + self.refreshControl.endRefreshing() + } } + } WPAnalytics.track(.mySitePullToRefresh, properties: [WPAppAnalyticsKeyTabSource: section.analyticsDescription]) From 9b792d4ee82b003bb9bc8bac3eacfbf0217acc39 Mon Sep 17 00:00:00 2001 From: Leandro Alonso Date: Thu, 28 Apr 2022 09:43:28 -0300 Subject: [PATCH 117/166] refactor: add breakline for the second argument --- WordPress/Classes/ViewRelated/Blog/QuickStartCell.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Blog/QuickStartCell.swift b/WordPress/Classes/ViewRelated/Blog/QuickStartCell.swift index efb597f36ed2..3748f0b139c6 100644 --- a/WordPress/Classes/ViewRelated/Blog/QuickStartCell.swift +++ b/WordPress/Classes/ViewRelated/Blog/QuickStartCell.swift @@ -16,7 +16,8 @@ import UIKit let checklistTappedTracker: QuickStartChecklistTappedTracker = (event: .quickStartTapped, properties: [:]) - tourStateView.configure(blog: blog, sourceController: viewController, + tourStateView.configure(blog: blog, + sourceController: viewController, checklistTappedTracker: checklistTappedTracker) } From 1f7da29be0a75222fde353af41d76069be5f015d Mon Sep 17 00:00:00 2001 From: Matt Chowning Date: Thu, 28 Apr 2022 08:49:40 -0400 Subject: [PATCH 118/166] Update Gutenberg ref --- Podfile | 2 +- Podfile.lock | 190 +++++++++++++++++++++++++-------------------------- 2 files changed, 96 insertions(+), 96 deletions(-) diff --git a/Podfile b/Podfile index f98e68981ad1..5f49a4f3a1e4 100644 --- a/Podfile +++ b/Podfile @@ -169,7 +169,7 @@ abstract_target 'Apps' do ## Gutenberg (React Native) ## ===================== ## - gutenberg :commit => '0d3b1819b80297e089ff626f534e7e6995db650a' + gutenberg :commit => 'd4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a' ## Third party libraries ## ===================== diff --git a/Podfile.lock b/Podfile.lock index 2438828b5b60..1bb745f16e11 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -525,19 +525,19 @@ DEPENDENCIES: - AppCenter (~> 4.1) - AppCenter/Distribute (~> 4.1) - Automattic-Tracks-iOS (~> 0.11.1) - - boost (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/boost.podspec.json`) - - BVLinearGradient (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/BVLinearGradient.podspec.json`) + - boost (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/boost.podspec.json`) + - BVLinearGradient (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/BVLinearGradient.podspec.json`) - Charts (~> 3.2.2) - CocoaLumberjack (~> 3.0) - CropViewController (= 2.5.3) - Down (~> 0.6.6) - - FBLazyVector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/FBLazyVector.podspec.json`) - - FBReactNativeSpec (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json`) + - FBLazyVector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/FBLazyVector.podspec.json`) + - FBReactNativeSpec (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json`) - FSInteractiveMap (from `https://github.com/wordpress-mobile/FSInteractiveMap.git`, tag `0.2.0`) - Gifu (= 3.2.0) - - glog (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/glog.podspec.json`) + - glog (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/glog.podspec.json`) - Gridicons (~> 1.1.0) - - Gutenberg (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, commit `0d3b1819b80297e089ff626f534e7e6995db650a`) + - Gutenberg (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, commit `d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a`) - JTAppleCalendar (~> 8.0.2) - Kanvas (~> 1.2.7) - MediaEditor (~> 1.2.1) @@ -547,46 +547,46 @@ DEPENDENCIES: - "NSURL+IDN (~> 0.4)" - OCMock (~> 3.4.3) - OHHTTPStubs/Swift (~> 9.1.0) - - RCT-Folly (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RCT-Folly.podspec.json`) - - RCTRequired (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RCTRequired.podspec.json`) - - RCTTypeSafety (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RCTTypeSafety.podspec.json`) + - RCT-Folly (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCT-Folly.podspec.json`) + - RCTRequired (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCTRequired.podspec.json`) + - RCTTypeSafety (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCTTypeSafety.podspec.json`) - Reachability (= 3.2) - - React (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React.podspec.json`) - - React-callinvoker (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-callinvoker.podspec.json`) - - React-Core (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-Core.podspec.json`) - - React-CoreModules (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-CoreModules.podspec.json`) - - React-cxxreact (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-cxxreact.podspec.json`) - - React-jsi (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-jsi.podspec.json`) - - React-jsiexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-jsiexecutor.podspec.json`) - - React-jsinspector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-jsinspector.podspec.json`) - - React-logger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-logger.podspec.json`) - - react-native-blur (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-blur.podspec.json`) - - react-native-get-random-values (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-get-random-values.podspec.json`) - - react-native-keyboard-aware-scroll-view (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-keyboard-aware-scroll-view.podspec.json`) - - react-native-safe-area (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-safe-area.podspec.json`) - - react-native-safe-area-context (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-safe-area-context.podspec.json`) - - react-native-slider (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-slider.podspec.json`) - - react-native-video (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-video.podspec.json`) - - react-native-webview (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-webview.podspec.json`) - - React-perflogger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-perflogger.podspec.json`) - - React-RCTActionSheet (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTActionSheet.podspec.json`) - - React-RCTAnimation (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTAnimation.podspec.json`) - - React-RCTBlob (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTBlob.podspec.json`) - - React-RCTImage (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTImage.podspec.json`) - - React-RCTLinking (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTLinking.podspec.json`) - - React-RCTNetwork (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTNetwork.podspec.json`) - - React-RCTSettings (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTSettings.podspec.json`) - - React-RCTText (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTText.podspec.json`) - - React-RCTVibration (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTVibration.podspec.json`) - - React-runtimeexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-runtimeexecutor.podspec.json`) - - ReactCommon (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/ReactCommon.podspec.json`) - - RNCClipboard (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNCClipboard.podspec.json`) - - RNCMaskedView (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNCMaskedView.podspec.json`) - - RNGestureHandler (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNGestureHandler.podspec.json`) - - RNReanimated (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNReanimated.podspec.json`) - - RNScreens (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNScreens.podspec.json`) - - RNSVG (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNSVG.podspec.json`) - - RNTAztecView (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, commit `0d3b1819b80297e089ff626f534e7e6995db650a`) + - React (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React.podspec.json`) + - React-callinvoker (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-callinvoker.podspec.json`) + - React-Core (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-Core.podspec.json`) + - React-CoreModules (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-CoreModules.podspec.json`) + - React-cxxreact (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-cxxreact.podspec.json`) + - React-jsi (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsi.podspec.json`) + - React-jsiexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsiexecutor.podspec.json`) + - React-jsinspector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsinspector.podspec.json`) + - React-logger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-logger.podspec.json`) + - react-native-blur (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-blur.podspec.json`) + - react-native-get-random-values (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-get-random-values.podspec.json`) + - react-native-keyboard-aware-scroll-view (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-keyboard-aware-scroll-view.podspec.json`) + - react-native-safe-area (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-safe-area.podspec.json`) + - react-native-safe-area-context (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-safe-area-context.podspec.json`) + - react-native-slider (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-slider.podspec.json`) + - react-native-video (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-video.podspec.json`) + - react-native-webview (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-webview.podspec.json`) + - React-perflogger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-perflogger.podspec.json`) + - React-RCTActionSheet (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTActionSheet.podspec.json`) + - React-RCTAnimation (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTAnimation.podspec.json`) + - React-RCTBlob (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTBlob.podspec.json`) + - React-RCTImage (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTImage.podspec.json`) + - React-RCTLinking (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTLinking.podspec.json`) + - React-RCTNetwork (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTNetwork.podspec.json`) + - React-RCTSettings (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTSettings.podspec.json`) + - React-RCTText (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTText.podspec.json`) + - React-RCTVibration (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTVibration.podspec.json`) + - React-runtimeexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-runtimeexecutor.podspec.json`) + - ReactCommon (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/ReactCommon.podspec.json`) + - RNCClipboard (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNCClipboard.podspec.json`) + - RNCMaskedView (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNCMaskedView.podspec.json`) + - RNGestureHandler (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNGestureHandler.podspec.json`) + - RNReanimated (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNReanimated.podspec.json`) + - RNScreens (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNScreens.podspec.json`) + - RNSVG (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNSVG.podspec.json`) + - RNTAztecView (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, commit `d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a`) - Starscream (= 3.0.6) - SVProgressHUD (= 2.2.5) - WordPress-Editor-iOS (~> 1.19.8) @@ -596,7 +596,7 @@ DEPENDENCIES: - WordPressShared (~> 1.17.1) - WordPressUI (~> 1.12.5) - WPMediaPicker (~> 1.8.3) - - Yoga (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/Yoga.podspec.json`) + - Yoga (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/Yoga.podspec.json`) - ZendeskSupportSDK (= 5.3.0) - ZIPFoundation (~> 0.9.8) @@ -657,115 +657,115 @@ SPEC REPOS: EXTERNAL SOURCES: boost: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/boost.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/boost.podspec.json BVLinearGradient: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/BVLinearGradient.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/BVLinearGradient.podspec.json FBLazyVector: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/FBLazyVector.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/FBLazyVector.podspec.json FBReactNativeSpec: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json FSInteractiveMap: :git: https://github.com/wordpress-mobile/FSInteractiveMap.git :tag: 0.2.0 glog: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/glog.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/glog.podspec.json Gutenberg: - :commit: 0d3b1819b80297e089ff626f534e7e6995db650a + :commit: d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true RCT-Folly: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RCT-Folly.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCT-Folly.podspec.json RCTRequired: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RCTRequired.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCTRequired.podspec.json RCTTypeSafety: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RCTTypeSafety.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCTTypeSafety.podspec.json React: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React.podspec.json React-callinvoker: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-callinvoker.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-callinvoker.podspec.json React-Core: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-Core.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-Core.podspec.json React-CoreModules: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-CoreModules.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-CoreModules.podspec.json React-cxxreact: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-cxxreact.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-cxxreact.podspec.json React-jsi: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-jsi.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsi.podspec.json React-jsiexecutor: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-jsiexecutor.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsiexecutor.podspec.json React-jsinspector: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-jsinspector.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsinspector.podspec.json React-logger: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-logger.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-logger.podspec.json react-native-blur: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-blur.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-blur.podspec.json react-native-get-random-values: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-get-random-values.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-get-random-values.podspec.json react-native-keyboard-aware-scroll-view: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-keyboard-aware-scroll-view.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-keyboard-aware-scroll-view.podspec.json react-native-safe-area: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-safe-area.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-safe-area.podspec.json react-native-safe-area-context: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-safe-area-context.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-safe-area-context.podspec.json react-native-slider: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-slider.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-slider.podspec.json react-native-video: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-video.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-video.podspec.json react-native-webview: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/react-native-webview.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-webview.podspec.json React-perflogger: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-perflogger.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-perflogger.podspec.json React-RCTActionSheet: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTActionSheet.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTActionSheet.podspec.json React-RCTAnimation: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTAnimation.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTAnimation.podspec.json React-RCTBlob: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTBlob.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTBlob.podspec.json React-RCTImage: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTImage.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTImage.podspec.json React-RCTLinking: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTLinking.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTLinking.podspec.json React-RCTNetwork: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTNetwork.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTNetwork.podspec.json React-RCTSettings: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTSettings.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTSettings.podspec.json React-RCTText: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTText.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTText.podspec.json React-RCTVibration: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-RCTVibration.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTVibration.podspec.json React-runtimeexecutor: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/React-runtimeexecutor.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-runtimeexecutor.podspec.json ReactCommon: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/ReactCommon.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/ReactCommon.podspec.json RNCClipboard: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNCClipboard.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNCClipboard.podspec.json RNCMaskedView: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNCMaskedView.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNCMaskedView.podspec.json RNGestureHandler: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNGestureHandler.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNGestureHandler.podspec.json RNReanimated: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNReanimated.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNReanimated.podspec.json RNScreens: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNScreens.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNScreens.podspec.json RNSVG: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/RNSVG.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNSVG.podspec.json RNTAztecView: - :commit: 0d3b1819b80297e089ff626f534e7e6995db650a + :commit: d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true Yoga: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/0d3b1819b80297e089ff626f534e7e6995db650a/third-party-podspecs/Yoga.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/Yoga.podspec.json CHECKOUT OPTIONS: FSInteractiveMap: :git: https://github.com/wordpress-mobile/FSInteractiveMap.git :tag: 0.2.0 Gutenberg: - :commit: 0d3b1819b80297e089ff626f534e7e6995db650a + :commit: d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true RNTAztecView: - :commit: 0d3b1819b80297e089ff626f534e7e6995db650a + :commit: d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true @@ -869,6 +869,6 @@ SPEC CHECKSUMS: ZendeskSupportSDK: 3a8e508ab1d9dd22dc038df6c694466414e037ba ZIPFoundation: ae5b4b813d216d3bf0a148773267fff14bd51d37 -PODFILE CHECKSUM: f1564d7e5c41be10ae99a389c2200125a9792348 +PODFILE CHECKSUM: 6da7c0d3bb456855a3159893cc95a416767ba376 COCOAPODS: 1.11.2 From 35ebd091f67e1d0a9a558fc889878426aa8ef430 Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Thu, 28 Apr 2022 15:28:40 +0200 Subject: [PATCH 119/166] Address change requests --- .../Utility/Analytics/WPAnalyticsEvent.swift | 3 +++ ...mentsNotificationSheetViewController.swift | 2 +- .../Detail/ReaderDetailCoordinator.swift | 6 ++--- .../ViewRelated/Reader/ReaderHelpers.swift | 4 ++-- .../Reader/ReaderPostCellActions.swift | 6 ++--- .../Reader/ReaderShowMenuAction.swift | 24 ++++++++++++++++++- 6 files changed, 35 insertions(+), 10 deletions(-) diff --git a/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift b/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift index fe3403daef07..12ae473807b8 100644 --- a/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift +++ b/WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift @@ -80,6 +80,7 @@ import Foundation case readerChipsMoreToggled case readerToggleFollowConversation case readerToggleCommentNotifications + case readerMoreToggleFollowConversation case readerPostReported case readerArticleDetailMoreTapped case readerSharedItem @@ -472,6 +473,8 @@ import Foundation return "reader_toggle_follow_conversation" case .readerToggleCommentNotifications: return "reader_toggle_comment_notifications" + case .readerMoreToggleFollowConversation: + return "reader_more_toggle_follow_conversation" case .readerPostReported: return "reader_post_reported" case .readerArticleDetailMoreTapped: diff --git a/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsNotificationSheetViewController.swift b/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsNotificationSheetViewController.swift index b3eb39742dda..dccb6db733f3 100644 --- a/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsNotificationSheetViewController.swift +++ b/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsNotificationSheetViewController.swift @@ -299,6 +299,6 @@ private extension String { + "notifications in Reader Comments.") static let notificationSwitchLabelText = NSLocalizedString("Enable in-app notifications", comment: "Describes a switch component that toggles in-app notifications for a followed post.") - static let unfollowButtonTitle = NSLocalizedString("Unfollow conversation", + static let unfollowButtonTitle = NSLocalizedString("Unfollow Conversation", comment: "Title for a button that unsubscribes the user from the post.") } diff --git a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailCoordinator.swift b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailCoordinator.swift index b8ec776b6524..744c47243607 100644 --- a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailCoordinator.swift @@ -412,11 +412,11 @@ class ReaderDetailCoordinator { guard let post = post, let context = post.managedObjectContext, let viewController = viewController, - let _followCommentsService = FollowCommentsService(post: post) else { + let followCommentsService = FollowCommentsService(post: post) else { return } - followCommentsService = _followCommentsService + self.followCommentsService = followCommentsService ReaderMenuAction(logged: ReaderHelpers.isLoggedIn()).execute( post: post, @@ -425,7 +425,7 @@ class ReaderDetailCoordinator { anchor: anchorView, vc: viewController, source: ReaderPostMenuSource.details, - followCommentsService: _followCommentsService + followCommentsService: followCommentsService ) WPAnalytics.trackReader(.readerArticleDetailMoreTapped) diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderHelpers.swift b/WordPress/Classes/ViewRelated/Reader/ReaderHelpers.swift index a7fae45a388a..1fe201110cea 100644 --- a/WordPress/Classes/ViewRelated/Reader/ReaderHelpers.swift +++ b/WordPress/Classes/ViewRelated/Reader/ReaderHelpers.swift @@ -49,8 +49,8 @@ struct ReaderPostMenuButtonTitles { static let unsubscribe = NSLocalizedString("Turn off site notifications", comment: "Verb. An option to switch off site notifications.") static let markSeen = NSLocalizedString("Mark as seen", comment: "An option to mark a post as seen.") static let markUnseen = NSLocalizedString("Mark as unseen", comment: "An option to mark a post as unseen.") - static let followConversation = NSLocalizedString("Follow Conversation", comment: "Verb. Button title. Follow the comments on a post.") - static let unFollowConversation = NSLocalizedString("Unfollow Conversation", comment: "Verb. Button title. The user is following the comments on a post.") + static let followConversation = NSLocalizedString("Follow conversation", comment: "Verb. Button title. Follow the comments on a post.") + static let unFollowConversation = NSLocalizedString("Unfollow conversation", comment: "Verb. Button title. The user is following the comments on a post.") } /// A collection of helper methods used by the Reader. diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderPostCellActions.swift b/WordPress/Classes/ViewRelated/Reader/ReaderPostCellActions.swift index 59eefd1e4c44..368a99bde616 100644 --- a/WordPress/Classes/ViewRelated/Reader/ReaderPostCellActions.swift +++ b/WordPress/Classes/ViewRelated/Reader/ReaderPostCellActions.swift @@ -91,11 +91,11 @@ class ReaderPostCellActions: NSObject, ReaderPostCellDelegate { func readerCell(_ cell: ReaderPostCardCell, menuActionForProvider provider: ReaderPostContentProvider, fromView sender: UIView) { guard let post = provider as? ReaderPost, let origin = origin, - let _followCommentsService = FollowCommentsService(post: post) else { + let followCommentsService = FollowCommentsService(post: post) else { return } - followCommentsService = _followCommentsService + self.followCommentsService = followCommentsService ReaderMenuAction(logged: isLoggedIn).execute( post: post, @@ -104,7 +104,7 @@ class ReaderPostCellActions: NSObject, ReaderPostCellDelegate { anchor: sender, vc: origin, source: ReaderPostMenuSource.card, - followCommentsService: _followCommentsService + followCommentsService: followCommentsService ) WPAnalytics.trackReader(.postCardMoreTapped) } diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderShowMenuAction.swift b/WordPress/Classes/ViewRelated/Reader/ReaderShowMenuAction.swift index fe008808f187..5e5eb5ef7d02 100644 --- a/WordPress/Classes/ViewRelated/Reader/ReaderShowMenuAction.swift +++ b/WordPress/Classes/ViewRelated/Reader/ReaderShowMenuAction.swift @@ -1,3 +1,4 @@ +import UIKit /// Encapsulates a command to create and handle the extended menu for each post in Reader final class ReaderShowMenuAction { private let isLoggedIn: Bool @@ -131,7 +132,7 @@ final class ReaderShowMenuAction { ReaderShareAction().execute(with: post, context: context, anchor: anchor, vc: vc) }) - // Comment Subscription (Follow Comments by Email) + // Comment Subscription (Follow Comments by Email & Notifications) if post.canSubscribeComments { let buttonTitle = post.isSubscribedComments ? ReaderPostMenuButtonTitles.unFollowConversation : ReaderPostMenuButtonTitles.followConversation alertController.addActionWithTitle( @@ -141,6 +142,7 @@ final class ReaderShowMenuAction { if let post: ReaderPost = ReaderActionHelpers.existingObject(for: post.objectID, in: context) { ReaderSubscribeCommentsAction().execute(with: post, context: context, followCommentsService: followCommentsService) { (vc as? ReaderDetailViewController)?.updateFollowButtonState() + Self.trackToggleCommentSubscription(isSubscribed: post.isSubscribedComments, post: post, sourceViewController: vc) } } }) @@ -175,4 +177,24 @@ final class ReaderShowMenuAction { return shouldShowBlockSiteMenuItem(readerTopic: readerTopic, post: post) } + private static func trackToggleCommentSubscription(isSubscribed: Bool, post: ReaderPost, sourceViewController: UIViewController) { + var properties = [String: Any]() + properties[WPAppAnalyticsKeyFollowAction] = isSubscribed ? "followed" : "unfollowed" + properties["notifications_enabled"] = isSubscribed + properties[WPAppAnalyticsKeyBlogID] = post.siteID + properties[WPAppAnalyticsKeySource] = Self.sourceForTrackingEvents(sourceViewController: sourceViewController) + WPAnalytics.trackReader(.readerMoreToggleFollowConversation, properties: properties) + } + + private static func sourceForTrackingEvents(sourceViewController: UIViewController) -> String { + if sourceViewController is ReaderCommentsViewController { + return "reader_threaded_comments" + } else if sourceViewController is ReaderDetailViewController { + return "reader_post_details_comments" + } else if sourceViewController is ReaderStreamViewController { + return "reader" + } + + return "unknown" + } } From 7fa46603157caf63a738a02c848e46588ad59065 Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Thu, 28 Apr 2022 15:30:51 +0200 Subject: [PATCH 120/166] Update `handleFollowConversationButtonTapped` docs --- .../Reader/Comments/ReaderCommentsFollowPresenter.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsFollowPresenter.swift b/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsFollowPresenter.swift index fe89caf2834e..3c056ad808aa 100644 --- a/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsFollowPresenter.swift +++ b/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsFollowPresenter.swift @@ -32,7 +32,7 @@ class ReaderCommentsFollowPresenter: NSObject { // MARK: - Subscriptions /// Toggles the state of conversation subscription. - /// When enabled, the user will receive emails for new comments. + /// When enabled, the user will receive emails and in-app notifications for new comments. /// @objc func handleFollowConversationButtonTapped() { trackFollowToggled() From 7b27666ba19615c992a9ad932c22b413d6767f94 Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Thu, 28 Apr 2022 15:34:33 +0200 Subject: [PATCH 121/166] Update RELEASE-NOTES --- RELEASE-NOTES.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 729357acc9a7..d49410f91e8f 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -4,6 +4,7 @@ * [*] [internal] My Site Dashboard: Made some changes to the code architecture of the dashboard. The majority of the changes are related to the posts cards. It should have no visible changes but could cause regressions. Please test it by creating/trashing drafts and scheduled posts and testing that they appear correctly on the dashboard. [#18405] * [*] Quick Start: Updated the Stats tour. The tour can now be accessed from either the dashboard or the menu tab. [#18413] * [*] [internal] Quick Start: Refactored some code related to the tasks displayed in the Quick Start Card and the Quick Start modal. It should have no visible changes but could cause regressions. [#18395] +* [**] Follow Conversation flow now enables in-app notifications by default. They were updated to be opt-out rather than opt-in. 19.7 ----- From 2d5cd5f010753ec0f21adc8dd691c735798780ff Mon Sep 17 00:00:00 2001 From: David Christiandy <1299411+dvdchr@users.noreply.github.com> Date: Thu, 28 Apr 2022 20:59:03 +0700 Subject: [PATCH 122/166] Fix avatar train border and color --- .../Blog/Blog Dashboard/Cards/Prompts/AvatarTrainView.swift | 6 +++++- .../Cards/Prompts/DashboardPromptsCardCell.swift | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/AvatarTrainView.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/AvatarTrainView.swift index c336b8f75373..20065812810d 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/AvatarTrainView.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/AvatarTrainView.swift @@ -47,6 +47,10 @@ final class AvatarTrainView: UIView { } } + override func layoutSubviews() { + avatarStackView.arrangedSubviews.forEach({ configureBorder(for: $0) }) + } + } // MARK: Private Helpers @@ -62,7 +66,6 @@ private extension AvatarTrainView { func makeAvatarImageView(with avatarURL: URL? = nil) -> UIImageView { let imageView = CircularImageView(image: placeholderImage) imageView.translatesAutoresizingMaskIntoConstraints = false - configureBorder(for: imageView) NSLayoutConstraint.activate([ imageView.heightAnchor.constraint(equalToConstant: imageHeight), @@ -77,6 +80,7 @@ private extension AvatarTrainView { } func configureBorder(for view: UIView) { + view.layer.masksToBounds = true view.layer.borderWidth = Constants.borderWidth view.layer.borderColor = UIColor.listForeground.cgColor } diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift index a82fce054443..258ba8be1ee2 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift @@ -352,7 +352,7 @@ private extension DashboardPromptsCardCell { struct Style { static let frameIconImage = UIImage(named: "icon-lightbulb-outline")?.resizedImage(Constants.cardIconSize, interpolationQuality: .default) - static let avatarPlaceholderImage = UIImage(color: .quaternarySystemFill) + static let avatarPlaceholderImage = UIImage(color: .systemGray4) static let promptContentFont = WPStyleGuide.serifFontForTextStyle(.headline, fontWeight: .semibold) static let answerInfoLabelFont = WPStyleGuide.fontForTextStyle(.caption1) static let answerInfoLabelColor = UIColor.primary From 6f6d5f0a9cfd5f0cd1d577554b228c18387d9065 Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Thu, 28 Apr 2022 15:10:41 +0100 Subject: [PATCH 123/166] Delete: Edit Your Homepage tour --- ...logDetailsViewController+FancyAlerts.swift | 9 +------ .../Blog Details/BlogDetailsViewController.h | 9 +++---- .../Blog Details/BlogDetailsViewController.m | 1 - .../MySiteViewController+QuickStart.swift | 2 +- .../ViewRelated/Blog/QuickStartTours.swift | 25 ------------------- .../Blog/QuickStartToursCollection.swift | 1 - .../Pages/PageListViewController.swift | 25 ------------------- 7 files changed, 6 insertions(+), 66 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FancyAlerts.swift b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FancyAlerts.swift index f4ba7244ed30..a99afa346ec0 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FancyAlerts.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FancyAlerts.swift @@ -20,7 +20,7 @@ extension BlogDetailsViewController { return } fallthrough - case .pages, .editHomepage, .sharing: + case .pages, .sharing: self?.scroll(to: info) default: break @@ -116,13 +116,6 @@ extension BlogDetailsViewController { createButtonCoordinator?.hideCreateButtonTooltip() } - @objc func cancelCompletedToursIfNeeded() { - if shouldShowQuickStartChecklist() && blog.homepagePageID == nil { - // Ends the tour Edit Homepage if the site doesn't have a homepage set or uses the blog. - QuickStartTourGuide.shared.complete(tour: QuickStartEditHomepageTour(), for: blog, postNotification: false) - } - } - @objc func quickStartSectionViewModel() -> BlogDetailsSection { let row = BlogDetailsRow() row.callback = {} diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h index 18eafbaa9f5e..96ad11d1d5df 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h @@ -69,11 +69,10 @@ typedef NS_ENUM(NSInteger, QuickStartTourElement) { QuickStartTourElementStats = 18, QuickStartTourElementPlans = 19, QuickStartTourElementSiteTitle = 20, - QuickStartTourElementEditHomepage = 21, - QuickStartTourElementSiteMenu = 22, - QuickStartTourElementNotifications = 23, - QuickStartTourElementSetupQuickStart = 24, - QuickStartTourElementRemoveQuickStart = 25, + QuickStartTourElementSiteMenu = 21, + QuickStartTourElementNotifications = 22, + QuickStartTourElementSetupQuickStart = 23, + QuickStartTourElementRemoveQuickStart = 24, }; typedef NS_ENUM(NSUInteger, BlogDetailsNavigationSource) { diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m index 74be31f886d7..ca96ecbf6271 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m @@ -395,7 +395,6 @@ - (void)viewWillAppear:(BOOL)animated - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - [self cancelCompletedToursIfNeeded]; [self createUserActivity]; [self startAlertTimer]; diff --git a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift index 1df2061fd196..c8a0413d7617 100644 --- a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift +++ b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift @@ -20,7 +20,7 @@ extension MySiteViewController { self?.siteMenuSpotlightIsShown = true self?.additionalSafeAreaInsets = Constants.quickStartNoticeInsets - case .pages, .editHomepage, .sharing, .stats, .readerTab, .notifications: + case .pages, .sharing, .stats, .readerTab, .notifications: self?.additionalSafeAreaInsets = Constants.quickStartNoticeInsets default: diff --git a/WordPress/Classes/ViewRelated/Blog/QuickStartTours.swift b/WordPress/Classes/ViewRelated/Blog/QuickStartTours.swift index c384c8845fcb..c4357362c771 100644 --- a/WordPress/Classes/ViewRelated/Blog/QuickStartTours.swift +++ b/WordPress/Classes/ViewRelated/Blog/QuickStartTours.swift @@ -299,31 +299,6 @@ struct QuickStartReviewPagesTour: QuickStartTour { let accessibilityHintText = NSLocalizedString("Guides you through the process of creating a new page for your site.", comment: "This value is used to set the accessibility hint text for creating a new page for the user's site.") } -struct QuickStartEditHomepageTour: QuickStartTour { - let key = "quick-start-edit-homepage-tour" - let analyticsKey = "edit_homepage" - let title = NSLocalizedString("Edit your homepage", comment: "Title of a Quick Start Tour") - let titleMarkedCompleted = NSLocalizedString("Completed: Edit your homepage", comment: "The Quick Start Tour title after the user finished the step.") - let description = NSLocalizedString("Change, add, or remove content from your site's homepage.", comment: "Description of a Quick Start Tour") - let icon = UIImage.gridicon(.house) - let suggestionNoText = Strings.notNow - let suggestionYesText = Strings.yesShowMe - let possibleEntryPoints: Set = [.blogDetails] - - var waypoints: [WayPoint] = { - let descriptionBase = NSLocalizedString("Select %@ to see your page list.", comment: "A step in a guided tour for quick start. %@ will be the name of the item to select.") - let descriptionTarget = NSLocalizedString("Pages", comment: "The item to select during a guided tour.") - let descriptionHomepage = NSLocalizedString("Select %@ to edit your Homepage.", comment: "A step in a guided tour for quick start. %@ will be the name of the item to select.") - let homepageTarget = NSLocalizedString("Homepage", comment: "The item to select during a guided tour.") - return [ - (element: .pages, description: descriptionBase.highlighting(phrase: descriptionTarget, icon: .gridicon(.pages))), - (element: .editHomepage, description: descriptionHomepage.highlighting(phrase: homepageTarget, icon: .gridicon(.house))) - ] - }() - - let accessibilityHintText = NSLocalizedString("Guides you through the process of creating a new page for your site.", comment: "This value is used to set the accessibility hint text for creating a new page for the user's site.") -} - struct QuickStartCheckStatsTour: QuickStartTour { let key = "quick-start-check-stats-tour" let analyticsKey = "check_stats" diff --git a/WordPress/Classes/ViewRelated/Blog/QuickStartToursCollection.swift b/WordPress/Classes/ViewRelated/Blog/QuickStartToursCollection.swift index 907f27b62584..4e3e1bcb7c9b 100644 --- a/WordPress/Classes/ViewRelated/Blog/QuickStartToursCollection.swift +++ b/WordPress/Classes/ViewRelated/Blog/QuickStartToursCollection.swift @@ -28,7 +28,6 @@ struct QuickStartCustomizeToursCollection: QuickStartToursCollection { QuickStartCreateTour(), QuickStartSiteTitleTour(blog: blog), QuickStartSiteIconTour(), - QuickStartEditHomepageTour(), QuickStartReviewPagesTour(), QuickStartViewTour(blog: blog) ] diff --git a/WordPress/Classes/ViewRelated/Pages/PageListViewController.swift b/WordPress/Classes/ViewRelated/Pages/PageListViewController.swift index 1f8371ad958f..031d12326dcb 100644 --- a/WordPress/Classes/ViewRelated/Pages/PageListViewController.swift +++ b/WordPress/Classes/ViewRelated/Pages/PageListViewController.swift @@ -420,13 +420,6 @@ class PageListViewController: AbstractPostListViewController, UIViewControllerRe let page = pageAtIndexPath(indexPath) if page.isSiteHomepage { - let guide = QuickStartTourGuide.shared - if guide.isCurrentElement(.editHomepage) { - QuickStartTourGuide.shared.visited(.editHomepage) - } else { - QuickStartTourGuide.shared.complete(tour: QuickStartEditHomepageTour(), silentlyForBlog: blog) - } - tableView.reloadRows(at: [indexPath], with: .automatic) } else if page.isSitePostsPage { showSitePostPageUneditableNotice() @@ -461,12 +454,6 @@ class PageListViewController: AbstractPostListViewController, UIViewControllerRe configureCell(cell, at: indexPath) - if page.isSiteHomepage && QuickStartTourGuide.shared.isCurrentElement(.editHomepage) { - cell.accessoryView = QuickStartSpotlightView() - } else { - cell.accessoryView = nil - } - return cell } @@ -771,21 +758,9 @@ class PageListViewController: AbstractPostListViewController, UIViewControllerRe } override func deletePost(_ apost: AbstractPost) { - completeQuickStartStepIfNeeded(apost) super.deletePost(apost) } - private func completeQuickStartStepIfNeeded(_ page: AbstractPost) { - guard let page = page as? Page else { return } - guard page.isSiteHomepage else { return } - - if QuickStartTourGuide.shared.isCurrentElement(.editHomepage) { - QuickStartTourGuide.shared.visited(.editHomepage) - } else { - QuickStartTourGuide.shared.complete(tour: QuickStartEditHomepageTour(), for: blog, postNotification: false) - } - } - private func addEditAction(to controller: UIAlertController, for page: AbstractPost) { guard let page = page as? Page else { return } From 50e79b666a056b0ea619d1350218778c13b66f88 Mon Sep 17 00:00:00 2001 From: Matt Chowning Date: Thu, 28 Apr 2022 10:24:33 -0400 Subject: [PATCH 124/166] Update podfile with Gutenberg v1.75.0 release --- Podfile | 2 +- Podfile.lock | 190 +++++++++++++++++++++++++-------------------------- 2 files changed, 96 insertions(+), 96 deletions(-) diff --git a/Podfile b/Podfile index 5f49a4f3a1e4..5fa4c42cdc9b 100644 --- a/Podfile +++ b/Podfile @@ -169,7 +169,7 @@ abstract_target 'Apps' do ## Gutenberg (React Native) ## ===================== ## - gutenberg :commit => 'd4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a' + gutenberg :tag => 'v1.75.0' ## Third party libraries ## ===================== diff --git a/Podfile.lock b/Podfile.lock index 1bb745f16e11..28b77167d354 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -525,19 +525,19 @@ DEPENDENCIES: - AppCenter (~> 4.1) - AppCenter/Distribute (~> 4.1) - Automattic-Tracks-iOS (~> 0.11.1) - - boost (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/boost.podspec.json`) - - BVLinearGradient (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/BVLinearGradient.podspec.json`) + - boost (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/boost.podspec.json`) + - BVLinearGradient (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/BVLinearGradient.podspec.json`) - Charts (~> 3.2.2) - CocoaLumberjack (~> 3.0) - CropViewController (= 2.5.3) - Down (~> 0.6.6) - - FBLazyVector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/FBLazyVector.podspec.json`) - - FBReactNativeSpec (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json`) + - FBLazyVector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/FBLazyVector.podspec.json`) + - FBReactNativeSpec (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json`) - FSInteractiveMap (from `https://github.com/wordpress-mobile/FSInteractiveMap.git`, tag `0.2.0`) - Gifu (= 3.2.0) - - glog (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/glog.podspec.json`) + - glog (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/glog.podspec.json`) - Gridicons (~> 1.1.0) - - Gutenberg (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, commit `d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a`) + - Gutenberg (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, tag `v1.75.0`) - JTAppleCalendar (~> 8.0.2) - Kanvas (~> 1.2.7) - MediaEditor (~> 1.2.1) @@ -547,46 +547,46 @@ DEPENDENCIES: - "NSURL+IDN (~> 0.4)" - OCMock (~> 3.4.3) - OHHTTPStubs/Swift (~> 9.1.0) - - RCT-Folly (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCT-Folly.podspec.json`) - - RCTRequired (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCTRequired.podspec.json`) - - RCTTypeSafety (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCTTypeSafety.podspec.json`) + - RCT-Folly (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RCT-Folly.podspec.json`) + - RCTRequired (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RCTRequired.podspec.json`) + - RCTTypeSafety (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RCTTypeSafety.podspec.json`) - Reachability (= 3.2) - - React (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React.podspec.json`) - - React-callinvoker (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-callinvoker.podspec.json`) - - React-Core (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-Core.podspec.json`) - - React-CoreModules (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-CoreModules.podspec.json`) - - React-cxxreact (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-cxxreact.podspec.json`) - - React-jsi (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsi.podspec.json`) - - React-jsiexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsiexecutor.podspec.json`) - - React-jsinspector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsinspector.podspec.json`) - - React-logger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-logger.podspec.json`) - - react-native-blur (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-blur.podspec.json`) - - react-native-get-random-values (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-get-random-values.podspec.json`) - - react-native-keyboard-aware-scroll-view (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-keyboard-aware-scroll-view.podspec.json`) - - react-native-safe-area (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-safe-area.podspec.json`) - - react-native-safe-area-context (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-safe-area-context.podspec.json`) - - react-native-slider (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-slider.podspec.json`) - - react-native-video (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-video.podspec.json`) - - react-native-webview (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-webview.podspec.json`) - - React-perflogger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-perflogger.podspec.json`) - - React-RCTActionSheet (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTActionSheet.podspec.json`) - - React-RCTAnimation (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTAnimation.podspec.json`) - - React-RCTBlob (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTBlob.podspec.json`) - - React-RCTImage (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTImage.podspec.json`) - - React-RCTLinking (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTLinking.podspec.json`) - - React-RCTNetwork (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTNetwork.podspec.json`) - - React-RCTSettings (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTSettings.podspec.json`) - - React-RCTText (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTText.podspec.json`) - - React-RCTVibration (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTVibration.podspec.json`) - - React-runtimeexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-runtimeexecutor.podspec.json`) - - ReactCommon (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/ReactCommon.podspec.json`) - - RNCClipboard (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNCClipboard.podspec.json`) - - RNCMaskedView (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNCMaskedView.podspec.json`) - - RNGestureHandler (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNGestureHandler.podspec.json`) - - RNReanimated (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNReanimated.podspec.json`) - - RNScreens (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNScreens.podspec.json`) - - RNSVG (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNSVG.podspec.json`) - - RNTAztecView (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, commit `d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a`) + - React (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React.podspec.json`) + - React-callinvoker (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-callinvoker.podspec.json`) + - React-Core (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-Core.podspec.json`) + - React-CoreModules (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-CoreModules.podspec.json`) + - React-cxxreact (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-cxxreact.podspec.json`) + - React-jsi (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-jsi.podspec.json`) + - React-jsiexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-jsiexecutor.podspec.json`) + - React-jsinspector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-jsinspector.podspec.json`) + - React-logger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-logger.podspec.json`) + - react-native-blur (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-blur.podspec.json`) + - react-native-get-random-values (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-get-random-values.podspec.json`) + - react-native-keyboard-aware-scroll-view (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-keyboard-aware-scroll-view.podspec.json`) + - react-native-safe-area (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-safe-area.podspec.json`) + - react-native-safe-area-context (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-safe-area-context.podspec.json`) + - react-native-slider (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-slider.podspec.json`) + - react-native-video (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-video.podspec.json`) + - react-native-webview (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-webview.podspec.json`) + - React-perflogger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-perflogger.podspec.json`) + - React-RCTActionSheet (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTActionSheet.podspec.json`) + - React-RCTAnimation (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTAnimation.podspec.json`) + - React-RCTBlob (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTBlob.podspec.json`) + - React-RCTImage (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTImage.podspec.json`) + - React-RCTLinking (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTLinking.podspec.json`) + - React-RCTNetwork (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTNetwork.podspec.json`) + - React-RCTSettings (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTSettings.podspec.json`) + - React-RCTText (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTText.podspec.json`) + - React-RCTVibration (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTVibration.podspec.json`) + - React-runtimeexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-runtimeexecutor.podspec.json`) + - ReactCommon (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/ReactCommon.podspec.json`) + - RNCClipboard (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNCClipboard.podspec.json`) + - RNCMaskedView (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNCMaskedView.podspec.json`) + - RNGestureHandler (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNGestureHandler.podspec.json`) + - RNReanimated (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNReanimated.podspec.json`) + - RNScreens (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNScreens.podspec.json`) + - RNSVG (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNSVG.podspec.json`) + - RNTAztecView (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, tag `v1.75.0`) - Starscream (= 3.0.6) - SVProgressHUD (= 2.2.5) - WordPress-Editor-iOS (~> 1.19.8) @@ -596,7 +596,7 @@ DEPENDENCIES: - WordPressShared (~> 1.17.1) - WordPressUI (~> 1.12.5) - WPMediaPicker (~> 1.8.3) - - Yoga (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/Yoga.podspec.json`) + - Yoga (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/Yoga.podspec.json`) - ZendeskSupportSDK (= 5.3.0) - ZIPFoundation (~> 0.9.8) @@ -657,117 +657,117 @@ SPEC REPOS: EXTERNAL SOURCES: boost: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/boost.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/boost.podspec.json BVLinearGradient: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/BVLinearGradient.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/BVLinearGradient.podspec.json FBLazyVector: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/FBLazyVector.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/FBLazyVector.podspec.json FBReactNativeSpec: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json FSInteractiveMap: :git: https://github.com/wordpress-mobile/FSInteractiveMap.git :tag: 0.2.0 glog: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/glog.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/glog.podspec.json Gutenberg: - :commit: d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true + :tag: v1.75.0 RCT-Folly: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCT-Folly.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RCT-Folly.podspec.json RCTRequired: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCTRequired.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RCTRequired.podspec.json RCTTypeSafety: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RCTTypeSafety.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RCTTypeSafety.podspec.json React: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React.podspec.json React-callinvoker: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-callinvoker.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-callinvoker.podspec.json React-Core: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-Core.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-Core.podspec.json React-CoreModules: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-CoreModules.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-CoreModules.podspec.json React-cxxreact: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-cxxreact.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-cxxreact.podspec.json React-jsi: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsi.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-jsi.podspec.json React-jsiexecutor: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsiexecutor.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-jsiexecutor.podspec.json React-jsinspector: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-jsinspector.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-jsinspector.podspec.json React-logger: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-logger.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-logger.podspec.json react-native-blur: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-blur.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-blur.podspec.json react-native-get-random-values: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-get-random-values.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-get-random-values.podspec.json react-native-keyboard-aware-scroll-view: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-keyboard-aware-scroll-view.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-keyboard-aware-scroll-view.podspec.json react-native-safe-area: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-safe-area.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-safe-area.podspec.json react-native-safe-area-context: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-safe-area-context.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-safe-area-context.podspec.json react-native-slider: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-slider.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-slider.podspec.json react-native-video: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-video.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-video.podspec.json react-native-webview: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/react-native-webview.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/react-native-webview.podspec.json React-perflogger: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-perflogger.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-perflogger.podspec.json React-RCTActionSheet: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTActionSheet.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTActionSheet.podspec.json React-RCTAnimation: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTAnimation.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTAnimation.podspec.json React-RCTBlob: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTBlob.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTBlob.podspec.json React-RCTImage: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTImage.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTImage.podspec.json React-RCTLinking: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTLinking.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTLinking.podspec.json React-RCTNetwork: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTNetwork.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTNetwork.podspec.json React-RCTSettings: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTSettings.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTSettings.podspec.json React-RCTText: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTText.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTText.podspec.json React-RCTVibration: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-RCTVibration.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-RCTVibration.podspec.json React-runtimeexecutor: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/React-runtimeexecutor.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/React-runtimeexecutor.podspec.json ReactCommon: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/ReactCommon.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/ReactCommon.podspec.json RNCClipboard: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNCClipboard.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNCClipboard.podspec.json RNCMaskedView: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNCMaskedView.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNCMaskedView.podspec.json RNGestureHandler: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNGestureHandler.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNGestureHandler.podspec.json RNReanimated: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNReanimated.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNReanimated.podspec.json RNScreens: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNScreens.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNScreens.podspec.json RNSVG: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/RNSVG.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/RNSVG.podspec.json RNTAztecView: - :commit: d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true + :tag: v1.75.0 Yoga: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a/third-party-podspecs/Yoga.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/Yoga.podspec.json CHECKOUT OPTIONS: FSInteractiveMap: :git: https://github.com/wordpress-mobile/FSInteractiveMap.git :tag: 0.2.0 Gutenberg: - :commit: d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true + :tag: v1.75.0 RNTAztecView: - :commit: d4f18b4df2e7c0f43c0e8c524c3acb74ba7b104a :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true + :tag: v1.75.0 SPEC CHECKSUMS: Alamofire: 3ec537f71edc9804815215393ae2b1a8ea33a844 @@ -869,6 +869,6 @@ SPEC CHECKSUMS: ZendeskSupportSDK: 3a8e508ab1d9dd22dc038df6c694466414e037ba ZIPFoundation: ae5b4b813d216d3bf0a148773267fff14bd51d37 -PODFILE CHECKSUM: 6da7c0d3bb456855a3159893cc95a416767ba376 +PODFILE CHECKSUM: a7ae8e10cd04d593d0975e33ff124062b1306f1c COCOAPODS: 1.11.2 From 126be6326ed008e60bdaec9e3b0aa3ec5d007cd3 Mon Sep 17 00:00:00 2001 From: David Christiandy <1299411+dvdchr@users.noreply.github.com> Date: Thu, 28 Apr 2022 21:37:37 +0700 Subject: [PATCH 125/166] Adjust avatar train placeholder colors for interface color changes --- .../Cards/Prompts/DashboardPromptsCardCell.swift | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift index 258ba8be1ee2..ba52108b098c 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift @@ -259,6 +259,14 @@ class DashboardPromptsCardCell: UICollectionViewCell, Reusable { super.init(coder: coder) } + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + // refresh when the appearance style changed so the placeholder images are correctly recolored. + if let previousTraitCollection = previousTraitCollection, + previousTraitCollection.userInterfaceStyle != traitCollection.userInterfaceStyle { + refreshStackView() + } + } + // MARK: - Public Methods func configureForExampleDisplay() { @@ -352,7 +360,10 @@ private extension DashboardPromptsCardCell { struct Style { static let frameIconImage = UIImage(named: "icon-lightbulb-outline")?.resizedImage(Constants.cardIconSize, interpolationQuality: .default) - static let avatarPlaceholderImage = UIImage(color: .systemGray4) + static var avatarPlaceholderImage: UIImage { + // this needs to be computed so the color is correct depending on the user interface style. + return UIImage(color: .systemGray4) + } static let promptContentFont = WPStyleGuide.serifFontForTextStyle(.headline, fontWeight: .semibold) static let answerInfoLabelFont = WPStyleGuide.fontForTextStyle(.caption1) static let answerInfoLabelColor = UIColor.primary From 447411d7c52e80206c03f665978ac187d2bf5b18 Mon Sep 17 00:00:00 2001 From: David Christiandy <1299411+dvdchr@users.noreply.github.com> Date: Thu, 28 Apr 2022 21:50:44 +0700 Subject: [PATCH 126/166] Use quaternarySystemFill for light scheme --- .../Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift index ba52108b098c..b9bb21727530 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/DashboardPromptsCardCell.swift @@ -362,7 +362,7 @@ private extension DashboardPromptsCardCell { static let frameIconImage = UIImage(named: "icon-lightbulb-outline")?.resizedImage(Constants.cardIconSize, interpolationQuality: .default) static var avatarPlaceholderImage: UIImage { // this needs to be computed so the color is correct depending on the user interface style. - return UIImage(color: .systemGray4) + return UIImage(color: .init(light: .quaternarySystemFill, dark: .systemGray4)) } static let promptContentFont = WPStyleGuide.serifFontForTextStyle(.headline, fontWeight: .semibold) static let answerInfoLabelFont = WPStyleGuide.fontForTextStyle(.caption1) From 88e7432fc1a3311ec6369442677ac8e01f3aad4d Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Thu, 28 Apr 2022 15:53:11 +0100 Subject: [PATCH 127/166] Fix: unit test --- .../WordPressTest/QuickStartFactoryTests.swift | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/WordPress/WordPressTest/QuickStartFactoryTests.swift b/WordPress/WordPressTest/QuickStartFactoryTests.swift index f873ef8e484d..69996533c936 100644 --- a/WordPress/WordPressTest/QuickStartFactoryTests.swift +++ b/WordPress/WordPressTest/QuickStartFactoryTests.swift @@ -99,17 +99,16 @@ class QuickStartFactoryTests: XCTestCase { let tours = QuickStartFactory.allTours(for: blog) // Then - XCTAssertEqual(tours.count, 10) + XCTAssertEqual(tours.count, 9) XCTAssertTrue(tours[0] is QuickStartCreateTour) XCTAssertTrue(tours[1] is QuickStartSiteTitleTour) XCTAssertTrue(tours[2] is QuickStartSiteIconTour) - XCTAssertTrue(tours[3] is QuickStartEditHomepageTour) - XCTAssertTrue(tours[4] is QuickStartReviewPagesTour) - XCTAssertTrue(tours[5] is QuickStartViewTour) - XCTAssertTrue(tours[6] is QuickStartShareTour) - XCTAssertTrue(tours[7] is QuickStartPublishTour) - XCTAssertTrue(tours[8] is QuickStartFollowTour) - XCTAssertTrue(tours[9] is QuickStartCheckStatsTour) + XCTAssertTrue(tours[3] is QuickStartReviewPagesTour) + XCTAssertTrue(tours[4] is QuickStartViewTour) + XCTAssertTrue(tours[5] is QuickStartShareTour) + XCTAssertTrue(tours[6] is QuickStartPublishTour) + XCTAssertTrue(tours[7] is QuickStartFollowTour) + XCTAssertTrue(tours[8] is QuickStartCheckStatsTour) } private func newTestBlog(id: Int) -> Blog { From 01ae018ba24c576351782f91d951309615ed497a Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Thu, 28 Apr 2022 15:54:14 +0100 Subject: [PATCH 128/166] Update: release notes --- RELEASE-NOTES.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index fd8ed3373784..565ea8b0fd5a 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -4,6 +4,7 @@ * [*] [internal] My Site Dashboard: Made some changes to the code architecture of the dashboard. The majority of the changes are related to the posts cards. It should have no visible changes but could cause regressions. Please test it by creating/trashing drafts and scheduled posts and testing that they appear correctly on the dashboard. [#18405] * [*] Quick Start: Updated the Stats tour. The tour can now be accessed from either the dashboard or the menu tab. [#18413] * [*] Quick Start: Updated the Reader tour. The tour now highlights the Discover tab and guides users to follow topics via the Settings screen. [#18450] +* [*] Quick Start: Deleted the Edit your homepage tour. [#18469] * [*] [internal] Quick Start: Refactored some code related to the tasks displayed in the Quick Start Card and the Quick Start modal. It should have no visible changes but could cause regressions. [#18395] 19.7 From 3543d51bf56df1ff9a567d3bf95f2998a5af61f4 Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Thu, 28 Apr 2022 17:38:52 +0100 Subject: [PATCH 129/166] =?UTF-8?q?Refactor:=20don=E2=80=99t=20tie=20dashb?= =?UTF-8?q?oard=E2=80=99s=20refresh=20control=20to=20blog=20syncing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Blog Details/BlogDetailsViewController.h | 2 +- .../Blog Details/BlogDetailsViewController.m | 21 ++++++------ .../Blog/My Site/MySiteViewController.swift | 32 ++++++++++++------- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h index b9262ae594c9..9aafba5f715e 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h @@ -158,5 +158,5 @@ typedef NS_ENUM(NSUInteger, BlogDetailsNavigationSource) { - (void)showStatsFromSource:(BlogDetailsNavigationSource)source; - (void)updateTableView:(nullable void(^)(void))completion; - (void)preloadMetadata; -- (void)pulledToRefreshWith:(nonnull UIRefreshControl *)refreshControl; +- (void)pulledToRefreshWith:(nonnull UIRefreshControl *)refreshControl onCompletion:(nullable void(^)(void))completion; @end diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m index d66832f67e68..2962d5c578e9 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m @@ -1758,17 +1758,18 @@ - (void)updateTableView:(void(^)(void))completion #pragma mark - Pull To Refresh -- (void)pulledToRefreshWith:(UIRefreshControl *)refreshControl { +- (void)pulledToRefreshWith:(UIRefreshControl *)refreshControl onCompletion:( void(^)(void))completion { - [self configureTableViewData]; - [self reloadTableViewPreservingSelection]; - - // WORKAROUND: if we don't dispatch this asynchronously, the refresh end animation is clunky. - // To recognize if we can remove this, simply remove the dispatch_async call and test pulling - // down to refresh the site. - dispatch_async(dispatch_get_main_queue(), ^(void){ - [refreshControl endRefreshing]; - }); + [self updateTableView: ^{ + // WORKAROUND: if we don't dispatch this asynchronously, the refresh end animation is clunky. + // To recognize if we can remove this, simply remove the dispatch_async call and test pulling + // down to refresh the site. + dispatch_async(dispatch_get_main_queue(), ^(void){ + [refreshControl endRefreshing]; + + completion(); + }); + }]; } @end diff --git a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift index 4c008ad00477..2f6ad63015fa 100644 --- a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift @@ -433,24 +433,32 @@ class MySiteViewController: UIViewController, NoResultsViewHost { return } - blogService.syncBlogAndAllMetadata(blog) { [weak self] in + switch section { + case .siteMenu: + self.blogDetailsViewController?.pulledToRefresh(with: self.refreshControl) { [weak self] in + guard let self = self else { + return + } - guard let self = self else { - return + self.updateNavigationTitle(for: blog) + self.sitePickerViewController?.blogDetailHeaderView.blog = blog } + case .dashboard: - self.updateNavigationTitle(for: blog) - self.sitePickerViewController?.blogDetailHeaderView.blog = blog + /// The dashboardā€™s refresh control is intentionally not tied to blog syncing in order to keep + /// the dashboard updating fast. + self.blogDashboardViewController?.pulledToRefresh { [weak self] in + self?.refreshControl.endRefreshing() + } - switch section { - case .siteMenu: - self.blogDetailsViewController?.pulledToRefresh(with: self.refreshControl) - case .dashboard: - self.blogDashboardViewController?.pulledToRefresh { - self.refreshControl.endRefreshing() + self.blogService.syncBlogAndAllMetadata(blog) { [weak self] in + guard let self = self else { + return } - } + self.updateNavigationTitle(for: blog) + self.sitePickerViewController?.blogDetailHeaderView.blog = blog + } } WPAnalytics.track(.mySitePullToRefresh, properties: [WPAppAnalyticsKeyTabSource: section.analyticsDescription]) From aaaff76f97446ec70203c503c55eb50af499db2f Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Thu, 28 Apr 2022 17:43:11 +0100 Subject: [PATCH 130/166] Fix: omit unneccesary self --- .../ViewRelated/Blog/My Site/MySiteViewController.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift index 2f6ad63015fa..9a4f8d28c469 100644 --- a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift +++ b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController.swift @@ -435,7 +435,7 @@ class MySiteViewController: UIViewController, NoResultsViewHost { switch section { case .siteMenu: - self.blogDetailsViewController?.pulledToRefresh(with: self.refreshControl) { [weak self] in + blogDetailsViewController?.pulledToRefresh(with: refreshControl) { [weak self] in guard let self = self else { return } @@ -447,11 +447,11 @@ class MySiteViewController: UIViewController, NoResultsViewHost { /// The dashboardā€™s refresh control is intentionally not tied to blog syncing in order to keep /// the dashboard updating fast. - self.blogDashboardViewController?.pulledToRefresh { [weak self] in + blogDashboardViewController?.pulledToRefresh { [weak self] in self?.refreshControl.endRefreshing() } - self.blogService.syncBlogAndAllMetadata(blog) { [weak self] in + blogService.syncBlogAndAllMetadata(blog) { [weak self] in guard let self = self else { return } From d875aa42536559d38d11cfdff667edb820e0737f Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Thu, 28 Apr 2022 17:43:52 +0100 Subject: [PATCH 131/166] Fix: spacing --- .../ViewRelated/Blog/Blog Details/BlogDetailsViewController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m index 2962d5c578e9..f7ae987aa125 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m @@ -1759,7 +1759,7 @@ - (void)updateTableView:(void(^)(void))completion #pragma mark - Pull To Refresh - (void)pulledToRefreshWith:(UIRefreshControl *)refreshControl onCompletion:( void(^)(void))completion { - + [self updateTableView: ^{ // WORKAROUND: if we don't dispatch this asynchronously, the refresh end animation is clunky. // To recognize if we can remove this, simply remove the dispatch_async call and test pulling From 6743f6330b2323e80087acdb5785dbaad1dc2a84 Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Thu, 28 Apr 2022 17:46:59 +0100 Subject: [PATCH 132/166] Fix: use fallthrough keyword Co-authored-by: hassaanelgarem --- .../Blog/My Site/MySiteViewController+QuickStart.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift index 1df2061fd196..7346f02b3350 100644 --- a/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift +++ b/WordPress/Classes/ViewRelated/Blog/My Site/MySiteViewController+QuickStart.swift @@ -18,7 +18,7 @@ extension MySiteViewController { case .siteMenu: self?.siteMenuSpotlightIsShown = true - self?.additionalSafeAreaInsets = Constants.quickStartNoticeInsets + fallthrough case .pages, .editHomepage, .sharing, .stats, .readerTab, .notifications: self?.additionalSafeAreaInsets = Constants.quickStartNoticeInsets From 3cb77c30f595c62c2f8ad3a7e2cdd0956679ef9c Mon Sep 17 00:00:00 2001 From: James Frost Date: Thu, 28 Apr 2022 23:25:19 +0100 Subject: [PATCH 133/166] Stats Insights: Populate Latest Post Summary cell --- .../StatsLatestPostSummaryInsightsCell.swift | 92 +++++++++++++++++-- 1 file changed, 82 insertions(+), 10 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift b/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift index 5dacd319959f..30c4d41a7480 100644 --- a/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift +++ b/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift @@ -8,12 +8,13 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig private var lastPostDetails: StatsPostDetails? private var postTitle = StatSection.noPostTitle - private var postTitleLabel: UILabel! - private var postTimestampLabel: UILabel! - private var viewCountLabel: UILabel! - private var likeCountLabel: UILabel! - private var commentCountLabel: UILabel! - private var postImageView: CachedAnimatedImageView! + private var statsStackView: UIStackView! + private let postTitleLabel = UILabel() + private let postTimestampLabel = UILabel() + private let viewCountLabel = UILabel() + private let likeCountLabel = UILabel() + private let commentCountLabel = UILabel() + private let postImageView = CachedAnimatedImageView() lazy var imageLoader: ImageLoader = { return ImageLoader(imageView: postImageView, gifStrategy: .mediumGIFs) @@ -38,7 +39,9 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig contentView.addSubview(stackView) let postStackView = makePostStackView() + statsStackView = makeStatsStackView() stackView.addArrangedSubview(postStackView) + stackView.addArrangedSubview(statsStackView) topConstraint = stackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: StatsBaseCell.Metrics.padding) @@ -71,18 +74,15 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig postInfoStackView.axis = .vertical postInfoStackView.spacing = Metrics.postStackViewVerticalSpacing - postTitleLabel = UILabel() postTitleLabel.textColor = .text postTitleLabel.numberOfLines = 2 postTitleLabel.font = .preferredFont(forTextStyle: .headline) - postTimestampLabel = UILabel() postTimestampLabel.textColor = .textSubtle - postTimestampLabel.font = .preferredFont(forTextStyle: .body) + postTimestampLabel.font = .preferredFont(forTextStyle: .subheadline) postInfoStackView.addArrangedSubviews([postTitleLabel, postTimestampLabel]) - postImageView = CachedAnimatedImageView() postImageView.contentMode = .scaleAspectFill postImageView.translatesAutoresizingMaskIntoConstraints = false @@ -99,6 +99,69 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig return stackView } + private func makeStatsStackView() -> UIStackView { + let stackView = UIStackView() + stackView.translatesAutoresizingMaskIntoConstraints = false + stackView.axis = .horizontal + stackView.alignment = .top + stackView.spacing = Metrics.postStackViewHorizontalSpacing + + let viewsStack = makeVerticalStatsStackView(with: viewCountLabel, title: TextContent.views) + let likesStack = makeVerticalStatsStackView(with: likeCountLabel, title: TextContent.likes) + let commentsStack = makeVerticalStatsStackView(with: commentCountLabel, title: TextContent.comments) + + let divider1 = makeVerticalDivider() + let divider2 = makeVerticalDivider() + + stackView.addArrangedSubviews([ + viewsStack, + divider1, + likesStack, + divider2, + commentsStack + ]) + + NSLayoutConstraint.activate([ + viewsStack.widthAnchor.constraint(equalTo: likesStack.widthAnchor), + likesStack.widthAnchor.constraint(equalTo: commentsStack.widthAnchor), + divider1.heightAnchor.constraint(equalTo: stackView.heightAnchor), + divider2.heightAnchor.constraint(equalTo: stackView.heightAnchor) + ]) + + return stackView + } + + private func makeVerticalStatsStackView(with countLabel: UILabel, title: String) -> UIStackView { + let stackView = UIStackView() + stackView.translatesAutoresizingMaskIntoConstraints = false + stackView.axis = .vertical + stackView.spacing = Metrics.statsStackViewVerticalSpacing + + let topLabel = UILabel() + topLabel.font = UIFont.preferredFont(forTextStyle: .subheadline) + topLabel.textColor = .text + topLabel.text = title + + countLabel.font = UIFont.preferredFont(forTextStyle: .title1).bold() + countLabel.textColor = .text + countLabel.adjustsFontSizeToFitWidth = true + countLabel.text = "0" + + stackView.addArrangedSubviews([topLabel, countLabel]) + + return stackView + } + + private func makeVerticalDivider() -> UIView { + let divider = UIView() + divider.translatesAutoresizingMaskIntoConstraints = false + divider.widthAnchor.constraint(equalToConstant: Metrics.dividerWidth).isActive = true + + WPStyleGuide.Stats.configureViewAsVerticalSeparator(divider) + + return divider + } + // MARK: - Public Configuration func configure(withInsightData lastPostInsight: StatsLastPostInsight?, chartData: StatsPostDetails?, andDelegate delegate: SiteStatsInsightsDelegate?) { @@ -117,6 +180,10 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig postTimestampLabel.text = String(format: TextContent.publishDate, date) configureFeaturedImage(url: lastPostInsight.featuredImageURL) + + viewCountLabel.text = lastPostInsight.viewsCount.abbreviatedString() + likeCountLabel.text = lastPostInsight.likesCount.abbreviatedString() + commentCountLabel.text = lastPostInsight.commentsCount.abbreviatedString() } private func configureFeaturedImage(url: URL?) { @@ -139,11 +206,16 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig static let outerStackViewSpacing: CGFloat = 16.0 static let postStackViewHorizontalSpacing: CGFloat = 16.0 static let postStackViewVerticalSpacing: CGFloat = 8.0 + static let statsStackViewVerticalSpacing: CGFloat = 8.0 static let thumbnailSize: CGFloat = 68.0 static let thumbnailCornerRadius: CGFloat = 4.0 + static let dividerWidth: CGFloat = 1.0 } private enum TextContent { static let publishDate = NSLocalizedString("stats.insights.latestPostSummary.publishDate", value: "Published %@", comment: "Publish date of a post displayed in Stats. Placeholder will be replaced with a localized relative time, e.g. 2 days ago") + static let views = NSLocalizedString("stats.insights.latestPostSummary.views", value: "Views", comment: "Title for Views count in Latest Post Summary stats card.") + static let likes = NSLocalizedString("stats.insights.latestPostSummary.likes", value: "Likes", comment: "Title for Likes count in Latest Post Summary stats card.") + static let comments = NSLocalizedString("stats.insights.latestPostSummary.comments", value: "Comments", comment: "Title for Comments count in Latest Post Summary stats card.") } } From 75500abe369f20dfe8c9e540cf343798fb147fe2 Mon Sep 17 00:00:00 2001 From: James Frost Date: Fri, 29 Apr 2022 01:15:11 +0100 Subject: [PATCH 134/166] Add back in missing blog property for quick start --- .../WordPress.xcdatamodeld/WordPress 139.xcdatamodel/contents | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WordPress/Classes/WordPress.xcdatamodeld/WordPress 139.xcdatamodel/contents b/WordPress/Classes/WordPress.xcdatamodeld/WordPress 139.xcdatamodel/contents index 7f60a26875f1..86c8aaf77bcf 100644 --- a/WordPress/Classes/WordPress.xcdatamodeld/WordPress 139.xcdatamodel/contents +++ b/WordPress/Classes/WordPress.xcdatamodeld/WordPress 139.xcdatamodel/contents @@ -157,6 +157,7 @@ + @@ -984,7 +985,7 @@ - + From 4bf0b3f953f5afdfb81e7ec062db50399d89a762 Mon Sep 17 00:00:00 2001 From: David Christiandy <1299411+dvdchr@users.noreply.github.com> Date: Fri, 29 Apr 2022 09:18:55 +0700 Subject: [PATCH 135/166] Extract border configuration to a method --- .../Cards/Prompts/AvatarTrainView.swift | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/AvatarTrainView.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/AvatarTrainView.swift index 20065812810d..ac73162ffd1e 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/AvatarTrainView.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Prompts/AvatarTrainView.swift @@ -43,12 +43,12 @@ final class AvatarTrainView: UIView { // redraw border when user interface style changes. if let previousTraitCollection = previousTraitCollection, previousTraitCollection.userInterfaceStyle != traitCollection.userInterfaceStyle { - avatarStackView.subviews.forEach { configureBorder(for: $0) } + configureAvatarBorders() } } override func layoutSubviews() { - avatarStackView.arrangedSubviews.forEach({ configureBorder(for: $0) }) + configureAvatarBorders() } } @@ -79,10 +79,12 @@ private extension AvatarTrainView { return imageView } - func configureBorder(for view: UIView) { - view.layer.masksToBounds = true - view.layer.borderWidth = Constants.borderWidth - view.layer.borderColor = UIColor.listForeground.cgColor + func configureAvatarBorders() { + avatarStackView.arrangedSubviews.forEach { view in + view.layer.masksToBounds = true + view.layer.borderWidth = Constants.borderWidth + view.layer.borderColor = UIColor.listForeground.cgColor + } } // MARK: Constants From f5e37051cc169133d929db7dd362aec9d6c23743 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 29 Apr 2022 14:49:51 +1000 Subject: [PATCH 136/166] =?UTF-8?q?Update=20app=20translations=20=E2=80=93?= =?UTF-8?q?=20`Localizable.strings`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Resources/pt-BR.lproj/Localizable.strings | 66 ++++++++++++++++++- .../Resources/ro.lproj/Localizable.strings | 3 - .../Resources/ru.lproj/Localizable.strings | 4 +- 3 files changed, 67 insertions(+), 6 deletions(-) diff --git a/WordPress/Resources/pt-BR.lproj/Localizable.strings b/WordPress/Resources/pt-BR.lproj/Localizable.strings index f0ba42c4036f..2251d7463336 100644 --- a/WordPress/Resources/pt-BR.lproj/Localizable.strings +++ b/WordPress/Resources/pt-BR.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-25 13:10:00+0000 */ +/* Translation-Revision-Date: 2022-04-28 18:04:17+0000 */ /* Plural-Forms: nplurals=2; plural=n > 1; */ /* Generator: GlotPress/3.0.0 */ /* Language: pt_BR */ @@ -56,6 +56,12 @@ Plural format string for view title displaying the number of post likes. %1$d is the number of likes. */ "%1$d Likes" = "%1$d curtidas"; +/* Singular format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answer" = "%1$d resposta"; + +/* Plural format string for displaying the number of users that answered the blogging prompt. */ +"%1$d answers" = "%1$d respostas"; + /* Format string for displaying number of completed quickstart tutorials. %1$d is number completed, %2$d is total number of tutorials available. */ "%1$d of %2$d completed" = "%1$d de %2$d concluĆ­das"; @@ -345,6 +351,9 @@ translators: Block name. %s: The localized block name */ /* Title for a threat */ "A file contains a malicious code pattern" = "Um arquivo contĆ©m um padrĆ£o de cĆ³digo malicioso"; +/* Subtitle of the Site Name screen. */ +"A good name is short and memorable.\nYou can change it later." = "Um bom nome Ć© curto e fĆ”cil de lembrar.\nVocĆŖ pode mudar isso depois."; + /* Story Intro welcome title */ "A new way to create and publish engaging content on your site." = "Uma nova maneira de criar e publicar conteĆŗdos atraentes em seu site."; @@ -481,6 +490,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Add Block Before" = "Adicionar bloco antes"; +/* No comment provided by engineer. */ +"Add Blocks" = "Adicionar blocos"; + /* Alert option to add document contents into a blog post. */ "Add Contents to Post" = "Adicionar conteĆŗdo ao post"; @@ -621,6 +633,9 @@ translators: Block name. %s: The localized block name */ /* Title for the advanced section in site settings screen */ "Advanced" = "AvanƧado"; +/* Screen reader text expressing the menu item is after another menu item. Argument is a name for another menu item. */ +"After %@" = "ApĆ³s %s"; + /* Option to select the Airmail app when logging in with magic links */ "Airmail" = "Airmail"; @@ -778,6 +793,9 @@ translators: Block name. %s: The localized block name */ /* the comment has an anonymous author. */ "Anonymous" = "AnĆ“nimo"; +/* Title for a call-to-action button on the prompts card. */ +"Answer Prompt" = "Responder sugestĆ£o"; + /* Navigates to picker screen to change the app's icon Title of screen to change the app's icon */ "App Icon" = "ƍcone do aplicativo"; @@ -1039,6 +1057,9 @@ translators: Block name. %s: The localized block name */ /* Beauty site intent topic */ "Beauty" = "Beleza"; +/* Screen reader text expressing the menu item is before another menu item. Argument is a name for another menu item. */ +"Before %@" = "Antes de %@"; + /* 'Best Day' label for Most Popular stat. */ "Best Day" = "Melhor dia"; @@ -1294,6 +1315,9 @@ translators: Block name. %s: The localized block name */ Title for the warning shown to the user when he refuses to re-login when the authToken is missing. */ "Careful!" = "Cuidado!"; +/* Example prompt for the Prompts card in Feature Introduction. */ +"Cast the movie of your life." = "FaƧa o filme da sua vida."; + /* Label for Categories Label for the categories field. Should be the same as WP core. */ "Categories" = "Categorias"; @@ -1401,6 +1425,9 @@ translators: Block name. %s: The localized block name */ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "Verificando compras..."; +/* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ +"Child of %@" = "Descendente de %@"; + /* Title for the button to progress with the selected site homepage design */ "Choose" = "Escolher"; @@ -1440,6 +1467,9 @@ translators: Block name. %s: The localized block name */ /* Label for Publish time picker */ "Choose a time" = "Escolha um horĆ”rio"; +/* Select the site's intent. Subtitle */ +"Choose a topic from the list below or type your own." = "Escolha um assunto na lista abaixo ou digite o seu prĆ³prio"; + /* Title of a Quick Start Tour */ "Choose a unique site icon" = "Escolher um Ć­cone de site exclusivo"; @@ -2450,6 +2480,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Double tap and hold to edit" = "Toque duas vezes e segure para editar"; +/* Screen reader hint for button that will move the menu item */ +"Double tap and hold to move this menu item up or down. Move horizontally to change hierarchy." = "Toque duas vezes e segure para mover este item de menu para cima ou para baixo. Mova horizontalmente para mudar a hierarquia."; + /* No comment provided by engineer. */ "Double tap to add a block" = "Toque duas vezes para adicionar um bloco"; @@ -2582,6 +2615,9 @@ translators: Block name. %s: The localized block name */ /* No comment provided by engineer. */ "Duplicate block" = "Duplicar bloco"; +/* Placeholder text for the search field int the Site Intent screen. */ +"E.g. Fashion, Poetry, Politics" = "Ex.: moda, poesia, polĆ­tica"; + /* No comment provided by engineer. */ "Each block has its own settings. To find them, tap on a block. Its settings will appear on the toolbar at the bottom of the screen." = "Cada bloco possui suas prĆ³prias configuraƧƵes. Para encontrĆ”-las, toque em um bloco. As configuraƧƵes dele aparecerĆ£o na barra de ferramentas na parte inferior da tela."; @@ -3372,6 +3408,13 @@ translators: Block name. %s: The localized block name */ /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "DĆŖ um nome para seu site que reflita sua personalidade e tĆ³picos que serĆ£o publicados. A primeira impressĆ£o conta."; +/* Default title of the Site Name screen. + Title for Site Name screen in iPhone landscape. */ +"Give your website a name" = "DĆŖ um nome ao seu site"; + +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your%@website a name" = "DĆŖ um nome ao site %@"; + /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "Gmail"; @@ -3769,6 +3812,9 @@ translators: Block name. %s: The localized block name */ /* Message displayed in an alert when user tries to install a first plugin on their site. */ "Installing the first plugin on your site can take up to 1 minute. During this time you wonā€™t be able to make changes to your site." = "Instalar o primeiro plugin em seu site pode demorar alguns minutos. Durante esse tempo, nĆ£o serĆ” possĆ­vel fazer outras alteraƧƵes no seu site."; +/* Title for a button that opens up the 'Getting More Views and Traffic' support page when tapped. */ +"Interested in building your audience? Check out our top tips" = "Quer aumentar seu pĆŗblico? Veja nossas dicas"; + /* Interior Design site intent topic */ "Interior Design" = "Design de interiores"; @@ -4456,6 +4502,9 @@ translators: Block name. %s: The localized block name */ /* Insights 'Most Popular Time' header */ "Most Popular Time" = "HorĆ”rio mais popular"; +/* Screen reader text for button that will move the menu item. Argument is menu item's name. */ +"Move %@" = "Mover %@"; + /* No comment provided by engineer. */ "Move Image Backward" = "Mover imagem para trĆ”s"; @@ -5714,6 +5763,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* Menu item label for linking a project page. */ "Projects" = "Projetos"; +/* Title label for the Prompts card in My Sites tab. */ +"Prompts" = "SugestƵes"; + /* Privacy setting for posts set to 'Public' (default). Should be the same as in core WP. Text for privacy settings: Public */ "Public" = "PĆŗblico"; @@ -5957,6 +6009,9 @@ translators: %s: Select control button label e.g. \"Button width\" */ /* No comment provided by engineer. */ "Remove block" = "Remover bloco"; +/* Destructive menu title to remove the prompt card from the dashboard. */ +"Remove from dashboard" = "Remover do painel"; + /* Option to remove Insight from view. */ "Remove from insights" = "Remover do resumo"; @@ -6850,6 +6905,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Title shown in alert to confirm skipping all quick start items */ "Skip Quick Start" = "Pular o inĆ­cio rĆ”pido"; +/* Menu title to skip today's prompt. */ +"Skip this prompt" = "Ignorar esta sugestĆ£o"; + /* translators: Slash inserter autocomplete results */ "Slash inserter results" = "Resultados do adicionador com barra"; @@ -8440,6 +8498,9 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ Label for viewing more stats. */ "View more" = "Ver mais"; +/* Menu title to show more prompts. */ +"View more prompts" = "Ver mais sugestƵes"; + /* Description for view count. Singular. */ "View to your site so far" = "VisualizaĆ§Ć£o em seu site atĆ© o momento"; @@ -9607,3 +9668,6 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ /* Item 2 of delete screen section listing things that will be deleted. */ "ā€¢ Users & Authors" = "ā€¢ UsuĆ”rios e autores"; +/* Title label that indicates the prompt has been answered. */ +"āœ“ Answered" = "āœ“ Respondida"; + diff --git a/WordPress/Resources/ro.lproj/Localizable.strings b/WordPress/Resources/ro.lproj/Localizable.strings index 163ede27ea23..8d31a02d03f0 100644 --- a/WordPress/Resources/ro.lproj/Localizable.strings +++ b/WordPress/Resources/ro.lproj/Localizable.strings @@ -2682,9 +2682,6 @@ translators: Block name. %s: The localized block name */ /* Title for the edit sharing buttons section */ "Edit sharing buttons" = "Editare butoane de partajare"; -/* Title for the edit sharing buttons section */ -"Edit sharing buttons" = "Editare butoane de partajare"; - /* Button title displayed in popup indicating that the user edits the post first */ "Edit the post first" = "Mai Ć®ntĆ¢i, editează articolul"; diff --git a/WordPress/Resources/ru.lproj/Localizable.strings b/WordPress/Resources/ru.lproj/Localizable.strings index 49c7c4574438..3096db2add65 100644 --- a/WordPress/Resources/ru.lproj/Localizable.strings +++ b/WordPress/Resources/ru.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Translation-Revision-Date: 2022-04-25 16:22:03+0000 */ +/* Translation-Revision-Date: 2022-04-28 14:56:45+0000 */ /* Plural-Forms: nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2); */ /* Generator: GlotPress/3.0.0 */ /* Language: ru */ @@ -9495,7 +9495,7 @@ translators: %s: Select control option value e.g: \"Auto, 25%\". */ "infoplist.NSPhotoLibraryUsageDescription" = "Š”Š»Ń рŠ°Š·Š¼ŠµŃ‰ŠµŠ½Šøя фŠ¾Ń‚Š¾Š³Ń€Š°Ń„ŠøŠ¹ Šø Š²ŠøŠ“ŠµŠ¾ Š² Š²Š°ŃˆŠøх Š·Š°ŠæŠøсях."; /* Footer text for Invite Links section of the Invite People screen. */ -"invite_people_invite_link_footer" = "Š˜ŃŠæŠ¾Š»ŃŒŠ·ŃƒŠ¹Ń‚Šµ эту ссыŠ»Šŗу, чтŠ¾Š±Ń‹ ŠæŠ¾Š“ŠŗŠ»ŃŽŃ‡Šøть чŠ»ŠµŠ½Š¾Š² Š²Š°ŃˆŠµŠ¹ ŠŗŠ¾Š¼Š°Š½Š“ы, Š½Šµ ŠæрŠøŠ³Š»Š°ŃˆŠ°Ń Šøх ŠæŠ¾ Š¾Š“Š½Š¾Š¼Ńƒ. Š›ŃŽŠ±Š¾Š¹, ŠŗтŠ¾ ŠæŠ¾ŃŠµŃ‚Šøт этŠ¾Ń‚ URL-Š°Š“рŠµŃ, сŠ¼Š¾Š¶ŠµŃ‚ Š·Š°Ń€ŠµŠ³ŠøстрŠøрŠ¾Š²Š°Ń‚ŃŒŃŃ Š² Š²Š°ŃˆŠµŠ¹ Š¾Ń€Š³Š°Š½ŠøŠ·Š°Ń†ŠøŠø, Š“Š°Š¶Šµ ŠµŃŠ»Šø Š¾Š½ ŠæŠ¾Š»ŃƒŃ‡ŠøŠ» ссыŠ»Šŗу Š¾Ń‚ ŠŗŠ¾Š³Š¾-тŠ¾ Š“руŠ³Š¾Š³Š¾, ŠæŠ¾ŃŃ‚Š¾Š¼Ńƒ уŠ±ŠµŠ“ŠøтŠµŃŃŒ, чтŠ¾ Š²Ń‹ Š“ŠµŠ»ŠøтŠµŃŃŒ ŠµŃŽ с Š“Š¾Š²ŠµŃ€ŠµŠ½Š½Ń‹Š¼Šø Š»ŃŽŠ“ьŠ¼Šø."; +"invite_people_invite_link_footer" = "Š˜ŃŠæŠ¾Š»ŃŒŠ·ŃƒŠ¹Ń‚Šµ эту ссыŠ»Šŗу, чтŠ¾Š±Ń‹ ŠæŠ¾Š“ŠŗŠ»ŃŽŃ‡Šøть чŠ»ŠµŠ½Š¾Š² Š²Š°ŃˆŠµŠ¹ ŠŗŠ¾Š¼Š°Š½Š“ы, Š½Šµ ŠæрŠøŠ³Š»Š°ŃˆŠ°Ń Šøх ŠæŠ¾ Š¾Š“Š½Š¾Š¼Ńƒ. Š›ŃŽŠ±Š¾Š¹, ŠŗтŠ¾ ŠæŠ¾ŃŠµŃ‚Šøт этŠ¾Ń‚ URL-Š°Š“рŠµŃ, сŠ¼Š¾Š¶ŠµŃ‚ Š·Š°Ń€ŠµŠ³ŠøстрŠøрŠ¾Š²Š°Ń‚ŃŒŃŃ Š² Š²Š°ŃˆŠµŠ¹ Š¾Ń€Š³Š°Š½ŠøŠ·Š°Ń†ŠøŠø, Š“Š°Š¶Šµ ŠµŃŠ»Šø Š¾Š½ ŠæŠ¾Š»ŃƒŃ‡ŠøŠ» ссыŠ»Šŗу Š¾Ń‚ ŠŗŠ¾Š³Š¾-тŠ¾ Š“руŠ³Š¾Š³Š¾, ŠæŠ¾ŃŃ‚Š¾Š¼Ńƒ уŠ±ŠµŠ“ŠøтŠµŃŃŒ, чтŠ¾ Š²Ń‹ Š“ŠµŠ»ŠøтŠµŃŃŒ ŠµŠ¹ с Š“Š¾Š²ŠµŃ€ŠµŠ½Š½Ń‹Š¼Šø Š»ŃŽŠ“ьŠ¼Šø."; /* Name of the "Save as Draft" action as it should appear in the iOS Share Sheet when sharing content from other apps to WordPress */ "ios-sharesheet.CFBundleDisplayName" = "Š”Š¾Ń…Ń€Š°Š½Šøть ŠŗŠ°Šŗ чŠµŃ€Š½Š¾Š²ŠøŠŗ"; From c2fe99dc8ed28137e9ac29dd033a0392c12b4240 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 29 Apr 2022 14:50:38 +1000 Subject: [PATCH 137/166] Update WordPress metadata translations --- fastlane/metadata/pt-BR/release_notes.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 fastlane/metadata/pt-BR/release_notes.txt diff --git a/fastlane/metadata/pt-BR/release_notes.txt b/fastlane/metadata/pt-BR/release_notes.txt new file mode 100644 index 000000000000..74c8099441a0 --- /dev/null +++ b/fastlane/metadata/pt-BR/release_notes.txt @@ -0,0 +1,11 @@ +Fizemos uma melhoria pequena mas importante no editor de blocos: o botĆ£o "Adicionar bloco" agora estĆ” mais visĆ­vel ao abrir o editor sem nenhum bloco selecionado. TambĆ©m removemos uma das trĆŖs notificaƧƵes de erro quando o bloco de Ć”udio ou mĆ­dia nĆ£o consegue enviar o arquivo - estava exagerado. + +VocĆŖ ouvirĆ” algumas melhorias em acessibilidade na experiĆŖncia VoiceOver ao reordenar itens de menu. InstruƧƵes e avisos sĆ£o mais claros e a hierarquia do menu faz mais sentido em voz alta. + +Adicionamos uma nova tela no processo de criaĆ§Ć£o do site onde vocĆŖ poderĆ” definir o objetivo do site. Essa nova tela foi testada com um pequeno grupo de usuĆ”rios e acreditamos que vocĆŖ tambĆ©m gostarĆ”. + +A prĆ©-visualizaĆ§Ć£o no navegador nĆ£o serĆ” mais cortada quando a barra de ferramentas de seu navegador estiver visĆ­vel. + +O que Ć© um nome? Bem, se o seu site tiver um nome, ele serĆ” exibido no tĆ­tulo de Meu Site. + +Ao deslizar um comentĆ”rio para a direita em suas notificaƧƵes, vocĆŖ nĆ£o verĆ” mais a opĆ§Ć£o Lixeira. Ao invĆ©s, vocĆŖ verĆ” as opƧƵes "Desaprovar comentĆ”rio" e "Aprovar comentĆ”rio". NĆ³s aprovamos! From 6a6b9b76e6294571e3cde133d26efdd420003bcc Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 29 Apr 2022 14:50:44 +1000 Subject: [PATCH 138/166] Update Jetpack metadata translations --- fastlane/jetpack_metadata/ja/release_notes.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 fastlane/jetpack_metadata/ja/release_notes.txt diff --git a/fastlane/jetpack_metadata/ja/release_notes.txt b/fastlane/jetpack_metadata/ja/release_notes.txt new file mode 100644 index 000000000000..a144a3267f99 --- /dev/null +++ b/fastlane/jetpack_metadata/ja/release_notes.txt @@ -0,0 +1,11 @@ +惖惭惃ć‚Æć‚Øćƒ‡ć‚£ć‚æćƒ¼ć«å°ć•ć„ćŖćŒć‚‰ć‚‚é‡č¦ćŖå¤‰ę›“ć‚’åŠ ćˆć¾ć—ćŸć€‚ćƒ–ćƒ­ćƒƒć‚Æ悒éøꊞ恗恦恄ćŖ恄ēŠ¶ę…‹ć§ć‚Øćƒ‡ć‚£ć‚æćƒ¼ć‚’åˆć‚ć¦é–‹ć„ćŸćØćć«ć€ć€Œćƒ–ćƒ­ćƒƒć‚Æ悒čæ½åŠ ć€ćƒœć‚æćƒ³ćŒć“ć‚Œć¾ć§ć‚ˆć‚Šć‚‚ć‚ć‹ć‚Šć‚„ć™ćč”Øē¤ŗć•ć‚Œć¾ć™ć€‚ ć¾ćŸć€ćƒ”ćƒ‡ć‚£ć‚¢ćƒ–ćƒ­ćƒƒć‚Æć‚„éŸ³å£°ćƒ–ćƒ­ćƒƒć‚Æć‚’ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ć§ććŖć‹ć£ćŸćØćć«č”Øē¤ŗ恕悌悋3恤恮ć‚Øćƒ©ćƒ¼é€šēŸ„恮恆恔态äøč¦ćØę€ć‚ć‚Œć‚‹ć‚‚ć®ć‚’1ć¤å‰Šé™¤ć—ć¾ć—ćŸć€‚ + +VoiceOver 悒ä½æć£ć¦ćƒ”ćƒ‹ćƒ„ćƒ¼é …ē›®ć‚’äø¦ć¹ę›æćˆć‚‹éš›ć«ć€ć‚¢ć‚Æć‚»ć‚·ćƒ“ćƒŖćƒ†ć‚£ć®čŖæę•“ć«é–¢ć™ć‚‹ć‚¬ć‚¤ćƒ€ćƒ³ć‚¹ćŒå†ē”Ÿć•ć‚Œć¾ć™ć€‚ ꉋ順悄ę³Øꄏē‚¹ćŒę˜Žē¢ŗ恫ćŖć‚Šć€ćƒ”ćƒ‹ćƒ„ćƒ¼éšŽå±¤ć‚’éŸ³å£°ć§ē¢ŗčŖć—ć‚„ć™ććŖć‚Šć¾ć—ćŸć€‚ + +ć‚µć‚¤ćƒˆä½œęˆę™‚ć«ć€ćć®ć‚µć‚¤ćƒˆć®ē›®ēš„ć‚’å…„åŠ›ć§ćć‚‹ē”»é¢ć‚’ę–°ćŸć«čæ½åŠ ć—ć¾ć—ćŸć€‚ 恓恮ē”»é¢ćÆå°č¦ęØ”ć®ćƒ¦ćƒ¼ć‚¶ćƒ¼ć‚°ćƒ«ćƒ¼ćƒ—ć§ę¤œčØ¼ć•ć‚ŒćŸć‚‚ć®ć§ć™ćŒć€ēš†ć•ć¾ć«ć‚‚ę°—ć«å…„ć£ć¦ć„ćŸć ć‘ć‚‹ćØę€ć„ć¾ć™ć€‚ + +ćƒ–ćƒ©ć‚¦ć‚¶ćƒ¼ć®ćƒ„ćƒ¼ćƒ«ćƒćƒ¼ćŒč”Øē¤ŗć•ć‚Œć¦ć„ć‚‹ćØć€ć‚¦ć‚§ćƒ–ćƒ—ćƒ¬ćƒ“ćƒ„ćƒ¼ć§ē”»é¢äø‹éƒØ恮通ēŸ„ćŒč¦‹ćˆćŖ恏ćŖć£ć¦ć—ć¾ć†å•é”ŒćŒč§£ę¶ˆć•ć‚Œć¾ć—ćŸć€‚ + +åå‰ć«ćÆ恩悓ćŖę„å‘³ćŒč¾¼ć‚ć‚‰ć‚Œć¦ć„ć¾ć™ć‹ ? ć‚µć‚¤ćƒˆåć«ē”±ę„ćŒć‚ć‚‹å “åˆć€ć€Œå‚åŠ ć‚µć‚¤ćƒˆć€ć®ćƒŠćƒ“ć‚²ćƒ¼ć‚·ćƒ§ćƒ³ć‚æć‚¤ćƒˆćƒ«ć«č”Øē¤ŗć§ćć¾ć™ć€‚ + +通ēŸ„ć®ć‚³ćƒ”ćƒ³ćƒˆć‚’å·¦ć«ć‚¹ćƒÆ悤惗恗恟ćØćć®ć€Œć‚“ćƒŸē®±ćøē§»å‹•ć€ć‚Ŗćƒ—ć‚·ćƒ§ćƒ³ćŒč”Øē¤ŗ恕悌ćŖ恏ćŖć‚Šć¾ć—ćŸć€‚ 今後ćÆć€Œć‚³ćƒ”ćƒ³ćƒˆć‚’ę‰æčŖć—ćŖ恄怍ćØć€Œć‚³ćƒ”ćƒ³ćƒˆć‚’ę‰æčŖć™ć‚‹ć€ćŒä»£ć‚ć‚Šć«č”Øē¤ŗć•ć‚Œć¾ć™ć€‚ 当ē¤¾ć§ę‰æčŖć‚’č”Œć„ć¾ć™ć€‚ From 7c9bccfbaf42fa4bc4251d4a4999848697f97cd3 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 29 Apr 2022 14:50:47 +1000 Subject: [PATCH 139/166] Bump version number --- config/Version.internal.xcconfig | 2 +- config/Version.public.xcconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/Version.internal.xcconfig b/config/Version.internal.xcconfig index 7efce8d722b8..cb82c4d39ff5 100644 --- a/config/Version.internal.xcconfig +++ b/config/Version.internal.xcconfig @@ -1,4 +1,4 @@ VERSION_SHORT=19.7 // Internal long version example: VERSION_LONG=9.9.0.20180423 -VERSION_LONG=19.7.0.20220428 +VERSION_LONG=19.7.0.20220429 diff --git a/config/Version.public.xcconfig b/config/Version.public.xcconfig index ee32a663078f..29ce61c03594 100644 --- a/config/Version.public.xcconfig +++ b/config/Version.public.xcconfig @@ -1,4 +1,4 @@ VERSION_SHORT=19.7 // Public long version example: VERSION_LONG=9.9.0.0 -VERSION_LONG=19.7.0.2 +VERSION_LONG=19.7.0.3 From ed648765ba67b97e279ab611a1d15dfcfb110f83 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 29 Apr 2022 14:57:38 +1000 Subject: [PATCH 140/166] Use Jetpack translated release notes for missing WordPress ones In this release, they are the same, so we can use the ones from Jetpack in WordPress, too. --- fastlane/metadata/ar-SA/release_notes.txt | 11 +++++++++++ fastlane/metadata/de-DE/release_notes.txt | 11 +++++++++++ fastlane/metadata/fr-FR/release_notes.txt | 11 +++++++++++ fastlane/metadata/he/release_notes.txt | 11 +++++++++++ fastlane/metadata/it/release_notes.txt | 11 +++++++++++ fastlane/metadata/ja/release_notes.txt | 11 +++++++++++ fastlane/metadata/ko/release_notes.txt | 11 +++++++++++ fastlane/metadata/nl-NL/release_notes.txt | 11 +++++++++++ fastlane/metadata/ru/release_notes.txt | 11 +++++++++++ fastlane/metadata/sv/release_notes.txt | 11 +++++++++++ fastlane/metadata/tr/release_notes.txt | 11 +++++++++++ fastlane/metadata/zh-Hans/release_notes.txt | 11 +++++++++++ fastlane/metadata/zh-Hant/release_notes.txt | 11 +++++++++++ 13 files changed, 143 insertions(+) create mode 100644 fastlane/metadata/ar-SA/release_notes.txt create mode 100644 fastlane/metadata/de-DE/release_notes.txt create mode 100644 fastlane/metadata/fr-FR/release_notes.txt create mode 100644 fastlane/metadata/he/release_notes.txt create mode 100644 fastlane/metadata/it/release_notes.txt create mode 100644 fastlane/metadata/ja/release_notes.txt create mode 100644 fastlane/metadata/ko/release_notes.txt create mode 100644 fastlane/metadata/nl-NL/release_notes.txt create mode 100644 fastlane/metadata/ru/release_notes.txt create mode 100644 fastlane/metadata/sv/release_notes.txt create mode 100644 fastlane/metadata/tr/release_notes.txt create mode 100644 fastlane/metadata/zh-Hans/release_notes.txt create mode 100644 fastlane/metadata/zh-Hant/release_notes.txt diff --git a/fastlane/metadata/ar-SA/release_notes.txt b/fastlane/metadata/ar-SA/release_notes.txt new file mode 100644 index 000000000000..8a0b0cdcbfed --- /dev/null +++ b/fastlane/metadata/ar-SA/release_notes.txt @@ -0,0 +1,11 @@ +Ł„Ł‚ŲÆ Ų£Ų¬Ų±ŁŠŁ†Ų§ ŲŖŲŗŁŠŁŠŲ±Ł‹Ų§ ŲµŲŗŁŠŲ±Ł‹Ų§ Ł„ŁƒŁ†Ł‡ Ų±Ų§Ų¦Ų¹ Ų¹Ł„Ł‰ Ł…Ų­Ų±Ł‘ŁŲ± Ų§Ł„Ł…ŁƒŁˆŁ‘ŁŁ†: Ų£ŲµŲØŲ­ Ų²Ų± "Ų„Ų¶Ų§ŁŲ© Ł…ŁƒŁˆŁ‘ŁŁ†" Ų£ŁƒŲ«Ų± ŁˆŲ¶ŁˆŲ­Ł‹Ų§ Ų¹Ł†ŲÆŁ…Ų§ ŲŖŁŲŖŲ­ Ų§Ł„Ł…Ų­Ų±Ł‘ŁŲ± Ł„Ł„Ł…Ų±Ų© Ų§Ł„Ų£ŁˆŁ„Ł‰ Ł…Ł† ŲÆŁˆŁ† ŲŖŲ­ŲÆŁŠŲÆ Ų£ŁŠ Ł…ŁƒŁˆŁ‘ŁŁ†Ų§ŲŖ. Ł‚Ł…Ł†Ų§ ŁƒŲ°Ł„Łƒ ŲØŲ„Ų²Ų§Ł„Ų© ŁˆŲ§Ų­ŲÆ Ł…Ł† Ų«Ł„Ų§Ų«Ų© ŲŖŁ†ŲØŁŠŁ‡Ų§ŲŖ Ų®Ų·Ų£ Ų¹Ł†ŲÆŁ…Ų§ ŁŠŁŲ“Ł„ Ų±ŁŲ¹ Ł…ŁƒŁˆŁ‘ŁŁ† Ų§Ł„ŁˆŲ³Ų§Ų¦Ų· Ų£Łˆ Ų§Ł„ŲµŁˆŲŖā€”ŲØŲÆŲ§ Ų§Ł„Ų£Ł…Ų± Ł…ŲØŲ§Ł„ŲŗŁ‹Ų§ ŁŁŠŁ‡. + +Ų³ŲŖŲ³Ł…Ų¹ ŲØŲ¹Ų¶ ŲŖŲ¹ŲÆŁŠŁ„Ų§ŲŖ Ų„Ł…ŁƒŲ§Ł†ŁŠŲ© Ų§Ł„ŁˆŲµŁˆŁ„ ŁŁŠ ŲŖŲ¬Ų±ŲØŲ© VoiceOver Ų¹Ł†ŲÆŁ…Ų§ ŲŖŁ‚ŁˆŁ… ŲØŲ„Ų¹Ų§ŲÆŲ© ŲŖŲ±ŲŖŁŠŲØ Ų¹Ł†Ų§ŲµŲ± Ų§Ł„Ł‚Ų§Ų¦Ł…Ų©. Ų§Ł„Ų„Ų±Ų“Ų§ŲÆŲ§ŲŖ ŁˆŲ§Ł„Ų„Ų“Ų¹Ų§Ų±Ų§ŲŖ Ų£ŁƒŲ«Ų± ŁˆŲ¶ŁˆŲ­Ł‹Ų§ŲŒ ŁˆŁŠŲØŲÆŁˆ ŲŖŲ³Ł„Ų³Ł„ Ų§Ł„Ł‚Ų§Ł„ŲØ Ų£ŁƒŲ«Ų± Ł…Ł†Ų·Ł‚ŁŠŲ© ŲØŲ“ŁƒŁ„ ŁˆŲ§Ų¶Ų­. + +Ų£Ų¶ŁŁ†Ų§ Ų“Ų§Ų“Ų© Ų¬ŲÆŁŠŲÆŲ© Ų„Ł„Ł‰ Ų¹Ł…Ł„ŁŠŲ© Ų„Ł†Ų“Ų§Ų” Ų§Ł„Ł…ŁˆŁ‚Ų¹ Ų­ŁŠŲ« ŁŠŁ…ŁƒŁ†Łƒ Ų„ŲÆŲ®Ų§Ł„ Ł‡ŲÆŁ Ł…ŁˆŁ‚Ų¹Łƒ. Ł‚Ł…Ł†Ų§ ŲØŲŖŲ¬Ų±ŲØŲ© Ł‡Ų°Ł‡ Ų§Ł„Ų“Ų§Ų“Ų© ŲØŲ§Ų³ŲŖŲ®ŲÆŲ§Ł… Ł…Ų¬Ł…ŁˆŲ¹Ų© ŲµŲŗŁŠŲ±Ų© Ł…Ł† Ų§Ł„Ł…Ų³ŲŖŲ®ŲÆŁ…ŁŠŁ†ŲŒ ŁˆŁ†Ų¹ŲŖŁ‚ŲÆ Ų£Ł†Ł‡Ų§ Ų³ŲŖŁ†Ų§Ł„ Ų„Ų¹Ų¬Ų§ŲØŁƒ ŁƒŲ°Ł„Łƒ. + +Ł„Ł† ŲŖŲ­Ų°Ł Ł…Ų¹Ų§ŁŠŁ†Ų§ŲŖ Ų§Ł„ŁˆŁŠŲØ ŲŖŁ†ŲØŁŠŁ‡Ų§ŲŖ Ų§Ł„Ų¬Ų²Ų” Ų§Ł„Ų³ŁŁ„ŁŠ Ł…Ł† Ų§Ł„Ų“Ų§Ų“Ų© Ų¹Ł†ŲÆŁ…Ų§ ŁŠŁƒŁˆŁ† Ų“Ų±ŁŠŲ· Ų£ŲÆŁˆŲ§ŲŖ Ų§Ł„Ł…ŲŖŲµŁŲ­ Ų§Ł„Ų®Ų§Ųµ ŲØŁƒ Ł…Ų±Ų¦ŁŠŁ‹Ų§. + +Ł…Ų§Ų°Ų§ ŁŠŁˆŲ¬ŲÆ ŁŁŠ Ų§Ł„Ų§Ų³Ł…ŲŸ Ų­Ų³Ł†Ł‹Ų§ŲŒ Ų„Ų°Ų§ ŁƒŲ§Ł† Ł…ŁˆŁ‚Ų¹Łƒ ŁŠŲ­ŲŖŁˆŁŠ Ų¹Ł„Ł‰ ŁˆŲ§Ų­ŲÆŲŒ ŁŲ³ŲŖŲ±Ų§Ł‡ ŁŁŠ Ų¹Ł†ŁˆŲ§Ł† ŲŖŁ†Ł‚Ł„ Ł…ŁˆŁ‚Ų¹ŁŠ. + +Ų¹Ł†ŲÆŁ…Ų§ ŲŖŲ³Ų­ŲØ ŲŖŲ¹Ł„ŁŠŁ‚Ł‹Ų§ ŁŁŠ ŲŖŁ†ŲØŁŠŁ‡Ų§ŲŖŁƒ Ų„Ł„Ł‰ Ų§Ł„ŁŠŲ³Ų§Ų±ŲŒ Ł„Ł† ŲŖŲ±Ł‰ Ų®ŁŠŲ§Ų± "Ų³Ł„Ų© Ų§Ł„Ł…Ł‡Ł…Ł„Ų§ŲŖ" ŲØŲ¹ŲÆ Ų§Ł„Ų¢Ł†. ŲØŲÆŁ„Ų§Ł‹ Ł…Ł† Ų°Ł„ŁƒŲŒ Ų³ŲŖŲ±Ł‰ Ų®ŁŠŲ§Ų±Ų§ŲŖ "Ų¹ŲÆŁ… Ų§Ł„Ł…ŁˆŲ§ŁŁ‚Ų© Ų¹Ł„Ł‰ Ų§Ł„ŲŖŲ¹Ł„ŁŠŁ‚" Łˆ"Ų§Ł„Ł…ŁˆŲ§ŁŁ‚Ų© Ų¹Ł„Ł‰ Ų§Ł„ŲŖŲ¹Ł„ŁŠŁ‚". Ł†Ų­Ł† Ł…Ł† Ł†ŲŖŁˆŁ„Ł‰ Ų§Ł„Ł…ŁˆŲ§ŁŁ‚Ų©. diff --git a/fastlane/metadata/de-DE/release_notes.txt b/fastlane/metadata/de-DE/release_notes.txt new file mode 100644 index 000000000000..63e33bfa9d0f --- /dev/null +++ b/fastlane/metadata/de-DE/release_notes.txt @@ -0,0 +1,11 @@ +Wir haben eine kleine, aber sehr nĆ¼tzliche Ƅnderung am Block-Editor vorgenommen: Der Button ā€žBlock hinzufĆ¼genā€œ ist besser zu erkennen, wenn du den Editor zuerst ohne ausgewƤhlte Blƶcke ƶffnest. Zudem haben wir eine von drei Fehlerbenachrichtigungen entfernt, die angezeigt wurden, wenn ein Medien- oder Audioblock nicht hochgeladen werden konnteĀ ā€“ das war zu viel des Guten. + +Wenn du MenĆ¼eintrƤge neu anordnest, wirst du bemerken, dass wir einige Funktionen zur Barrierefreiheit beim VoiceOver-Erlebnis optimiert haben. Die Anweisungen und Hinweise sind klarer und die MenĆ¼hierarchie klingt logischer. + +Wir haben bei der Website-Erstellung eine neue Ansicht hinzugefĆ¼gt, auf der du den Intent fĆ¼r deine Website eingeben kannst. Diese Ansicht haben wir mit einer kleinen Benutzergruppe getestet. Daher glauben wir, dass sie dir auch gefallen wird. + +Bei der Web-Vorschau werden Benachrichtigungen am Ende des Bildschirms nicht mehr abgeschnitten, wenn deine Browser-Werkzeugleiste angezeigt wird. + +Ist ein Name wichtig? Nun, falls deine Website einen hat, wird er dir im Navigationstitel unter ā€žMeine Websiteā€œ angezeigt. + +Wenn du bei einem Kommentar in deinen Benachrichtigungen nach links wischst, wird dir nicht mehr die Option ā€žPapierkorbā€œ angezeigt. Stattdessen siehst du die Optionen ā€žKommentar zurĆ¼ckweisenā€œ und ā€žKommentar genehmigenā€œ. Genehmigt. diff --git a/fastlane/metadata/fr-FR/release_notes.txt b/fastlane/metadata/fr-FR/release_notes.txt new file mode 100644 index 000000000000..ab025f8e6723 --- /dev/null +++ b/fastlane/metadata/fr-FR/release_notes.txt @@ -0,0 +1,11 @@ +Nous avons apportĆ© un petit changement, mais non des moindres, Ć  lā€™Ć©diteur de blocsĀ : le bouton Ā«Ā Ajouter un blocĀ Ā» gagne en visibilitĆ© lors de la premiĆØre ouverture de lā€™Ć©diteur, lorsquā€™aucun bloc nā€™est encore sĆ©lectionnĆ©. Nous avons Ć©galement supprimĆ© lā€™une des trois notifications dā€™erreur (cā€™Ć©tait un peu exagĆ©rĆ©) lors de lā€™Ć©chec de chargement dā€™un bloc mĆ©dia ou audio. + +Vous entendrez certains changements dans lā€™expĆ©rience dā€™accessibilitĆ© VoiceOver lors de la rĆ©organisation des Ć©lĆ©ments de menu. Les instructions et notifications sont plus claires, et la hiĆ©rarchie du menu a plus de sens Ć  voix haute. + +Nous avons ajoutĆ© un nouvel Ć©cran au processus de crĆ©ation de site, oĆ¹ vous pouvez saisir lā€™intention de ce dernier. Nous avons testĆ© cet Ć©cran auprĆØs dā€™un petit groupe dā€™utilisateurs - il devrait aussi vous plaireĀ ! + +Les aperƧus Web ne couperont pas les notifications au bas de lā€™Ć©cran lorsque la barre dā€™outils de votre navigateur sera visible. + +Un nom bien choisi peut ĆŖtre un rĆ©el atout. Si vous avez donnĆ© un nom Ć  votre site, vous le verrez dans le titre de navigation de lā€™Ć©cran Mon site. + +Lorsque vous effectuerez un balayage vers la gauche sur un commentaire dans vos notifications, vous ne verrez plus lā€™option Ā«Ā DĆ©placer vers la corbeilleĀ Ā», mais Ā«Ā DĆ©sapprouver le commentaireĀ Ā» et Ā«Ā Approuver le commentaireĀ Ā». On approuveĀ ! diff --git a/fastlane/metadata/he/release_notes.txt b/fastlane/metadata/he/release_notes.txt new file mode 100644 index 000000000000..fd7370aa7529 --- /dev/null +++ b/fastlane/metadata/he/release_notes.txt @@ -0,0 +1,11 @@ +ביצענו שינוי קטן אך עוצמ×Ŗי בעו×Øך הבלוקים: ה×Ŗצוגה של הכפ×Ŗו×Ø 'להוהיף בלוק' ב×Øו×Øה יו×Ŗ×Ø ×›××©×Ø ×¤×•×Ŗחים ל×Øאשונה א×Ŗ העו×Øך ללא בלוקים שנבח×Øו. ×”×”×Øנו גם אח×Ŗ משלוש הודעו×Ŗ השגיאה שמופיעו×Ŗ כאש×Ø × ×›×©×œ×Ŗ הטעינה של בלוק מדיה או אודיו ā€“ חשבנו ששלוש היו יו×Ŗ×Ø ×ž×“×™. + +אפש×Ø ×œ×©×ž×•×¢ גם כמה שינויים בנגישו×Ŗ בחוויי×Ŗ השימוש עם VoiceOver כאש×Ø ×ž×©× ×™× א×Ŗ הד×Ø ×”×¤×Øיטים ב×Ŗפ×Øיט. ההו×Øאו×Ŗ וההודעו×Ŗ ב×Øו×Øו×Ŗ יו×Ŗ×Ø ×•×”×”×™×Ø×Øכיה של ה×Ŗפ×Øיט הגיוני×Ŗ יו×Ŗ×Ø ×œ×§×Øיאה בקול. + +הוהפנו מהך חדש ל×Ŗהליך יצי×Ø×Ŗ הא×Ŗ×Ø ×•×›×¢×Ŗ אפש×Ø ×œ×”×–×™×Ÿ א×Ŗ הכוונה של הא×Ŗ×Ø ×©×œ×š. בדקנו א×Ŗ המהך הזה מול קבוצה קטנה של מש×Ŗמשים ואנחנו חושבים שהוא ימצא חן גם בעיניך. + +×Ŗצוגו×Ŗ מקדימו×Ŗ לפ×Ø×™×”×Ŗ אינט×Øנט כב×Ø ×œ× חו×Ŗכו×Ŗ הודעו×Ŗ שמוצגו×Ŗ ב×Ŗח×Ŗי×Ŗ המהך כאש×Ø ×”×Øגל הכלים של הדפדפן מוצג. + +איפה שמנו א×Ŗ השם? אם הענק×Ŗ לא×Ŗ×Ø ×©×œ×š שם, הוא יוצג בכו×Ŗ×Ø×Ŗ הניווט של 'הא×Ŗ×Ø ×©×œ×™'. + +כאש×Ø ×¢×•×ž×“×™× על ×Ŗגובה ומחליקים שמאלה במקטע 'הודעו×Ŗ', לא ×Ŗופיע עוד האפש×Øו×Ŗ 'להעבי×Ø ×œ×¤×—'. במקום, יופיעו האפש×Øויו×Ŗ 'לבטל אישו×Ø ×Ŗגובה' ו'לאש×Ø ×Ŗגובה'. אנחנו מאוש×Øים. diff --git a/fastlane/metadata/it/release_notes.txt b/fastlane/metadata/it/release_notes.txt new file mode 100644 index 000000000000..3082a1220969 --- /dev/null +++ b/fastlane/metadata/it/release_notes.txt @@ -0,0 +1,11 @@ +Abbiamo apportato alcune piccole ma significative modifiche all'editor a blocchi: il pulsante "Aggiungi blocco" ĆØ ora visibile alla prima apertura dell'editor senza i blocchi selezionati. Abbiamo anche rimosso una delle tre notifiche di errore quando un blocco Media o Audio non si caricava: sembrava eccessivo. + +Sentirai alcune ottimizzazioni all'accessibilitĆ  nell'esperienza VoiceOver durante la riorganizzazione degli elementi di menu. Le istruzioni e gli avvisi sono piĆ¹ chiari e la gerarchia del menu ha piĆ¹ senso ad alta voce. + +Abbiamo aggiunto una nuova schermata al processo di creazione del sito in cui puoi inserire lo scopo del sito. Abbiamo provato questa schermata con un piccolo gruppo di utenti e pensiamo potrĆ  piacere anche a te. + +Le anteprime web non interromperanno le notifiche nella parte inferiore dello schermo quando la barra degli strumenti del browser ĆØ visibile. + +Cosa c'ĆØ in un nome? Se il sito ne ha uno, lo vedrai nel titolo della navigazione Il mio sito. + +Quando scorri verso sinistra su un commento nelle Notifiche, non vedrai piĆ¹ l'opzione "Sposta nel cestino". Vedrai invece "Rimuovi l'approvazione del commento" e "Approva commento". Approviamo. diff --git a/fastlane/metadata/ja/release_notes.txt b/fastlane/metadata/ja/release_notes.txt new file mode 100644 index 000000000000..a144a3267f99 --- /dev/null +++ b/fastlane/metadata/ja/release_notes.txt @@ -0,0 +1,11 @@ +惖惭惃ć‚Æć‚Øćƒ‡ć‚£ć‚æćƒ¼ć«å°ć•ć„ćŖćŒć‚‰ć‚‚é‡č¦ćŖå¤‰ę›“ć‚’åŠ ćˆć¾ć—ćŸć€‚ćƒ–ćƒ­ćƒƒć‚Æ悒éøꊞ恗恦恄ćŖ恄ēŠ¶ę…‹ć§ć‚Øćƒ‡ć‚£ć‚æćƒ¼ć‚’åˆć‚ć¦é–‹ć„ćŸćØćć«ć€ć€Œćƒ–ćƒ­ćƒƒć‚Æ悒čæ½åŠ ć€ćƒœć‚æćƒ³ćŒć“ć‚Œć¾ć§ć‚ˆć‚Šć‚‚ć‚ć‹ć‚Šć‚„ć™ćč”Øē¤ŗć•ć‚Œć¾ć™ć€‚ ć¾ćŸć€ćƒ”ćƒ‡ć‚£ć‚¢ćƒ–ćƒ­ćƒƒć‚Æć‚„éŸ³å£°ćƒ–ćƒ­ćƒƒć‚Æć‚’ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ć§ććŖć‹ć£ćŸćØćć«č”Øē¤ŗ恕悌悋3恤恮ć‚Øćƒ©ćƒ¼é€šēŸ„恮恆恔态äøč¦ćØę€ć‚ć‚Œć‚‹ć‚‚ć®ć‚’1ć¤å‰Šé™¤ć—ć¾ć—ćŸć€‚ + +VoiceOver 悒ä½æć£ć¦ćƒ”ćƒ‹ćƒ„ćƒ¼é …ē›®ć‚’äø¦ć¹ę›æćˆć‚‹éš›ć«ć€ć‚¢ć‚Æć‚»ć‚·ćƒ“ćƒŖćƒ†ć‚£ć®čŖæę•“ć«é–¢ć™ć‚‹ć‚¬ć‚¤ćƒ€ćƒ³ć‚¹ćŒå†ē”Ÿć•ć‚Œć¾ć™ć€‚ ꉋ順悄ę³Øꄏē‚¹ćŒę˜Žē¢ŗ恫ćŖć‚Šć€ćƒ”ćƒ‹ćƒ„ćƒ¼éšŽå±¤ć‚’éŸ³å£°ć§ē¢ŗčŖć—ć‚„ć™ććŖć‚Šć¾ć—ćŸć€‚ + +ć‚µć‚¤ćƒˆä½œęˆę™‚ć«ć€ćć®ć‚µć‚¤ćƒˆć®ē›®ēš„ć‚’å…„åŠ›ć§ćć‚‹ē”»é¢ć‚’ę–°ćŸć«čæ½åŠ ć—ć¾ć—ćŸć€‚ 恓恮ē”»é¢ćÆå°č¦ęØ”ć®ćƒ¦ćƒ¼ć‚¶ćƒ¼ć‚°ćƒ«ćƒ¼ćƒ—ć§ę¤œčØ¼ć•ć‚ŒćŸć‚‚ć®ć§ć™ćŒć€ēš†ć•ć¾ć«ć‚‚ę°—ć«å…„ć£ć¦ć„ćŸć ć‘ć‚‹ćØę€ć„ć¾ć™ć€‚ + +ćƒ–ćƒ©ć‚¦ć‚¶ćƒ¼ć®ćƒ„ćƒ¼ćƒ«ćƒćƒ¼ćŒč”Øē¤ŗć•ć‚Œć¦ć„ć‚‹ćØć€ć‚¦ć‚§ćƒ–ćƒ—ćƒ¬ćƒ“ćƒ„ćƒ¼ć§ē”»é¢äø‹éƒØ恮通ēŸ„ćŒč¦‹ćˆćŖ恏ćŖć£ć¦ć—ć¾ć†å•é”ŒćŒč§£ę¶ˆć•ć‚Œć¾ć—ćŸć€‚ + +åå‰ć«ćÆ恩悓ćŖę„å‘³ćŒč¾¼ć‚ć‚‰ć‚Œć¦ć„ć¾ć™ć‹ ? ć‚µć‚¤ćƒˆåć«ē”±ę„ćŒć‚ć‚‹å “åˆć€ć€Œå‚åŠ ć‚µć‚¤ćƒˆć€ć®ćƒŠćƒ“ć‚²ćƒ¼ć‚·ćƒ§ćƒ³ć‚æć‚¤ćƒˆćƒ«ć«č”Øē¤ŗć§ćć¾ć™ć€‚ + +通ēŸ„ć®ć‚³ćƒ”ćƒ³ćƒˆć‚’å·¦ć«ć‚¹ćƒÆ悤惗恗恟ćØćć®ć€Œć‚“ćƒŸē®±ćøē§»å‹•ć€ć‚Ŗćƒ—ć‚·ćƒ§ćƒ³ćŒč”Øē¤ŗ恕悌ćŖ恏ćŖć‚Šć¾ć—ćŸć€‚ 今後ćÆć€Œć‚³ćƒ”ćƒ³ćƒˆć‚’ę‰æčŖć—ćŖ恄怍ćØć€Œć‚³ćƒ”ćƒ³ćƒˆć‚’ę‰æčŖć™ć‚‹ć€ćŒä»£ć‚ć‚Šć«č”Øē¤ŗć•ć‚Œć¾ć™ć€‚ 当ē¤¾ć§ę‰æčŖć‚’č”Œć„ć¾ć™ć€‚ diff --git a/fastlane/metadata/ko/release_notes.txt b/fastlane/metadata/ko/release_notes.txt new file mode 100644 index 000000000000..3f33ae43d1bd --- /dev/null +++ b/fastlane/metadata/ko/release_notes.txt @@ -0,0 +1,11 @@ +ėø”ė” ķŽøģ§‘źø°ģ— ģž‘ģ§€ė§Œ ź°•ė „ķ•œ ė³€ź²½ ģ‚¬ķ•­ģ„ ģ ģš©ķ–ˆģŠµė‹ˆė‹¤. ėø”ė”ģ„ ģ„ ķƒķ•˜ģ§€ ģ•Šź³  ķŽøģ§‘źø°ė„¼ ģ²˜ģŒ ģ—“ ė•Œ "ėø”ė” ģ¶”ź°€" ė²„ķŠ¼ģ“ ė” ģž˜ ė³“ģž…ė‹ˆė‹¤. ė˜ķ•œ ėÆøė””ģ–“ ė˜ėŠ” ģ˜¤ė””ģ˜¤ ėø”ė”ģ“ ģ—…ė”œė“œė˜ģ§€ ģ•Šģ„ ė•Œ ķ‘œģ‹œė˜ėŠ” 3ź°€ģ§€ ģ˜¤ė„˜ ģ•Œė¦¼ ģ¤‘ ģ§€ė‚˜ģ¹˜ė‹¤ź³  ėŠź»“ģ”Œė˜ ķ•˜ė‚˜ė„¼ ģ œź±°ķ–ˆģŠµė‹ˆė‹¤. + +ė©”ė‰“ ķ•­ėŖ©ģ„ ģž¬ģ •ė ¬ķ•  ė•Œ VoiceOver ķ™˜ź²½ģ˜ ģ¼ė¶€ ģ ‘ź·¼ģ„±ģ“ ģ”°ģ •ė©ė‹ˆė‹¤. ģ§€ģ¹Øź³¼ ź³µģ§€ź°€ ė” ėŖ…ķ™•ķ•˜ź³ , ė©”ė‰“ ź³„ģøµźµ¬ģ”°ź°€ ķ›Øģ”¬ ģž˜ ģ“ķ•“ė©ė‹ˆė‹¤. + +ģ‚¬ģ“ķŠøģ˜ ģ˜ė„ė„¼ ģž…ė „ķ•  ģˆ˜ ģžˆėŠ” ģƒˆ ķ™”ė©“ģ„ ģ‚¬ģ“ķŠø ģƒģ„± ķ”„ė”œģ„øģŠ¤ģ— ģ¶”ź°€ķ–ˆģŠµė‹ˆė‹¤. ģž‘ģ€ ģ‚¬ģš©ģž ź·øė£¹ģœ¼ė”œ ģ“ ķ™”ė©“ģ„ ķ…ŒģŠ¤ķŠøķ–ˆģœ¼ė©° ė§ˆģŒģ— ė“œģ‹œė¦¬ė¼ ģƒź°ķ•©ė‹ˆė‹¤. + +ģ›¹ ėÆøė¦¬ė³“źø°ģ—ģ„œ ėøŒė¼ģš°ģ € ė„źµ¬ ėŖØģŒģ“ ķ‘œģ‹œė  ė•Œ ķ™”ė©“ ķ•˜ė‹Ø ģ•Œė¦¼ģ“ ģž˜ė¦¬ģ§€ ģ•ŠģŠµė‹ˆė‹¤. + +ģ“ė¦„ģ€ ģ–“ė–»ź²Œ ė˜ė‚˜ģš”? ģ‚¬ģ“ķŠøģ— ģ“ė¦„ģ“ ģžˆģœ¼ė©“ ė‚“ ģ‚¬ģ“ķŠø ķƒģƒ‰ ģ œėŖ©ģ“ ķ‘œģ‹œė©ė‹ˆė‹¤. + +ģ•Œė¦¼ģ—ģ„œ ėŒ“źø€ģ„ ģ™¼ģŖ½ģœ¼ė”œ ģ‚“ģ§ ė°€ ė•Œ ģ“ģ œėŠ” "ķœ“ģ§€ķ†µ" ģ˜µģ…˜ģ“ ķ‘œģ‹œė˜ģ§€ ģ•ŠģŠµė‹ˆė‹¤. ź·ø ėŒ€ģ‹ ģ— "ėŒ“źø€ ėÆøģŠ¹ģø"ź³¼ "ėŒ“źø€ ģŠ¹ģø"ģ“ ķ‘œģ‹œė©ė‹ˆė‹¤. ģžė™ģœ¼ė”œ ģŠ¹ģøė©ė‹ˆė‹¤. diff --git a/fastlane/metadata/nl-NL/release_notes.txt b/fastlane/metadata/nl-NL/release_notes.txt new file mode 100644 index 000000000000..4637ce371f6a --- /dev/null +++ b/fastlane/metadata/nl-NL/release_notes.txt @@ -0,0 +1,11 @@ +We hebben een kleine maar toffe aanpassing gedaan aan de blokeditor: de knop 'Blokken toevoegen' is nu duidelijker weergegeven als je de editor opent wanneer er nog geen blokken zijn geselecteerd. Daarnaast hebben we een van de drie foutmeldingen verwijderd die bij een mislukte upload van een media- of audioblok verschijnt. Deze leek overbodig. + +Je zult enkele kleine veranderingen aan de toegankelijkheid merken in de VoiceOver wanneer je delen van het menu opnieuw ordent. Instructies en berichtgevingen zijn duidelijker en de menuhiĆ«rarchie is logischer wanneer deze wordt uitgesproken. + +We hebben een nieuw scherm aan het aanmaakproces van websites toegevoegd, waar je het doel van je site kunt invoeren. We hebben dit scherm getest bij een kleine groep gebruikers en denken dat je dit ook leuk zult vinden. + +Voorbeeldweergaven van websites snijden meldingen onderaan het scherm niet meer af wanneer de browserwerkbalk open staat. + +Shakespeare schreef ooit: What's in a name? Nou, als je site een naam heeft, zie je deze in de navigatietitel bij Mijn site. + +Als je naar links veegt bij een opmerking in je meldingen, zie je geen optie 'Prullenbak' meer. In plaats daarvan zie je 'Opmerking afkeuren' en 'Opmerking goedkeuren'. We keuren het goed. diff --git a/fastlane/metadata/ru/release_notes.txt b/fastlane/metadata/ru/release_notes.txt new file mode 100644 index 000000000000..c6e7b0c5a525 --- /dev/null +++ b/fastlane/metadata/ru/release_notes.txt @@ -0,0 +1,11 @@ +ŠœŃ‹ Š²Š½ŠµŃŠ»Šø Š½ŠµŠ±Š¾Š»ŃŒŃˆŠ¾Šµ, Š½Š¾ Š²Š°Š¶Š½Š¾Šµ ŠøŠ·Š¼ŠµŠ½ŠµŠ½ŠøŠµ Š² рŠµŠ“Š°ŠŗтŠ¾Ń€ Š±Š»Š¾ŠŗŠ¾Š²: ŠŗŠ½Š¾ŠæŠŗŠ° "Š”Š¾Š±Š°Š²Šøть Š±Š»Š¾Šŗ" стŠ°Š»Š° Š»ŃƒŃ‡ŃˆŠµ Š²ŠøŠ“Š½Š° ŠæрŠø Š¾Ń‚ŠŗрытŠøŠø рŠµŠ“Š°ŠŗтŠ¾Ń€Š° Š±ŠµŠ· Š²Ń‹Š±Ń€Š°Š½Š½Ń‹Ń… Š±Š»Š¾ŠŗŠ¾Š². ŠšŃ€Š¾Š¼Šµ тŠ¾Š³Š¾, Š¼Ń‹ уŠ“Š°Š»ŠøŠ»Šø Š¾Š“Š½Š¾ ŠøŠ· трёх уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠ¹ Š¾Š± Š¾ŃˆŠøŠ±ŠŗŠµ ŠæрŠø Š½ŠµŃƒŃŠæŠµŃˆŠ½Š¾Š¹ Š²Ń‹Š³Ń€ŃƒŠ·ŠŗŠµ Š¼ŠµŠ“ŠøŠ°- ŠøŠ»Šø Š°ŃƒŠ“ŠøŠ¾Š±Š»Š¾ŠŗŠ°, тŠ°Šŗ ŠŗŠ°Šŗ Š¾Š½Š¾ Š±Ń‹Š»Š¾ ŠøŠ·Š±Ń‹Ń‚Š¾Ń‡Š½Ń‹Š¼. + +Š’Ń‹ усŠ»Ń‹ŃˆŠøтŠµ Š½ŠµŠŗŠ¾Ń‚Š¾Ń€Ń‹Šµ ŠøŠ·Š¼ŠµŠ½ŠµŠ½Šøя Š² ŠøŠ½Ń‚ŠµŃ€Ń„ŠµŠ¹ŃŠµ VoiceOver Š“Š»Ń сŠ»Š°Š±Š¾Š²ŠøŠ“ящŠøх, ŠŗŠ¾Š³Š“Š° Š±ŃƒŠ“ŠµŃ‚Šµ Š¼ŠµŠ½ŃŃ‚ŃŒ ŠæŠ¾Ń€ŃŠ“Š¾Šŗ эŠ»ŠµŠ¼ŠµŠ½Ń‚Š¾Š² Š¼ŠµŠ½ŃŽ. Š˜Š½ŃŃ‚Ń€ŃƒŠŗцŠøŠø Šø уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½Šøя стŠ°Š»Šø Š±Š¾Š»ŠµŠµ Š½Š°Š³Š»ŃŠ“Š½Ń‹Š¼Šø, Š° ŠøŠµŃ€Š°Ń€Ń…Šøя Š¼ŠµŠ½ŃŽĀ ā€” Š±Š¾Š»ŠµŠµ Š»Š¾Š³ŠøчŠ½Š¾Š¹. + +ŠœŃ‹ Š“Š¾Š±Š°Š²ŠøŠ»Šø Š½Š¾Š²Ń‹Š¹ эŠŗрŠ°Š½ Š² ŠæрŠ¾Ń†ŠµŃŃ сŠ¾Š·Š“Š°Š½Šøя сŠ°Š¹Ń‚Š°, Š½Š° ŠŗŠ¾Ń‚Š¾Ń€Š¾Š¼ Š¼Š¾Š¶Š½Š¾ уŠŗŠ°Š·Š°Ń‚ŃŒ ŠæрŠµŠ“Š½Š°Š·Š½Š°Ń‡ŠµŠ½ŠøŠµ сŠ°Š¹Ń‚Š°. Š­ŠŗрŠ°Š½ Š±Ń‹Š» ŠæрŠ¾Ń‚ŠµŃŃ‚ŠøрŠ¾Š²Š°Š½ Š½ŠµŠ±Š¾Š»ŃŒŃˆŠ¾Š¹ Š³Ń€ŃƒŠæŠæŠ¾Š¹ ŠæŠ¾Š»ŃŒŠ·Š¾Š²Š°Ń‚ŠµŠ»ŠµŠ¹, Šø Š¼Ń‹ Š½Š°Š“ŠµŠµŠ¼ŃŃ, чтŠ¾ Š²Š°Š¼ Š¾Š½ тŠ°ŠŗŠ¶Šµ ŠæŠ¾Š½Ń€Š°Š²Šøтся. + +ŠžŠŗŠ½Š¾ ŠæрŠµŠ“Š²Š°Ń€ŠøтŠµŠ»ŃŒŠ½Š¾Š³Š¾ ŠæрŠ¾ŃŠ¼Š¾Ń‚Ń€Š° Š²ŠµŠ±-стрŠ°Š½Šøц Š½Šµ усŠµŠŗŠ°ŠµŃ‚ уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½Šøя Š² Š½ŠøŠ¶Š½ŠµŠ¹ чŠ°ŃŃ‚Šø эŠŗрŠ°Š½Š° ŠæрŠø Š¾Ń‚Š¾Š±Ń€Š°Š¶ŠµŠ½ŠøŠø ŠæŠ°Š½ŠµŠ»Šø ŠøŠ½ŃŃ‚Ń€ŃƒŠ¼ŠµŠ½Ń‚Š¾Š² Š±Ń€Š°ŃƒŠ·ŠµŃ€Š°. + +Š§Ń‚Š¾ Š“Š°Ń‘Ń‚ Š½Š°Š·Š²Š°Š½ŠøŠµ? Š•ŃŠ»Šø у Š²Š°ŃˆŠµŠ³Š¾ сŠ°Š¹Ń‚Š° ŠµŃŃ‚ŃŒ Š½Š°Š·Š²Š°Š½ŠøŠµ, Š¾Š½Š¾ Š¾Ń‚Š¾Š±Ń€Š°Š¶Š°ŠµŃ‚ся Š² Š·Š°Š³Š¾Š»Š¾Š²ŠŗŠµ Š¾ŠŗŠ½Š° Š½Š°Š²ŠøŠ³Š°Ń†ŠøŠø "ŠœŠ¾Š¹ сŠ°Š¹Ń‚". + +ŠŸŃ€Šø сŠ¼Š°Ń…ŠøŠ²Š°Š½ŠøŠø ŠŗŠ¾Š¼Š¼ŠµŠ½Ń‚Š°Ń€Šøя Š²Š»ŠµŠ²Š¾ Š² рŠ°Š·Š“ŠµŠ»Šµ уŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠ¹ Š±Š¾Š»ŃŒŃˆŠµ Š½Šµ Š¾Ń‚Š¾Š±Ń€Š°Š¶Š°ŠµŃ‚ся Š¾ŠæцŠøя "ŠšŠ¾Ń€Š·ŠøŠ½Š°". Š’Š¼ŠµŃŃ‚Š¾ Š½ŠµŠ³Š¾ Š¾Ń‚Š¾Š±Ń€Š°Š¶Š°ŃŽŃ‚ся Š¾ŠæцŠøŠø "ŠžŃ‚Š¼ŠµŠ½Šøть утŠ²ŠµŃ€Š¶Š“ŠµŠ½ŠøŠµ ŠŗŠ¾Š¼Š¼ŠµŠ½Ń‚Š°Ń€Šøя" Šø "Š£Ń‚Š²ŠµŃ€Š“Šøть ŠŗŠ¾Š¼Š¼ŠµŠ½Ń‚Š°Ń€ŠøŠ¹". ŠœŃ‹ Š¾Š“Š¾Š±Ń€ŃŠµŠ¼. diff --git a/fastlane/metadata/sv/release_notes.txt b/fastlane/metadata/sv/release_notes.txt new file mode 100644 index 000000000000..4fb7dcf5a04a --- /dev/null +++ b/fastlane/metadata/sv/release_notes.txt @@ -0,0 +1,11 @@ +Vi har gjort en liten men viktig Ƥndring i blockredigeraren: knappen "LƤgg till block" Ƥr nu mer synlig nƤr du ƶppnar redigeraren och inte har valt nĆ„gra block. Vi har Ƥven tagit bort ett av de tre felmeddelandena som visades om uppladdningen av en mediafil eller ett ljudblock misslyckades ā€“ det behƶvdes helt enkelt inte. + +Du kommer dessutom att kunna hƶra nĆ„gra tillgƤnglighetsfƶrbƤttringar i VoiceOver-upplevelsen nƤr du arrangerar om menyval. Instruktionerna och meddelandena Ƥr nu tydligare och menyhierarkin lĆ„ter mer vettig. + +Vi har lagt till en ny skƤrm i processen fƶr webbplatsskapande, dƤr du kan ange syftet med din webbplats. Vi har testat den hƤr skƤrmen med en lite grupp anvƤndare och vi tror att du ocksĆ„ kommer att gilla den. + +Webbfƶrhandsgranskningar kommer inte lƤngre att skƤra av meddelanden lƤngst ner pĆ„ skƤrmen nƤr din webblƤsares verktygsfƤlt Ƥr synligt. + +Vad sƤger ett namn? Om din webbplats har ett kommer du i alla fall att se det i navigeringsrubriken fƶr Min webbplats. + +NƤr du sveper Ć„t vƤnster pĆ„ en kommentar i dina Notiser kommer du inte lƤngre att se alternativet "Ta bort". IstƤllet kommer alternativen "GodkƤnn ej kommentar" och "GodkƤnn kommentar" att visas. Det godkƤnner vi. diff --git a/fastlane/metadata/tr/release_notes.txt b/fastlane/metadata/tr/release_notes.txt new file mode 100644 index 000000000000..a5bdb54632d5 --- /dev/null +++ b/fastlane/metadata/tr/release_notes.txt @@ -0,0 +1,11 @@ +Blok dĆ¼zenleyicide kĆ¼Ć§Ć¼k ama gĆ¼Ć§lĆ¼ bir değişiklik yaptık: DĆ¼zenleyiciyi hiƧbir blok seƧili olmadan ilk aƧtığınızda "Blok Ekle" dĆ¼ÄŸmesi artık daha kolay gƶrĆ¼lĆ¼yor. Ayrıca, bir ortam veya ses bloku yĆ¼klenemediğinde gƶrĆ¼nen ve insanı bezdiren Ć¼Ć§ hata bildiriminden birini kaldırdık. + +Artık menĆ¼ Ć¶ÄŸelerini yeniden dĆ¼znelerken VoiceOver deneyiminde erişilebilirlikle ilgili bazı ipuƧları duyacaksınız. Talimatlar ve bildirimler artık daha net, ses ƶzellikli menĆ¼ hiyerarşisi ise daha anlamlı. + +Site oluşturma işlemine sitenizin amacını girebileceğiniz yeni bir ekran eklendi. Bu ekran kĆ¼Ć§Ć¼k bir kullanıcı grubuyla test edildi, sizin de beğeneceğinizi dĆ¼ÅŸĆ¼nĆ¼yoruz. + +Tarayıcı araƧ Ƨubuğunuz gƶrĆ¼nĆ¼r durumdayken web ƶnizlemeleri artık ekranın alt kısmındaki bildirimleri engellemiyor. + +Ya ad? Sitenizde varsa, bunu Sitem gezinme başlığında gƶrĆ¼rsĆ¼nĆ¼z. + +Bildirimlerinizden bir yorumu sola kaydırdığınızda artık "Ƈƶp Kutusu" seƧeneğini gƶrmeyeceksiniz. Bunun yerine "Yorumu Onaylama" ve "Yorumu Onayla" mesajlarını gƶreceksiniz. Biz onaylıyoruz. diff --git a/fastlane/metadata/zh-Hans/release_notes.txt b/fastlane/metadata/zh-Hans/release_notes.txt new file mode 100644 index 000000000000..7eac1afeb8fe --- /dev/null +++ b/fastlane/metadata/zh-Hans/release_notes.txt @@ -0,0 +1,11 @@ +ęˆ‘ä»¬åƹåŒŗ块ē¼–č¾‘å™Ø做äŗ†äø€äøŖå¾®å°č€Œå¼ŗ大ēš„ę›“ę”¹ļ¼šå½“ę‚Øé¦–ę¬”ę‰“å¼€ęœŖ选ꋩåŒŗ块ēš„ē¼–č¾‘å™Øę—¶ļ¼Œā€œę·»åŠ åŒŗ块ā€ęŒ‰é’®ä¼šę›“åŠ ę˜¾ēœ¼ć€‚ åŖ’ä½“ęˆ–éŸ³é¢‘åŒŗ块äøŠä¼ å¤±č“„后ļ¼Œęˆ‘们也会ē§»é™¤äø‰äøŖ错čÆÆ通ēŸ„äø­ēš„å…¶äø­äø€äøŖ - čæ™ę„Ÿč§‰čæ‡ēŠ¹äøåŠć€‚ + +å½“é‡ę–°ęŽ’åˆ—čœå•é”¹ę—¶ļ¼Œę‚Ø将åœØ VoiceOver 体éŖŒäø­å¬åˆ°äø€äŗ›åÆč®æé—®ę€§å¾®č°ƒć€‚ čÆ“ę˜Žå’Œé€šēŸ„ę›“åŠ ęø…ę™°ļ¼Œå¹¶äø”čœå•å±‚ēŗ§ę›“ęœ‰ę„ä¹‰ć€‚ + +ęˆ‘ä»¬åœØē«™ē‚¹åˆ›å»ŗčæ‡ē؋äø­ę·»åŠ äŗ†ę–°å±å¹•ļ¼Œę‚ØåÆä»„č¾“å…„ē«™ē‚¹ę„å›¾ć€‚ ęˆ‘ä»¬ē”Øäø€å°ē»„ē”Øęˆ·ęµ‹čƕäŗ†ę­¤å±å¹•ļ¼Œå¹¶äø”ęˆ‘ä»¬ē›øäæ”ę‚Øä¹Ÿä¼šå–œę¬¢ć€‚ + +ę˜¾ē¤ŗęµč§ˆå™Øå·„å…·ę ę—¶ļ¼Œē½‘é”µé¢„č§ˆäøä¼šåˆ‡ę–­å±å¹•åŗ•ē«Æēš„通ēŸ„怂 + +名ē§°é‡Œęœ‰ä»€ä¹ˆļ¼Ÿ å¦‚ęžœę‚Øēš„ē«™ē‚¹ęœ‰äø€äøŖ名ē§°ļ¼Œę‚Ø将åœØā€œęˆ‘ēš„ē«™ē‚¹ā€åƼčˆŖę ‡é¢˜äø­ēœ‹åˆ°čƄ名ē§°ć€‚ + +åœØā€œé€šēŸ„ā€äø­å‘å·¦ę»‘åŠØčƄč®ŗę—¶ļ¼Œę‚Ø将äøä¼šå†ēœ‹åˆ°ā€œå›žę”¶ē«™ā€é€‰é”¹ć€‚ ē›ø反ēš„ę˜Æļ¼Œę‚Ø将ēœ‹åˆ°ā€œäøę‰¹å‡†čƄč®ŗā€å’Œā€œę‰¹å‡†čƄč®ŗā€ć€‚ ęˆ‘ä»¬å¤§åŠ›ę”Æꌁ怂 diff --git a/fastlane/metadata/zh-Hant/release_notes.txt b/fastlane/metadata/zh-Hant/release_notes.txt new file mode 100644 index 000000000000..41fb94d4707e --- /dev/null +++ b/fastlane/metadata/zh-Hant/release_notes.txt @@ -0,0 +1,11 @@ +ęˆ‘å€‘å°å€å”Šē·Øč¼Æå™Øé€²č”Œäŗ†ē“°å¾®å»é‡å¤§ēš„čŖæę•“ļ¼šé¦–ꬔ開啟ē·Øč¼Æå™Øäø”ęœŖéøå–å€å”Šę™‚ļ¼Œć€Œę–°å¢žå€å”Šć€ęŒ‰éˆ•č®Šå¾—ꛓé”Æēœ¼äŗ†ć€‚ ęˆ‘å€‘ä¹Ÿē§»é™¤äŗ†åœØåŖ’é«”ęˆ–éŸ³č؊區唊äøŠå‚³å¤±ę•—Ꙃēš„éŒÆčŖ¤é€šēŸ„之äø€ (åŽŸęœ¬å…±ęœ‰äø‰å€‹éŒÆčŖ¤é€šēŸ„)ļ¼Œå› ē‚ŗ這é”Æå¾—ęœ‰é»žå¤šé¤˜ć€‚ + +重ꖰꎒåŗéø單項ē›®ę™‚ļ¼Œä½ ęœƒåœØ VoiceOver äø­č½åˆ°äø€äŗ›č¼”åŠ©åŠŸčƒ½čŖæꕓ怂 ę“ä½œęŒ‡ē¤ŗ和通ēŸ„č®Šå¾—ę›“ęø…ę„šäŗ†ļ¼Œéøå–®éšŽå±¤ä¹Ÿč®Šå¾—ę›“ęø…ę™°å„½ę‡‚ć€‚ + +ęˆ‘å€‘åœØē¶²ē«™å»ŗē«‹ęµē؋äø­ę–°å¢žäø€å€‹ē•«é¢ļ¼ŒåÆč®“ä½ č¼øå…„ē¶²ē«™ē”Ø途怂 ęˆ‘å€‘å·²č«‹äø€ē¾¤ä½æē”Ø者ęø¬č©¦éŽę­¤ē•«é¢ļ¼Œęƒ³åæ…ä½ ä¹Ÿęœƒå–œę­”ēš„怂 + +ē•«é¢å‡ŗē¾ē€č¦½å™Øå·„å…·åˆ—ę™‚ļ¼Œē¶²é é č¦½äøęœƒåˆ‡ęŽ‰ē•«é¢åŗ•éƒØēš„通ēŸ„äŗ†ć€‚ + +ē‚ŗē¶²ē«™å‘½åäŗ†å—Žļ¼Ÿ å¦‚ęžœęœ‰ļ¼Œä½ ęœƒåœØ怌ꈑēš„ē¶²ē«™ć€å°Žč¦½ęؙ锌äø­ēœ‹åˆ°ē¶²ē«™åēØ±ć€‚ + +åœØ通ēŸ„äø­å°‡ē•™čØ€å‘å·¦ę»‘å‹•ę™‚ļ¼Œä½ äøęœƒå†ēœ‹åˆ°ć€Œåžƒåœ¾ę”¶ć€éø項怂 ē•«é¢ęœƒę”¹ē‚ŗé”Æē¤ŗć€Œé§å›žē•™čØ€ć€å’Œć€Œę ø准ē•™čØ€ć€ć€‚ ęˆ‘å€‘å¾ˆč“Šč³žę­¤čØ­čØˆć€‚ From 4f2821951e1b13ae19a350caf061a1a266c45393 Mon Sep 17 00:00:00 2001 From: James Frost Date: Fri, 29 Apr 2022 09:58:48 +0100 Subject: [PATCH 141/166] Lint fix --- .../Stats/Insights/StatsLatestPostSummaryInsightsCell.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift b/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift index 30c4d41a7480..d34dfa510c3c 100644 --- a/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift +++ b/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift @@ -213,7 +213,7 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig } private enum TextContent { - static let publishDate = NSLocalizedString("stats.insights.latestPostSummary.publishDate", value: "Published %@", comment: "Publish date of a post displayed in Stats. Placeholder will be replaced with a localized relative time, e.g. 2 days ago") + static let publishDate = NSLocalizedString("stats.insights.latestPostSummary.publishDate", value: "Published %@", comment: "Publish date of a post displayed in Stats. Placeholder will be replaced with a localized relative time, e.g. 2 days ago") static let views = NSLocalizedString("stats.insights.latestPostSummary.views", value: "Views", comment: "Title for Views count in Latest Post Summary stats card.") static let likes = NSLocalizedString("stats.insights.latestPostSummary.likes", value: "Likes", comment: "Title for Likes count in Latest Post Summary stats card.") static let comments = NSLocalizedString("stats.insights.latestPostSummary.comments", value: "Comments", comment: "Title for Comments count in Latest Post Summary stats card.") From 7e062c84e7606302f05a20b578d8a7516ec27dc8 Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Fri, 29 Apr 2022 11:35:52 +0200 Subject: [PATCH 142/166] Update for change requests --- RELEASE-NOTES.txt | 2 +- .../ReaderCommentsFollowPresenter.swift | 1 - .../Reader/ReaderShowMenuAction.swift | 13 +++++++----- .../ReaderSubscribeCommentsAction.swift | 20 +++++++++++++++++++ .../AtomicAuthenticationServiceTests.swift | 2 +- 5 files changed, 30 insertions(+), 8 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 777d39bca4de..ab2484506711 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -5,7 +5,7 @@ * [*] Quick Start: Updated the Stats tour. The tour can now be accessed from either the dashboard or the menu tab. [#18413] * [*] Quick Start: Updated the Reader tour. The tour now highlights the Discover tab and guides users to follow topics via the Settings screen. [#18450] * [*] [internal] Quick Start: Refactored some code related to the tasks displayed in the Quick Start Card and the Quick Start modal. It should have no visible changes but could cause regressions. [#18395] -* [**] Follow Conversation flow now enables in-app notifications by default. They were updated to be opt-out rather than opt-in. +* [**] Follow Conversation flow now enables in-app notifications by default. They were updated to be opt-out rather than opt-in. [#18449] * [**] We'll now ask users logging in which area of the app they'd like to focus on to build towards a more personalized experience. [#18385] 19.7 diff --git a/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsFollowPresenter.swift b/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsFollowPresenter.swift index 3c056ad808aa..d3d24c21c008 100644 --- a/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsFollowPresenter.swift +++ b/WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsFollowPresenter.swift @@ -66,7 +66,6 @@ class ReaderCommentsFollowPresenter: NSObject { } // Show notice with Undo option. Push Notifications are opt-out. - self?.trackNotificationsToggled(isNotificationEnabled: true) self?.updateNotificationSettings(shouldEnableNotifications: true, canUndo: true) } } diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderShowMenuAction.swift b/WordPress/Classes/ViewRelated/Reader/ReaderShowMenuAction.swift index 5e5eb5ef7d02..d6261b5da785 100644 --- a/WordPress/Classes/ViewRelated/Reader/ReaderShowMenuAction.swift +++ b/WordPress/Classes/ViewRelated/Reader/ReaderShowMenuAction.swift @@ -140,9 +140,14 @@ final class ReaderShowMenuAction { style: .default, handler: { (action: UIAlertAction) in if let post: ReaderPost = ReaderActionHelpers.existingObject(for: post.objectID, in: context) { - ReaderSubscribeCommentsAction().execute(with: post, context: context, followCommentsService: followCommentsService) { + Self.trackToggleCommentSubscription(isSubscribed: post.isSubscribedComments, post: post, sourceViewController: vc) + + ReaderSubscribeCommentsAction().execute( + with: post, + context: context, + followCommentsService: followCommentsService, + sourceViewController: vc) { (vc as? ReaderDetailViewController)?.updateFollowButtonState() - Self.trackToggleCommentSubscription(isSubscribed: post.isSubscribedComments, post: post, sourceViewController: vc) } } }) @@ -187,9 +192,7 @@ final class ReaderShowMenuAction { } private static func sourceForTrackingEvents(sourceViewController: UIViewController) -> String { - if sourceViewController is ReaderCommentsViewController { - return "reader_threaded_comments" - } else if sourceViewController is ReaderDetailViewController { + if sourceViewController is ReaderDetailViewController { return "reader_post_details_comments" } else if sourceViewController is ReaderStreamViewController { return "reader" diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift b/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift index 09763557cd5d..a799e84ce4e2 100644 --- a/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift +++ b/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift @@ -3,6 +3,7 @@ final class ReaderSubscribeCommentsAction { func execute(with post: ReaderPost, context: NSManagedObjectContext, followCommentsService: FollowCommentsService, + sourceViewController: UIViewController, completion: (() -> Void)? = nil, failure: ((Error?) -> Void)? = nil) { @@ -12,6 +13,7 @@ final class ReaderSubscribeCommentsAction { followCommentsService.toggleNotificationSettings(subscribing, success: { ReaderHelpers.dispatchToggleSubscribeCommentMessage(subscribing: subscribing, success: subscribeSuccess) { actionSuccess in self.disableNotificationSettings(followCommentsService: followCommentsService) + Self.trackNotificationUndo(post: post, sourceViewController: sourceViewController) } completion?() }, failure: { error in @@ -34,4 +36,22 @@ final class ReaderSubscribeCommentsAction { ReaderHelpers.dispatchToggleCommentNotificationMessage(subscribing: false, success: false) }) } + + private static func trackNotificationUndo(post: ReaderPost, sourceViewController: UIViewController) { + var properties = [String: Any]() + properties["notifications_enabled"] = false + properties[WPAppAnalyticsKeyBlogID] = post.siteID + properties[WPAppAnalyticsKeySource] = sourceForTrackingEvents(sourceViewController: sourceViewController) + WPAnalytics.trackReader(.readerToggleCommentNotifications, properties: properties) + } + + private static func sourceForTrackingEvents(sourceViewController: UIViewController) -> String { + if sourceViewController is ReaderDetailViewController { + return "reader_post_details_comments" + } else if sourceViewController is ReaderStreamViewController { + return "reader" + } + + return "unknown" + } } diff --git a/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift b/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift index 9b2410c9f405..4adb09ab672c 100644 --- a/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift +++ b/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift @@ -3,7 +3,7 @@ import UIKit import XCTest @testable import WordPress -class AtomicAuthenticationServiceTests: XCTestCase { +class testGetAuthCookie: XCTestCase { var contextManager: TestContextManager! var atomicService: AtomicAuthenticationService! From cb5226d95387871d3189b308a312145bc2a11107 Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Fri, 29 Apr 2022 13:00:17 +0200 Subject: [PATCH 143/166] Revert unintended class name change --- WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift b/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift index 4adb09ab672c..9b2410c9f405 100644 --- a/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift +++ b/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift @@ -3,7 +3,7 @@ import UIKit import XCTest @testable import WordPress -class testGetAuthCookie: XCTestCase { +class AtomicAuthenticationServiceTests: XCTestCase { var contextManager: TestContextManager! var atomicService: AtomicAuthenticationService! From 4ed188f05efea28ebb632a46319013ee8bfadf42 Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Fri, 29 Apr 2022 14:21:51 +0200 Subject: [PATCH 144/166] Update source for tracking in more button --- .../ViewRelated/Reader/ReaderSubscribeCommentsAction.swift | 2 +- .../WordPressTest/ReaderSubscribeCommentsActionTests.swift | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift b/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift index a799e84ce4e2..27ac54c1e967 100644 --- a/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift +++ b/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift @@ -47,7 +47,7 @@ final class ReaderSubscribeCommentsAction { private static func sourceForTrackingEvents(sourceViewController: UIViewController) -> String { if sourceViewController is ReaderDetailViewController { - return "reader_post_details_comments" + return "more_toggle_comment_notifications" } else if sourceViewController is ReaderStreamViewController { return "reader" } diff --git a/WordPress/WordPressTest/ReaderSubscribeCommentsActionTests.swift b/WordPress/WordPressTest/ReaderSubscribeCommentsActionTests.swift index 927e61cc5ebd..2c5f623a1129 100644 --- a/WordPress/WordPressTest/ReaderSubscribeCommentsActionTests.swift +++ b/WordPress/WordPressTest/ReaderSubscribeCommentsActionTests.swift @@ -21,7 +21,7 @@ final class ReaderSubscribeCommentsActionTests: XCTestCase { sut.execute( with: readerPost, context: context, - followCommentsService: service) { + followCommentsService: service, sourceViewController: UIViewController()) { XCTAssertEqual(service.toggleNotificationSettingsCallCount, 1) XCTAssertEqual(service.toggleSubscribedCallCount, 1) testExpectation.fulfill() @@ -46,6 +46,7 @@ final class ReaderSubscribeCommentsActionTests: XCTestCase { with: readerPost, context: context, followCommentsService: service, + sourceViewController: UIViewController(), completion: nil) { error in XCTAssertEqual(service.toggleSubscribedCallCount, 1) XCTAssertEqual(service.toggleNotificationSettingsCallCount, 0) @@ -71,6 +72,7 @@ final class ReaderSubscribeCommentsActionTests: XCTestCase { with: readerPost, context: context, followCommentsService: service, + sourceViewController: UIViewController(), completion: nil) { error in XCTAssertEqual(service.toggleSubscribedCallCount, 1) XCTAssertEqual(service.toggleNotificationSettingsCallCount, 1) From 0a03fbf3cd3b4e5e128a1a91f96fe45e1b1d28f8 Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Fri, 29 Apr 2022 14:51:44 +0100 Subject: [PATCH 145/166] Update: add internal tag to release notes --- RELEASE-NOTES.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 565ea8b0fd5a..b9bdabeb03c9 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -4,7 +4,7 @@ * [*] [internal] My Site Dashboard: Made some changes to the code architecture of the dashboard. The majority of the changes are related to the posts cards. It should have no visible changes but could cause regressions. Please test it by creating/trashing drafts and scheduled posts and testing that they appear correctly on the dashboard. [#18405] * [*] Quick Start: Updated the Stats tour. The tour can now be accessed from either the dashboard or the menu tab. [#18413] * [*] Quick Start: Updated the Reader tour. The tour now highlights the Discover tab and guides users to follow topics via the Settings screen. [#18450] -* [*] Quick Start: Deleted the Edit your homepage tour. [#18469] +* [*] [internal] Quick Start: Deleted the Edit your homepage tour. [#18469] * [*] [internal] Quick Start: Refactored some code related to the tasks displayed in the Quick Start Card and the Quick Start modal. It should have no visible changes but could cause regressions. [#18395] 19.7 From 6aef2f737d2a099801577682b3ec0285067a10b6 Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Fri, 29 Apr 2022 17:41:06 +0200 Subject: [PATCH 146/166] Rename the source string in `sourceForTrackingEvents` --- .../ViewRelated/Reader/ReaderSubscribeCommentsAction.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift b/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift index 27ac54c1e967..7fd4486454b2 100644 --- a/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift +++ b/WordPress/Classes/ViewRelated/Reader/ReaderSubscribeCommentsAction.swift @@ -47,7 +47,7 @@ final class ReaderSubscribeCommentsAction { private static func sourceForTrackingEvents(sourceViewController: UIViewController) -> String { if sourceViewController is ReaderDetailViewController { - return "more_toggle_comment_notifications" + return "reader_post_details_menu" } else if sourceViewController is ReaderStreamViewController { return "reader" } From 6994e7d79a38d5602dd3d2f5c218a7585491fbf7 Mon Sep 17 00:00:00 2001 From: James Frost Date: Fri, 29 Apr 2022 17:35:54 +0100 Subject: [PATCH 147/166] Stats Insights: Added empty state to latest post summary cell --- .../StatsLatestPostSummaryInsightsCell.swift | 126 ++++++++++++------ 1 file changed, 87 insertions(+), 39 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift b/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift index d34dfa510c3c..a2d5a879228e 100644 --- a/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift +++ b/WordPress/Classes/ViewRelated/Stats/Insights/StatsLatestPostSummaryInsightsCell.swift @@ -1,4 +1,5 @@ import UIKit +import Gridicons class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfigurable { @@ -8,7 +9,9 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig private var lastPostDetails: StatsPostDetails? private var postTitle = StatSection.noPostTitle - private var statsStackView: UIStackView! + private let outerStackView = UIStackView() + private let postStackView = UIStackView() + private let statsStackView = UIStackView() private let postTitleLabel = UILabel() private let postTimestampLabel = UILabel() private let viewCountLabel = UILabel() @@ -16,6 +19,9 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig private let commentCountLabel = UILabel() private let postImageView = CachedAnimatedImageView() + private let noDataLabel = UILabel() + private let createPostButton = UIButton(type: .system) + lazy var imageLoader: ImageLoader = { return ImageLoader(imageView: postImageView, gifStrategy: .mediumGIFs) }() @@ -32,42 +38,46 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig fatalError() } + override func prepareForReuse() { + super.prepareForReuse() + + toggleNoData(show: false) + } + // MARK: - View Configuration private func configureView() { - let stackView = makeOuterStackView() - contentView.addSubview(stackView) + configureOuterStackView() + contentView.addSubview(outerStackView) - let postStackView = makePostStackView() - statsStackView = makeStatsStackView() - stackView.addArrangedSubview(postStackView) - stackView.addArrangedSubview(statsStackView) + configurePostStackView() + configureStatsStackView() + outerStackView.addArrangedSubview(postStackView) + outerStackView.addArrangedSubview(statsStackView) - topConstraint = stackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: StatsBaseCell.Metrics.padding) + topConstraint = outerStackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: StatsBaseCell.Metrics.padding) NSLayoutConstraint.activate([ topConstraint, - stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -StatsBaseCell.Metrics.padding), - stackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: StatsBaseCell.Metrics.padding), - stackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -StatsBaseCell.Metrics.padding), + outerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -StatsBaseCell.Metrics.padding), + outerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: StatsBaseCell.Metrics.padding), + outerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -StatsBaseCell.Metrics.padding), ]) - } - private func makeOuterStackView() -> UIStackView { - let stackView = UIStackView() - stackView.translatesAutoresizingMaskIntoConstraints = false - stackView.axis = .vertical - stackView.spacing = Metrics.outerStackViewSpacing + configureNoDataViews() + } - return stackView + private func configureOuterStackView() { + outerStackView.translatesAutoresizingMaskIntoConstraints = false + outerStackView.axis = .vertical + outerStackView.spacing = Metrics.outerStackViewSpacing } - private func makePostStackView() -> UIStackView { - let stackView = UIStackView() - stackView.translatesAutoresizingMaskIntoConstraints = false - stackView.axis = .horizontal - stackView.alignment = .top - stackView.spacing = Metrics.postStackViewHorizontalSpacing + private func configurePostStackView() { + postStackView.translatesAutoresizingMaskIntoConstraints = false + postStackView.axis = .horizontal + postStackView.alignment = .top + postStackView.spacing = Metrics.postStackViewHorizontalSpacing let postInfoStackView = UIStackView() postInfoStackView.translatesAutoresizingMaskIntoConstraints = false @@ -94,17 +104,14 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig postImageView.layer.cornerRadius = Metrics.thumbnailCornerRadius postImageView.layer.masksToBounds = true - stackView.addArrangedSubviews([postInfoStackView, postImageView]) - - return stackView + postStackView.addArrangedSubviews([postInfoStackView, postImageView]) } - private func makeStatsStackView() -> UIStackView { - let stackView = UIStackView() - stackView.translatesAutoresizingMaskIntoConstraints = false - stackView.axis = .horizontal - stackView.alignment = .top - stackView.spacing = Metrics.postStackViewHorizontalSpacing + private func configureStatsStackView() { + statsStackView.translatesAutoresizingMaskIntoConstraints = false + statsStackView.axis = .horizontal + statsStackView.alignment = .top + statsStackView.spacing = Metrics.postStackViewHorizontalSpacing let viewsStack = makeVerticalStatsStackView(with: viewCountLabel, title: TextContent.views) let likesStack = makeVerticalStatsStackView(with: likeCountLabel, title: TextContent.likes) @@ -113,7 +120,7 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig let divider1 = makeVerticalDivider() let divider2 = makeVerticalDivider() - stackView.addArrangedSubviews([ + statsStackView.addArrangedSubviews([ viewsStack, divider1, likesStack, @@ -124,11 +131,9 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig NSLayoutConstraint.activate([ viewsStack.widthAnchor.constraint(equalTo: likesStack.widthAnchor), likesStack.widthAnchor.constraint(equalTo: commentsStack.widthAnchor), - divider1.heightAnchor.constraint(equalTo: stackView.heightAnchor), - divider2.heightAnchor.constraint(equalTo: stackView.heightAnchor) + divider1.heightAnchor.constraint(equalTo: statsStackView.heightAnchor), + divider2.heightAnchor.constraint(equalTo: statsStackView.heightAnchor) ]) - - return stackView } private func makeVerticalStatsStackView(with countLabel: UILabel, title: String) -> UIStackView { @@ -162,6 +167,22 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig return divider } + private func configureNoDataViews() { + noDataLabel.font = .preferredFont(forTextStyle: .body) + noDataLabel.textColor = .textSubtle + noDataLabel.numberOfLines = 0 + noDataLabel.text = TextContent.noData + + createPostButton.setImage(.gridicon(.create), for: .normal) + createPostButton.setTitle(TextContent.createPost, for: .normal) + + // Increase the padding between the image and title of the button + createPostButton.titleEdgeInsets = UIEdgeInsets(top: 0, left: Metrics.createPostButtonInset, bottom: 0, right: -Metrics.createPostButtonInset) + createPostButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: Metrics.createPostButtonInset) + + createPostButton.addTarget(self, action: #selector(createPostTapped), for: .touchUpInside) + } + // MARK: - Public Configuration func configure(withInsightData lastPostInsight: StatsLastPostInsight?, chartData: StatsPostDetails?, andDelegate delegate: SiteStatsInsightsDelegate?) { @@ -169,7 +190,7 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig statSection = .insightsLatestPostSummary guard let lastPostInsight = lastPostInsight else { - // Old cell shows Create Post if there's no latest post + toggleNoData(show: true) return } @@ -186,6 +207,22 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig commentCountLabel.text = lastPostInsight.commentsCount.abbreviatedString() } + // Switches out the no data views into the main stack view if we have no data. + // + private func toggleNoData(show: Bool) { + if !show && outerStackView.subviews.contains(noDataLabel) { + noDataLabel.removeFromSuperview() + createPostButton.removeFromSuperview() + outerStackView.addArrangedSubviews([postStackView, statsStackView]) + outerStackView.alignment = .fill + } else if show && outerStackView.subviews.contains(postStackView) { + postStackView.removeFromSuperview() + statsStackView.removeFromSuperview() + outerStackView.addArrangedSubviews([noDataLabel, createPostButton]) + outerStackView.alignment = .leading + } + } + private func configureFeaturedImage(url: URL?) { if let url = url, let siteID = SiteStatsInformation.sharedInstance.siteID?.intValue, @@ -202,17 +239,28 @@ class StatsLatestPostSummaryInsightsCell: StatsBaseCell, LatestPostSummaryConfig } } + // MARK: - Actions + + @objc func createPostTapped() { + siteStatsInsightsDelegate?.showCreatePost?() + } + + // MARK: - Constants + private enum Metrics { static let outerStackViewSpacing: CGFloat = 16.0 static let postStackViewHorizontalSpacing: CGFloat = 16.0 static let postStackViewVerticalSpacing: CGFloat = 8.0 static let statsStackViewVerticalSpacing: CGFloat = 8.0 + static let createPostButtonInset: CGFloat = 8.0 static let thumbnailSize: CGFloat = 68.0 static let thumbnailCornerRadius: CGFloat = 4.0 static let dividerWidth: CGFloat = 1.0 } private enum TextContent { + static let noData = NSLocalizedString("stats.insights.latestPostSummary.noData", value: "You haven't published any posts yet. Check back later once you've published your first post!", comment: "Prompt shown in the 'Latest Post Summary' stats card if a user hasn't yet published anything.") + static let createPost = NSLocalizedString("stats.insights.latestPostSummary.createPost", value: "Create Post", comment: "Title of button shown in Stats prompting the user to create a post on their site.") static let publishDate = NSLocalizedString("stats.insights.latestPostSummary.publishDate", value: "Published %@", comment: "Publish date of a post displayed in Stats. Placeholder will be replaced with a localized relative time, e.g. 2 days ago") static let views = NSLocalizedString("stats.insights.latestPostSummary.views", value: "Views", comment: "Title for Views count in Latest Post Summary stats card.") static let likes = NSLocalizedString("stats.insights.latestPostSummary.likes", value: "Likes", comment: "Title for Likes count in Latest Post Summary stats card.") From 88c34528ab7ba972f7912ed043f5ea43bda66b7f Mon Sep 17 00:00:00 2001 From: James Frost Date: Fri, 29 Apr 2022 18:04:44 +0100 Subject: [PATCH 148/166] Stats Insights: Add no data state to new Most Popular Time cell --- .../StatsMostPopularTimeInsightsCell.swift | 69 +++++++++++++++---- 1 file changed, 54 insertions(+), 15 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Stats/Insights/StatsMostPopularTimeInsightsCell.swift b/WordPress/Classes/ViewRelated/Stats/Insights/StatsMostPopularTimeInsightsCell.swift index 058ff6cf4735..5699accc0d99 100644 --- a/WordPress/Classes/ViewRelated/Stats/Insights/StatsMostPopularTimeInsightsCell.swift +++ b/WordPress/Classes/ViewRelated/Stats/Insights/StatsMostPopularTimeInsightsCell.swift @@ -7,6 +7,10 @@ class StatsMostPopularTimeInsightsCell: StatsBaseCell { // MARK: - Subviews + private var outerStackView: UIStackView! + + private var noDataLabel: UILabel! + private var topLeftLabel: UILabel! private var middleLeftLabel: UILabel! private var bottomLeftLabel: UILabel! @@ -27,20 +31,31 @@ class StatsMostPopularTimeInsightsCell: StatsBaseCell { fatalError() } + override func prepareForReuse() { + super.prepareForReuse() + + displayNoData(show: false) + } + // MARK: - View Configuration private func configureView() { - let stackView = makeOuterStackView() - contentView.addSubview(stackView) + outerStackView = makeOuterStackView() + contentView.addSubview(outerStackView) - topConstraint = stackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: StatsBaseCell.Metrics.padding) + topConstraint = outerStackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: StatsBaseCell.Metrics.padding) NSLayoutConstraint.activate([ topConstraint, - stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -StatsBaseCell.Metrics.padding), - stackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: StatsBaseCell.Metrics.padding), - stackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -StatsBaseCell.Metrics.padding), + outerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -StatsBaseCell.Metrics.padding), + outerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: StatsBaseCell.Metrics.padding), + outerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -StatsBaseCell.Metrics.padding), ]) + + noDataLabel = makeNoDataLabel() + contentView.addSubview(noDataLabel) + outerStackView.pinSubviewToAllEdges(noDataLabel) + noDataLabel.isHidden = true } private func makeOuterStackView() -> UIStackView { @@ -112,6 +127,7 @@ class StatsMostPopularTimeInsightsCell: StatsBaseCell { let middleLabel = UILabel() middleLabel.textColor = .text middleLabel.font = .preferredFont(forTextStyle: .title1).bold() + middleLabel.adjustsFontSizeToFitWidth = true let bottomLabel = UILabel() bottomLabel.textColor = .textSubtle @@ -123,6 +139,22 @@ class StatsMostPopularTimeInsightsCell: StatsBaseCell { return (topLabel: topLabel, middleLabel: middleLabel, bottomLabel: bottomLabel) } + private func makeNoDataLabel() -> UILabel { + let label = UILabel() + label.translatesAutoresizingMaskIntoConstraints = false + label.font = .preferredFont(forTextStyle: .body) + label.textColor = .textSubtle + label.numberOfLines = 0 + label.text = TextContent.noData + + return label + } + + private func displayNoData(show: Bool) { + outerStackView.subviews.forEach({ $0.isHidden = show }) + noDataLabel.isHidden = !show + } + // MARK: Public configuration func configure(data: StatsMostPopularTimeData?, siteStatsInsightsDelegate: SiteStatsInsightsDelegate?) { @@ -130,22 +162,29 @@ class StatsMostPopularTimeInsightsCell: StatsBaseCell { self.statSection = .insightsMostPopularTime self.siteStatsInsightsDelegate = siteStatsInsightsDelegate - if let data = data { - topLeftLabel.text = data.mostPopularDayTitle - middleLeftLabel.text = data.mostPopularDay - bottomLeftLabel.text = data.dayPercentage - - topRightLabel.text = data.mostPopularTimeTitle - middleRightLabel.text = data.mostPopularTime - bottomRightLabel.text = data.timePercentage + guard let data = data else { + displayNoData(show: true) + return } + + topLeftLabel.text = data.mostPopularDayTitle + middleLeftLabel.text = data.mostPopularDay + bottomLeftLabel.text = data.dayPercentage + + topRightLabel.text = data.mostPopularTimeTitle + middleRightLabel.text = data.mostPopularTime + bottomRightLabel.text = data.timePercentage } private enum Metrics { - static let horizontalStackViewSpacing: CGFloat = 32.0 + static let horizontalStackViewSpacing: CGFloat = 16.0 static let verticalStackViewSpacing: CGFloat = 8.0 static let dividerWidth: CGFloat = 1.0 } + + private enum TextContent { + static let noData = NSLocalizedString("stats.insights.mostPopularTime.noData", value: "Not enough activity. Check back later when your site's had more visitors!", comment: "Hint displayed on the 'Most Popular Time' stats card when a user's site hasn't yet received enough traffic.") + } } // MARK: - Data / View Model From 76f24937c31b5a9795023d541a198083e030d71e Mon Sep 17 00:00:00 2001 From: David Christiandy <1299411+dvdchr@users.noreply.github.com> Date: Sat, 30 Apr 2022 01:38:25 +0700 Subject: [PATCH 149/166] Add BloggingPromptsService --- Podfile | 4 +- Podfile.lock | 15 ++-- .../Services/BloggingPromptsService.swift | 74 +++++++++++++++++++ WordPress/WordPress.xcodeproj/project.pbxproj | 22 ++++-- 4 files changed, 100 insertions(+), 15 deletions(-) create mode 100644 WordPress/Classes/Services/BloggingPromptsService.swift diff --git a/Podfile b/Podfile index 5fa4c42cdc9b..48713daa248e 100644 --- a/Podfile +++ b/Podfile @@ -47,9 +47,9 @@ def wordpress_ui end def wordpress_kit - pod 'WordPressKit', '~> 4.50.0' + # pod 'WordPressKit', '~> 4.50.0' # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :tag => '' - # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :branch => 'task/18324-site-creation-with-site-name' + pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :branch => 'feature/blogging-prompts-remote' # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :commit => '' # pod 'WordPressKit', :path => '../WordPressKit-iOS' end diff --git a/Podfile.lock b/Podfile.lock index 28b77167d354..9cde71ca1346 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -487,7 +487,7 @@ PODS: - WordPressKit (~> 4.18-beta) - WordPressShared (~> 1.12-beta) - WordPressUI (~> 1.7-beta) - - WordPressKit (4.50.0): + - WordPressKit (4.51.0-beta.1): - Alamofire (~> 4.8.0) - CocoaLumberjack (~> 3.4) - NSObject-SafeExpectations (= 0.0.4) @@ -591,7 +591,7 @@ DEPENDENCIES: - SVProgressHUD (= 2.2.5) - WordPress-Editor-iOS (~> 1.19.8) - WordPressAuthenticator (~> 2.0.0) - - WordPressKit (~> 4.50.0) + - WordPressKit (from `https://github.com/wordpress-mobile/WordPressKit-iOS.git`, branch `feature/blogging-prompts-remote`) - WordPressMocks (~> 0.0.15) - WordPressShared (~> 1.17.1) - WordPressUI (~> 1.12.5) @@ -640,7 +640,6 @@ SPEC REPOS: - UIDeviceIdentifier - WordPress-Aztec-iOS - WordPress-Editor-iOS - - WordPressKit - WordPressMocks - WordPressShared - WordPressUI @@ -753,6 +752,9 @@ EXTERNAL SOURCES: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true :tag: v1.75.0 + WordPressKit: + :branch: feature/blogging-prompts-remote + :git: https://github.com/wordpress-mobile/WordPressKit-iOS.git Yoga: :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/Yoga.podspec.json @@ -768,6 +770,9 @@ CHECKOUT OPTIONS: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true :tag: v1.75.0 + WordPressKit: + :commit: e5618661d0b8f3aa5371d340e2ccb31fb6df495c + :git: https://github.com/wordpress-mobile/WordPressKit-iOS.git SPEC CHECKSUMS: Alamofire: 3ec537f71edc9804815215393ae2b1a8ea33a844 @@ -853,7 +858,7 @@ SPEC CHECKSUMS: WordPress-Aztec-iOS: 7d11d598f14c82c727c08b56bd35fbeb7dafb504 WordPress-Editor-iOS: 9eb9f12f21a5209cb837908d81ffe1e31cb27345 WordPressAuthenticator: 5163f732e4e529781f931f158f54b1a1545bc536 - WordPressKit: b5d9b13e7e627134c583d7c6736efa720b306615 + WordPressKit: 516b88d84ea79503435747fd2ad14f9b0aa8c1f4 WordPressMocks: 6b52b0764d9939408151367dd9c6e8a910877f4d WordPressShared: 0c4bc5e25765732fcf5d07f28c81970ab28493fb WordPressUI: c5be816f6c7b3392224ac21de9e521e89fa108ac @@ -869,6 +874,6 @@ SPEC CHECKSUMS: ZendeskSupportSDK: 3a8e508ab1d9dd22dc038df6c694466414e037ba ZIPFoundation: ae5b4b813d216d3bf0a148773267fff14bd51d37 -PODFILE CHECKSUM: a7ae8e10cd04d593d0975e33ff124062b1306f1c +PODFILE CHECKSUM: 6c9781cee94ccf722431310c643ad558a12e3d78 COCOAPODS: 1.11.2 diff --git a/WordPress/Classes/Services/BloggingPromptsService.swift b/WordPress/Classes/Services/BloggingPromptsService.swift new file mode 100644 index 000000000000..a25ed0b5ae8b --- /dev/null +++ b/WordPress/Classes/Services/BloggingPromptsService.swift @@ -0,0 +1,74 @@ +import CoreData +import WordPressKit + +class BloggingPromptsService { + + private let context: NSManagedObjectContext + private let siteID: NSNumber + private let remote: BloggingPromptsServiceRemote + private let calendar: Calendar = .autoupdatingCurrent + + private var defaultDate: Date { + calendar.date(byAdding: .day, value: -10, to: Date()) ?? Date() + } + + /// Fetches a number of blogging prompts starting from the specified date. + /// When no parameters are specified, this method will attempt to return prompts from ten days ago and two weeks ahead. + /// + /// - Parameters: + /// - date: When specified, only prompts from the specified date will be returned. Defaults to 10 days ago. + /// - number: The amount of prompts to return. Defaults to 24 when unspecified. + /// - success: Closure to be called when the fetch process succeeded. + /// - failure: Closure to be called when the fetch process failed. + func fetchPrompts(from date: Date? = nil, + number: Int = 24, + success: @escaping ([BloggingPrompt]) -> Void, + failure: @escaping (Error?) -> Void) { + let fromDate = date ?? defaultDate + remote.fetchPrompts(for: siteID, number: number, fromDate: fromDate) { result in + switch result { + case .success(let remotePrompts): + // TODO: Upsert into CoreData once the CoreData model is available. + success(remotePrompts.map { BloggingPrompt(with: $0) }) + case .failure(let error): + failure(error) + } + } + } + + required init?(context: NSManagedObjectContext = ContextManager.shared.mainContext, blog: Blog? = nil) { + guard let account = AccountService(managedObjectContext: context).defaultWordPressComAccount(), + let siteID = blog?.dotComID ?? account.primaryBlogID else { + return nil + } + + self.context = context + self.siteID = siteID + self.remote = .init(wordPressComRestApi: account.wordPressComRestV2Api) + } +} + +// MARK: - Temporary model object + +/// This is a temporary model to be replaced with Core Data model once the fields have all been finalized. +struct BloggingPrompt { + let promptID: Int + let text: String + let title: String // for post title + let content: String // for post content + let date: Date + let answered: Bool + let answerCount: Int + let displayAvatarURLs: [URL] + + init(with remotePrompt: RemoteBloggingPrompt) { + promptID = remotePrompt.promptID + text = remotePrompt.text + title = remotePrompt.title + content = remotePrompt.content + date = remotePrompt.date + answered = remotePrompt.answered + answerCount = remotePrompt.answeredUsersCount + displayAvatarURLs = remotePrompt.answeredUserAvatarURLs + } +} diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 6b5c3c59b7c1..f275f71076bb 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -1354,16 +1354,16 @@ 80EF672327F160720063B138 /* DashboardCustomAnnouncementCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF672127F160720063B138 /* DashboardCustomAnnouncementCell.swift */; }; 80EF672527F3D63B0063B138 /* DashboardStatsStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF672427F3D63B0063B138 /* DashboardStatsStackView.swift */; }; 80EF672627F3D63B0063B138 /* DashboardStatsStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF672427F3D63B0063B138 /* DashboardStatsStackView.swift */; }; - 80EF928D280E83110064A971 /* QuickStartToursCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */; }; - 80EF928E280E83110064A971 /* QuickStartToursCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */; }; - 80EF929028105CFA0064A971 /* QuickStartFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */; }; - 80EF929128105CFA0064A971 /* QuickStartFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */; }; - 80EF92932810FA5A0064A971 /* QuickStartFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF92922810FA5A0064A971 /* QuickStartFactoryTests.swift */; }; 80EF9284280CFEB60064A971 /* DashboardPostsSyncManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF9283280CFEB60064A971 /* DashboardPostsSyncManagerTests.swift */; }; 80EF9286280D272E0064A971 /* DashboardPostsSyncManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF9285280D272E0064A971 /* DashboardPostsSyncManager.swift */; }; 80EF9287280D272E0064A971 /* DashboardPostsSyncManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF9285280D272E0064A971 /* DashboardPostsSyncManager.swift */; }; 80EF928A280D28140064A971 /* Atomic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF9289280D28140064A971 /* Atomic.swift */; }; 80EF928B280D28140064A971 /* Atomic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF9289280D28140064A971 /* Atomic.swift */; }; + 80EF928D280E83110064A971 /* QuickStartToursCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */; }; + 80EF928E280E83110064A971 /* QuickStartToursCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */; }; + 80EF929028105CFA0064A971 /* QuickStartFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */; }; + 80EF929128105CFA0064A971 /* QuickStartFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */; }; + 80EF92932810FA5A0064A971 /* QuickStartFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF92922810FA5A0064A971 /* QuickStartFactoryTests.swift */; }; 820ADD701F3A1F88002D7F93 /* ThemeBrowserSectionHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 820ADD6F1F3A1F88002D7F93 /* ThemeBrowserSectionHeaderView.xib */; }; 820ADD721F3A226E002D7F93 /* ThemeBrowserSectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 820ADD711F3A226E002D7F93 /* ThemeBrowserSectionHeaderView.swift */; }; 821738091FE04A9E00BEC94C /* DateAndTimeFormatSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 821738081FE04A9E00BEC94C /* DateAndTimeFormatSettingsViewController.swift */; }; @@ -4586,6 +4586,8 @@ FEA088032696E81F00193358 /* ListTableHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = FEA088022696E81F00193358 /* ListTableHeaderView.xib */; }; FEA088052696F7AA00193358 /* WPStyleGuide+List.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEA088042696F7AA00193358 /* WPStyleGuide+List.swift */; }; FEA5CE7F2701DC8000B41F2A /* AppImages.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 433840C622C2BA5B00CB13F8 /* AppImages.xcassets */; }; + FEA6517B281C491C002EA086 /* BloggingPromptsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEA6517A281C491C002EA086 /* BloggingPromptsService.swift */; }; + FEA6517C281C491C002EA086 /* BloggingPromptsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEA6517A281C491C002EA086 /* BloggingPromptsService.swift */; }; FEA7948D26DD136700CEC520 /* CommentHeaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEA7948C26DD136700CEC520 /* CommentHeaderTableViewCell.swift */; }; FEA7948E26DD136700CEC520 /* CommentHeaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEA7948C26DD136700CEC520 /* CommentHeaderTableViewCell.swift */; }; FEA7949026DF7F3700CEC520 /* WPStyleGuide+CommentDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEA7948F26DF7F3700CEC520 /* WPStyleGuide+CommentDetail.swift */; }; @@ -6109,12 +6111,12 @@ 80EF671E27F135EB0063B138 /* WhatIsNewViewAppearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WhatIsNewViewAppearance.swift; sourceTree = ""; }; 80EF672127F160720063B138 /* DashboardCustomAnnouncementCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardCustomAnnouncementCell.swift; sourceTree = ""; }; 80EF672427F3D63B0063B138 /* DashboardStatsStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardStatsStackView.swift; sourceTree = ""; }; - 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartToursCollection.swift; sourceTree = ""; }; - 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartFactory.swift; sourceTree = ""; }; - 80EF92922810FA5A0064A971 /* QuickStartFactoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartFactoryTests.swift; sourceTree = ""; }; 80EF9283280CFEB60064A971 /* DashboardPostsSyncManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardPostsSyncManagerTests.swift; sourceTree = ""; }; 80EF9285280D272E0064A971 /* DashboardPostsSyncManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardPostsSyncManager.swift; sourceTree = ""; }; 80EF9289280D28140064A971 /* Atomic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Atomic.swift; sourceTree = ""; }; + 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartToursCollection.swift; sourceTree = ""; }; + 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartFactory.swift; sourceTree = ""; }; + 80EF92922810FA5A0064A971 /* QuickStartFactoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartFactoryTests.swift; sourceTree = ""; }; 820ADD6C1F3A0DA0002D7F93 /* WordPress 64.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "WordPress 64.xcdatamodel"; sourceTree = ""; }; 820ADD6F1F3A1F88002D7F93 /* ThemeBrowserSectionHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ThemeBrowserSectionHeaderView.xib; sourceTree = ""; }; 820ADD711F3A226E002D7F93 /* ThemeBrowserSectionHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeBrowserSectionHeaderView.swift; sourceTree = ""; }; @@ -7833,6 +7835,7 @@ FEA088002696E7F600193358 /* ListTableHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListTableHeaderView.swift; sourceTree = ""; }; FEA088022696E81F00193358 /* ListTableHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ListTableHeaderView.xib; sourceTree = ""; }; FEA088042696F7AA00193358 /* WPStyleGuide+List.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WPStyleGuide+List.swift"; sourceTree = ""; }; + FEA6517A281C491C002EA086 /* BloggingPromptsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BloggingPromptsService.swift; sourceTree = ""; }; FEA7948C26DD136700CEC520 /* CommentHeaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommentHeaderTableViewCell.swift; sourceTree = ""; }; FEA7948F26DF7F3700CEC520 /* WPStyleGuide+CommentDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WPStyleGuide+CommentDetail.swift"; sourceTree = ""; }; FEAC916D28001FC4005026E7 /* AvatarTrainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarTrainView.swift; sourceTree = ""; }; @@ -11916,6 +11919,7 @@ F1ADCAF6241FEF0C00F150D2 /* AtomicAuthenticationService.swift */, F12FA5D82428FA8F0054DA21 /* AuthenticationService.swift */, 46F584812624DCC80010A723 /* BlockEditorSettingsService.swift */, + FEA6517A281C491C002EA086 /* BloggingPromptsService.swift */, 822D60B81F4CCC7A0016C46D /* BlogJetpackSettingsService.swift */, 93C1148318EDF6E100DAC95C /* BlogService.h */, 93C1148418EDF6E100DAC95C /* BlogService.m */, @@ -19124,6 +19128,7 @@ C77FC90928009C7000726F00 /* OnboardingQuestionsPromptViewController.swift in Sources */, 8BE6F92C27EE27DB0008BDC7 /* BlogDashboardPostCardGhostCell.swift in Sources */, FA4F660525946B5F00EAA9F5 /* JetpackRestoreHeaderView.swift in Sources */, + FEA6517B281C491C002EA086 /* BloggingPromptsService.swift in Sources */, 436D55DF210F866900CEAA33 /* StoryboardLoadable.swift in Sources */, D8212CC320AA7F57008E8AE8 /* ReaderBlockSiteAction.swift in Sources */, 5D44EB381986D8BA008B7175 /* ReaderSiteService.m in Sources */, @@ -21369,6 +21374,7 @@ FABB253A2602FC2C00C8785C /* WordPressAppDelegate.swift in Sources */, 098B8577275E9765004D299F /* AppLocalizedString.swift in Sources */, FABB253B2602FC2C00C8785C /* MediaService.m in Sources */, + FEA6517C281C491C002EA086 /* BloggingPromptsService.swift in Sources */, FABB253C2602FC2C00C8785C /* FormattableContentAction.swift in Sources */, 3F3DD0B326FD176800F5F121 /* PresentationCard.swift in Sources */, FABB253D2602FC2C00C8785C /* SiteVerticalsService.swift in Sources */, From f15b77b5cc70b9b85e5c438d0359c8c8299bb240 Mon Sep 17 00:00:00 2001 From: David Christiandy <1299411+dvdchr@users.noreply.github.com> Date: Sat, 30 Apr 2022 04:58:15 +0700 Subject: [PATCH 150/166] Add tests for BloggingPromptsService --- Podfile.lock | 2 +- .../Services/BloggingPromptsService.swift | 9 +- WordPress/WordPress.xcodeproj/project.pbxproj | 4 + .../BloggingPromptsServiceTests.swift | 153 ++++++++++++++++++ 4 files changed, 163 insertions(+), 5 deletions(-) create mode 100644 WordPress/WordPressTest/BloggingPromptsServiceTests.swift diff --git a/Podfile.lock b/Podfile.lock index 9cde71ca1346..7f842b5e7311 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -771,7 +771,7 @@ CHECKOUT OPTIONS: :submodules: true :tag: v1.75.0 WordPressKit: - :commit: e5618661d0b8f3aa5371d340e2ccb31fb6df495c + :commit: 32b70527fa0c5430598ae0ce3237f43c5967ae07 :git: https://github.com/wordpress-mobile/WordPressKit-iOS.git SPEC CHECKSUMS: diff --git a/WordPress/Classes/Services/BloggingPromptsService.swift b/WordPress/Classes/Services/BloggingPromptsService.swift index a25ed0b5ae8b..81070597aa91 100644 --- a/WordPress/Classes/Services/BloggingPromptsService.swift +++ b/WordPress/Classes/Services/BloggingPromptsService.swift @@ -2,7 +2,6 @@ import CoreData import WordPressKit class BloggingPromptsService { - private let context: NSManagedObjectContext private let siteID: NSNumber private let remote: BloggingPromptsServiceRemote @@ -36,7 +35,9 @@ class BloggingPromptsService { } } - required init?(context: NSManagedObjectContext = ContextManager.shared.mainContext, blog: Blog? = nil) { + required init?(context: NSManagedObjectContext = ContextManager.shared.mainContext, + remote: BloggingPromptsServiceRemote? = nil, + blog: Blog? = nil) { guard let account = AccountService(managedObjectContext: context).defaultWordPressComAccount(), let siteID = blog?.dotComID ?? account.primaryBlogID else { return nil @@ -44,13 +45,13 @@ class BloggingPromptsService { self.context = context self.siteID = siteID - self.remote = .init(wordPressComRestApi: account.wordPressComRestV2Api) + self.remote = remote ?? .init(wordPressComRestApi: account.wordPressComRestV2Api) } } // MARK: - Temporary model object -/// This is a temporary model to be replaced with Core Data model once the fields have all been finalized. +/// TODO: This is a temporary model to be replaced with Core Data model once the fields have all been finalized. struct BloggingPrompt { let promptID: Int let text: String diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index f275f71076bb..ccda5f5697f0 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -4555,6 +4555,7 @@ FE23EB4C26E7C91F005A1698 /* richCommentStyle.css in Resources */ = {isa = PBXBuildFile; fileRef = FE23EB4826E7C91F005A1698 /* richCommentStyle.css */; }; FE25C235271F23000084E1DB /* ReaderCommentsNotificationSheetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE25C234271F23000084E1DB /* ReaderCommentsNotificationSheetViewController.swift */; }; FE25C236271F23000084E1DB /* ReaderCommentsNotificationSheetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE25C234271F23000084E1DB /* ReaderCommentsNotificationSheetViewController.swift */; }; + FE2E3729281C839C00A1E82A /* BloggingPromptsServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE2E3728281C839C00A1E82A /* BloggingPromptsServiceTests.swift */; }; FE32EFFF275914390040BE67 /* MenuSheetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE32EFFE275914390040BE67 /* MenuSheetViewController.swift */; }; FE32F000275914390040BE67 /* MenuSheetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE32EFFE275914390040BE67 /* MenuSheetViewController.swift */; }; FE32F002275F602E0040BE67 /* CommentContentRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE32F001275F602E0040BE67 /* CommentContentRenderer.swift */; }; @@ -7816,6 +7817,7 @@ FE23EB4726E7C91F005A1698 /* richCommentTemplate.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = richCommentTemplate.html; path = Resources/HTML/richCommentTemplate.html; sourceTree = ""; }; FE23EB4826E7C91F005A1698 /* richCommentStyle.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; name = richCommentStyle.css; path = Resources/HTML/richCommentStyle.css; sourceTree = ""; }; FE25C234271F23000084E1DB /* ReaderCommentsNotificationSheetViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReaderCommentsNotificationSheetViewController.swift; sourceTree = ""; }; + FE2E3728281C839C00A1E82A /* BloggingPromptsServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BloggingPromptsServiceTests.swift; sourceTree = ""; }; FE32EFFE275914390040BE67 /* MenuSheetViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuSheetViewController.swift; sourceTree = ""; }; FE32F001275F602E0040BE67 /* CommentContentRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommentContentRenderer.swift; sourceTree = ""; }; FE32F005275F62620040BE67 /* WebCommentContentRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebCommentContentRenderer.swift; sourceTree = ""; }; @@ -13279,6 +13281,7 @@ 575802122357C41200E4C63C /* MediaCoordinatorTests.swift */, 46B30B772582C7DD00A25E66 /* SiteAddressServiceTests.swift */, 17FC0031264D728E00FCBD37 /* SharingServiceTests.swift */, + FE2E3728281C839C00A1E82A /* BloggingPromptsServiceTests.swift */, ); name = Services; sourceTree = ""; @@ -19771,6 +19774,7 @@ B0A6DEBF2626335F00B5B8EF /* AztecPostViewController+MenuTests.swift in Sources */, 4054F43E221357B600D261AB /* TopCommentedPostStatsRecordValueTests.swift in Sources */, 93B853231B4416A30064FE72 /* WPAnalyticsTrackerAutomatticTracksTests.m in Sources */, + FE2E3729281C839C00A1E82A /* BloggingPromptsServiceTests.swift in Sources */, D848CC0720FF2BE200A9038F /* NotificationContentRangeFactoryTests.swift in Sources */, 732A473F21878EB10015DA74 /* WPRichContentViewTests.swift in Sources */, 8BDA5A6D247C2F8400AB124C /* ReaderDetailViewControllerTests.swift in Sources */, diff --git a/WordPress/WordPressTest/BloggingPromptsServiceTests.swift b/WordPress/WordPressTest/BloggingPromptsServiceTests.swift new file mode 100644 index 000000000000..d135064e1a11 --- /dev/null +++ b/WordPress/WordPressTest/BloggingPromptsServiceTests.swift @@ -0,0 +1,153 @@ +import XCTest + +@testable import WordPress + +final class BloggingPromptsServiceTests: XCTestCase { + private let siteID = 1 + private let timeout: TimeInterval = 2 + private var endpoint: String { + "sites/\(siteID)/blogging-prompts" + } + + private var context: NSManagedObjectContext! + private var remote: BloggingPromptsServiceRemoteMock! + private var service: BloggingPromptsService! + private var blog: Blog! + private var accountService: AccountService! + + override func setUp() { + super.setUp() + + context = TestContextManager().mainContext + remote = BloggingPromptsServiceRemoteMock() + blog = makeBlog() + accountService = makeAccountService() + service = BloggingPromptsService(context: context, remote: remote, blog: blog) + } + + override func tearDown() { + context.reset() + ContextManager.overrideSharedInstance(nil) + + context = nil + remote = nil + blog = nil + accountService = nil + service = nil + super.tearDown() + } + + // MARK: - Tests + + func test_fetchPrompts_givenSuccessfulResult_callsSuccessBlock() { + let expectation = expectation(description: "Fetch prompts should succeed") + + service.fetchPrompts { _ in + // TODO: Add mapping tests once CoreData model is added. + expectation.fulfill() + } failure: { _ in + XCTFail("This closure shouldn't be called.") + expectation.fulfill() + } + + wait(for: [expectation], timeout: timeout) + } + + func test_fetchPrompts_givenFailureResult_callsFailureBlock() { + let expectation = expectation(description: "Fetch prompts should fail") + remote.shouldReturnSuccess = false + + service.fetchPrompts { _ in + XCTFail("This closure shouldn't be called.") + expectation.fulfill() + } failure: { _ in + expectation.fulfill() + } + + wait(for: [expectation], timeout: timeout) + } + + func test_fetchPrompts_givenNoParameters_assignsDefaultValue() { + let expectedDifferenceInHours = 10 * 24 // 10 days ago. + let expectedNumber = 24 + remote.shouldReturnSuccess = false + + // call the fetch just to trigger default parameter assignment. the completion blocks can be ignored. + service.fetchPrompts(success: { _ in }, failure: { _ in }) + + XCTAssertNotNil(remote.passedDateParameter) + let passedDate = remote.passedDateParameter! + let differenceInHours = Calendar.autoupdatingCurrent.dateComponents([.hour], from: passedDate, to: Date()).hour! + XCTAssertEqual(differenceInHours, expectedDifferenceInHours) + + XCTAssertNotNil(remote.passedNumberParameter) + XCTAssertEqual(remote.passedNumberParameter!, expectedNumber) + } + + func test_fetchPrompts_givenValidParameters_passesThemToRemote() { + let expectedDate = BloggingPromptsServiceRemoteMock.dateFormatter.date(from: "2022-01-02")! + let expectedNumber = 10 + remote.shouldReturnSuccess = false + + // call the fetch just to trigger default parameter assignment. the completion blocks can be ignored. + service.fetchPrompts(from: expectedDate, number: expectedNumber, success: { _ in }, failure: { _ in }) + + XCTAssertNotNil(remote.passedDateParameter) + XCTAssertEqual(remote.passedDateParameter!, expectedDate) + + XCTAssertNotNil(remote.passedNumberParameter) + XCTAssertEqual(remote.passedNumberParameter!, expectedNumber) + } +} + + +// MARK: - Helpers + +private extension BloggingPromptsServiceTests { + func makeAccountService() -> AccountService { + let service = AccountService(managedObjectContext: context) + let account = service.createOrUpdateAccount(withUsername: "testuser", authToken: "authtoken") + account.userID = NSNumber(value: 1) + service.setDefaultWordPressComAccount(account) + + return service + } + + func makeBlog() -> Blog { + return BlogBuilder(context).isHostedAtWPcom().build() + } +} + +class BloggingPromptsServiceRemoteMock: BloggingPromptsServiceRemote { + var passedSiteID: NSNumber? = nil + var passedNumberParameter: Int? = nil + var passedDateParameter: Date? = nil + var shouldReturnSuccess: Bool = true + + override func fetchPrompts(for siteID: NSNumber, + number: Int? = nil, + fromDate: Date? = nil, + completion: @escaping (Result<[RemoteBloggingPrompt], Error>) -> Void) { + passedSiteID = siteID + passedNumberParameter = number + passedDateParameter = fromDate + + if shouldReturnSuccess { + completion(.success([])) + } else { + completion(.failure(Errors.failed)) + } + } + + enum Errors: Error { + case failed + } + + static var dateFormatter: DateFormatter = { + let formatter = DateFormatter() + formatter.locale = .init(identifier: "en_US_POSIX") + formatter.dateFormat = "yyyy-MM-dd" + + return formatter + }() +} From 98dc3b777d8e2cc5f82b66b5e2a2b92153e74e3c Mon Sep 17 00:00:00 2001 From: Tony Li Date: Sat, 30 Apr 2022 15:07:51 +1200 Subject: [PATCH 151/166] Remove "context saved" expectation from CoreDataStack mocks They are moved to test methods. --- .../WordPressTest/AccountServiceTests.swift | 1 - .../AtomicAuthenticationServiceTests.swift | 1 - WordPress/WordPressTest/BlogJetpackTest.m | 20 ++++------ WordPress/WordPressTest/ContextManagerMock.h | 2 - WordPress/WordPressTest/ContextManagerMock.m | 38 ++----------------- .../NotificationSyncMediatorTests.swift | 21 +++++----- WordPress/WordPressTest/TestContextManager.h | 2 - WordPress/WordPressTest/TestContextManager.m | 31 +-------------- 8 files changed, 24 insertions(+), 92 deletions(-) diff --git a/WordPress/WordPressTest/AccountServiceTests.swift b/WordPress/WordPressTest/AccountServiceTests.swift index d37876344052..cafceee99e92 100644 --- a/WordPress/WordPressTest/AccountServiceTests.swift +++ b/WordPress/WordPressTest/AccountServiceTests.swift @@ -10,7 +10,6 @@ class AccountServiceTests: XCTestCase { super.setUp() contextManager = TestContextManager() - contextManager.requiresTestExpectation = false accountService = AccountService(managedObjectContext: contextManager.mainContext) } diff --git a/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift b/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift index 9b2410c9f405..e9ca0d2a3299 100644 --- a/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift +++ b/WordPress/WordPressTest/AtomicAuthenticationServiceTests.swift @@ -11,7 +11,6 @@ class AtomicAuthenticationServiceTests: XCTestCase { super.setUp() contextManager = TestContextManager() - contextManager.requiresTestExpectation = false let api = WordPressComRestApi(oAuthToken: "") let remote = AtomicAuthenticationServiceRemote(wordPressComRestApi: api) diff --git a/WordPress/WordPressTest/BlogJetpackTest.m b/WordPress/WordPressTest/BlogJetpackTest.m index a4684e6aa603..29117d42611e 100644 --- a/WordPress/WordPressTest/BlogJetpackTest.m +++ b/WordPress/WordPressTest/BlogJetpackTest.m @@ -75,19 +75,17 @@ - (void)testJetpackUsername { } - (void)testJetpackSetupDoesntReplaceDotcomAccount { - XCTestExpectation *saveExpectation = [self expectationWithDescription:@"Context save expectation"]; - self.testContextManager.testExpectation = saveExpectation; + XCTestExpectation *saveExpectation = [self expectationForNotification:NSManagedObjectContextDidSaveNotification object:self.testContextManager.mainContext handler:nil]; AccountService *accountService = [[AccountService alloc] initWithManagedObjectContext:[ContextManager sharedInstance].mainContext]; WPAccount *wpComAccount = [accountService createOrUpdateAccountWithUsername:@"user" authToken:@"token"]; - [self waitForExpectationsWithTimeout:2.0 handler:nil]; + [self waitForExpectations:@[saveExpectation] timeout:2.0]; WPAccount * defaultAccount = [accountService defaultWordPressComAccount]; XCTAssertEqualObjects(wpComAccount, defaultAccount); - saveExpectation = [self expectationWithDescription:@"Context save expectation"]; - self.testContextManager.testExpectation = saveExpectation; + saveExpectation = [self expectationForNotification:NSManagedObjectContextDidSaveNotification object:self.testContextManager.mainContext handler:nil]; [accountService createOrUpdateAccountWithUsername:@"test1" authToken:@"token1"]; - [self waitForExpectationsWithTimeout:2.0 handler:nil]; + [self waitForExpectations:@[saveExpectation] timeout:2.0]; defaultAccount = [accountService defaultWordPressComAccount]; XCTAssertEqualObjects(wpComAccount, defaultAccount); } @@ -101,8 +99,7 @@ - (void)testWPCCShouldntDuplicateBlogs { statusCode:200 headers:@{@"Content-Type":@"application/json"}]; }]; - XCTestExpectation *saveExpectation = [self expectationWithDescription:@"Context save expectation"]; - self.testContextManager.testExpectation = saveExpectation; + XCTestExpectation *saveExpectation = [self expectationForNotification:NSManagedObjectContextDidSaveNotification object:self.testContextManager.mainContext handler:nil]; AccountService *accountService = [[AccountService alloc] initWithManagedObjectContext:self.testContextManager.mainContext]; BlogService *blogService = [[BlogService alloc] initWithManagedObjectContext:self.testContextManager.mainContext]; @@ -130,7 +127,7 @@ - (void)testWPCCShouldntDuplicateBlogs { }; // Wait on the merge to be completed - [self waitForExpectationsWithTimeout:2.0 handler:nil]; + [self waitForExpectations:@[saveExpectation] timeout:2.0]; // test.blog + wp.com + jetpack XCTAssertEqual(1, [accountService numberOfAccounts]); @@ -174,8 +171,7 @@ - (void)testSyncBlogsMigratesJetpackSSL statusCode:200 headers:@{@"Content-Type":@"application/json"}]; }]; - XCTestExpectation *saveExpectation = [self expectationWithDescription:@"Context save expectation"]; - self.testContextManager.testExpectation = saveExpectation; + XCTestExpectation *saveExpectation = [self expectationForNotification:NSManagedObjectContextDidSaveNotification object:self.testContextManager.mainContext handler:nil]; AccountService *accountService = [[AccountService alloc] initWithManagedObjectContext:self.testContextManager.mainContext]; BlogService *blogService = [[BlogService alloc] initWithManagedObjectContext:self.testContextManager.mainContext]; @@ -192,7 +188,7 @@ - (void)testSyncBlogsMigratesJetpackSSL jetpackBlog.url = @"https://jetpack.example.com/"; // Wait on the merge to be completed - [self waitForExpectationsWithTimeout:2.0 handler:nil]; + [self waitForExpectations:@[saveExpectation] timeout:2.0]; XCTAssertEqual(1, [accountService numberOfAccounts]); // test.blog + wp.com + jetpack (legacy) diff --git a/WordPress/WordPressTest/ContextManagerMock.h b/WordPress/WordPressTest/ContextManagerMock.h index fff26a79621d..3fa9ea33d916 100644 --- a/WordPress/WordPressTest/ContextManagerMock.h +++ b/WordPress/WordPressTest/ContextManagerMock.h @@ -9,9 +9,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, readwrite, strong) NSManagedObjectModel *managedObjectModel; @property (nonatomic, readwrite, strong) NSPersistentStoreCoordinator *persistentStoreCoordinator; @property (nonatomic, readonly, strong) NSPersistentStoreCoordinator *standardPSC; -@property (nonatomic, readwrite, assign) BOOL requiresTestExpectation; @property (nonatomic, readonly, strong) NSURL *storeURL; -@property (nonatomic, nullable, readwrite, strong) XCTestExpectation *testExpectation; @end /** diff --git a/WordPress/WordPressTest/ContextManagerMock.m b/WordPress/WordPressTest/ContextManagerMock.m index 781146be15b3..86468bf88ec8 100644 --- a/WordPress/WordPressTest/ContextManagerMock.m +++ b/WordPress/WordPressTest/ContextManagerMock.m @@ -13,8 +13,6 @@ @implementation ContextManagerMock @synthesize persistentStoreCoordinator = _persistentStoreCoordinator; @synthesize mainContext = _mainContext; @synthesize managedObjectModel = _managedObjectModel; -@synthesize requiresTestExpectation = _requiresTestExpectation; -@synthesize testExpectation = _testExpectation; - (instancetype)init { @@ -23,7 +21,6 @@ - (instancetype)init // Override the shared ContextManager [ContextManager internalSharedInstance]; [ContextManager overrideSharedInstance:self]; - _requiresTestExpectation = YES; } return self; @@ -79,40 +76,13 @@ - (NSManagedObjectContext *)mainContext return _mainContext; } -- (void)saveContext:(NSManagedObjectContext *)context -{ - [self saveContext:context withCompletionBlock:^{ - if (self.testExpectation) { - [self.testExpectation fulfill]; - self.testExpectation = nil; - } else if (self.requiresTestExpectation) { - NSLog(@"No test expectation present for context save"); - } - }]; -} - - (void)saveContextAndWait:(NSManagedObjectContext *)context { [super saveContextAndWait:context]; - if (self.testExpectation) { - [self.testExpectation fulfill]; - self.testExpectation = nil; - } else if (self.requiresTestExpectation) { - NSLog(@"No test expectation present for context save"); - } -} - -- (void)saveContext:(NSManagedObjectContext *)context withCompletionBlock:(void (^)(void))completionBlock -{ - [super saveContext:context withCompletionBlock:^{ - if (self.testExpectation) { - [self.testExpectation fulfill]; - self.testExpectation = nil; - } else if (self.requiresTestExpectation) { - NSLog(@"No test expectation present for context save"); - } - completionBlock(); - }]; + // FIXME: Remove this method to use superclass one instead + // This log magically resolves a deadlock in + // `ZDashboardCardTests.testShouldNotShowQuickStartIfDefaultSectionIsSiteMenu` + NSLog(@"Context save completed"); } - (NSURL *)storeURL diff --git a/WordPress/WordPressTest/NotificationSyncMediatorTests.swift b/WordPress/WordPressTest/NotificationSyncMediatorTests.swift index 941d648ce65a..f267be4a0dbe 100644 --- a/WordPress/WordPressTest/NotificationSyncMediatorTests.swift +++ b/WordPress/WordPressTest/NotificationSyncMediatorTests.swift @@ -62,8 +62,7 @@ class NotificationSyncMediatorTests: XCTestCase { XCTAssert(manager.mainContext.countObjects(ofType: Notification.self) == 0) // CoreData Expectations - manager.testExpectation = expectation(description: "Context save expectation") - + let contextSaved = expectation(forNotification: .NSManagedObjectContextDidSave, object: manager.mainContext) // Mediator Expectations let expect = expectation(description: "Sync") @@ -74,7 +73,7 @@ class NotificationSyncMediatorTests: XCTestCase { expect.fulfill() } - waitForExpectations(timeout: timeout, handler: nil) + wait(for: [contextSaved, expect], timeout: timeout) } @@ -129,7 +128,7 @@ class NotificationSyncMediatorTests: XCTestCase { XCTAssert(manager.mainContext.countObjects(ofType: Notification.self) == 0) // CoreData Expectations - manager.testExpectation = expectation(description: "Context save expectation") + let contextSaved = expectation(forNotification: .NSManagedObjectContextDidSave, object: manager.mainContext) // Mediator Expectations let expect = expectation(description: "Sync") @@ -141,7 +140,7 @@ class NotificationSyncMediatorTests: XCTestCase { expect.fulfill() } - waitForExpectations(timeout: timeout, handler: nil) + wait(for: [contextSaved, expect], timeout: timeout) } @@ -161,7 +160,7 @@ class NotificationSyncMediatorTests: XCTestCase { XCTAssertFalse(note.read) // CoreData Expectations - manager.testExpectation = expectation(description: "Context save expectation") + let contextSaved = expectation(forNotification: .NSManagedObjectContextDidSave, object: manager.mainContext) // Mediator Expectations let expect = expectation(description: "Mark as Read") @@ -172,7 +171,7 @@ class NotificationSyncMediatorTests: XCTestCase { expect.fulfill() } - waitForExpectations(timeout: timeout, handler: nil) + wait(for: [contextSaved, expect], timeout: timeout) } /// Verifies that Mark Notifications as Read effectively toggles a Notifications' read flag @@ -197,7 +196,7 @@ class NotificationSyncMediatorTests: XCTestCase { XCTAssertTrue(note2.read) // CoreData Expectations - manager.testExpectation = expectation(description: "Context save expectation") + let contextSaved = expectation(forNotification: .NSManagedObjectContextDidSave, object: manager.mainContext) // Mediator Expectations let expect = expectation(description: "Mark as Read") @@ -210,7 +209,7 @@ class NotificationSyncMediatorTests: XCTestCase { expect.fulfill() } - waitForExpectations(timeout: timeout, handler: nil) + wait(for: [contextSaved, expect], timeout: timeout) } /// Verifies that Mark Notifications as Read modifies only the specified notifications' read status @@ -235,7 +234,7 @@ class NotificationSyncMediatorTests: XCTestCase { XCTAssertTrue(note2.read) // CoreData Expectations - manager.testExpectation = expectation(description: "Context save expectation") + let contextSaved = expectation(forNotification: .NSManagedObjectContextDidSave, object: manager.mainContext) // Mediator Expectations let expect = expectation(description: "Mark as Read") @@ -247,7 +246,7 @@ class NotificationSyncMediatorTests: XCTestCase { expect.fulfill() } - waitForExpectations(timeout: timeout, handler: nil) + wait(for: [contextSaved, expect], timeout: timeout) } diff --git a/WordPress/WordPressTest/TestContextManager.h b/WordPress/WordPressTest/TestContextManager.h index 0dab35a15bab..c338c938d1e3 100644 --- a/WordPress/WordPressTest/TestContextManager.h +++ b/WordPress/WordPressTest/TestContextManager.h @@ -18,9 +18,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, readwrite, strong) NSManagedObjectModel *managedObjectModel; @property (nonatomic, readwrite, strong) NSPersistentStoreCoordinator *persistentStoreCoordinator; @property (nonatomic, readonly, strong) NSPersistentStoreCoordinator *standardPSC; -@property (nonatomic, readwrite, assign) BOOL requiresTestExpectation; @property (nonatomic, readonly, strong) NSURL *storeURL; -@property (nonatomic, nullable, readwrite, strong) XCTestExpectation *testExpectation; @property (nonatomic, strong, nullable) id stack; diff --git a/WordPress/WordPressTest/TestContextManager.m b/WordPress/WordPressTest/TestContextManager.m index 5e7c2da267ec..39e0971d639a 100644 --- a/WordPress/WordPressTest/TestContextManager.m +++ b/WordPress/WordPressTest/TestContextManager.m @@ -14,7 +14,6 @@ - (instancetype)init if (self) { // Override the shared ContextManager _stack = [[ContextManagerMock alloc] init]; - _requiresTestExpectation = YES; } return self; @@ -55,45 +54,19 @@ - (void)setMainContext:(NSManagedObjectContext *)mainContext [_stack setMainContext:mainContext]; } --(void)setTestExpectation:(XCTestExpectation *)testExpectation -{ - [_stack setTestExpectation:testExpectation]; -} - - (void)saveContext:(NSManagedObjectContext *)context { - [self saveContext:context withCompletionBlock:^{ - if (self.stack.testExpectation) { - [self.stack.testExpectation fulfill]; - self.stack.testExpectation = nil; - } else if (self.stack.requiresTestExpectation) { - NSLog(@"No test expectation present for context save"); - } - }]; + [_stack saveContext:context]; } - (void)saveContextAndWait:(NSManagedObjectContext *)context { [_stack saveContextAndWait:context]; - if (self.stack.testExpectation) { - [self.stack.testExpectation fulfill]; - self.stack.testExpectation = nil; - } else if (self.stack.requiresTestExpectation) { - NSLog(@"No test expectation present for context save"); - } } - (void)saveContext:(NSManagedObjectContext *)context withCompletionBlock:(void (^)(void))completionBlock { - [_stack saveContext:context withCompletionBlock:^{ - if (self.stack.testExpectation) { - [self.stack.testExpectation fulfill]; - self.stack.testExpectation = nil; - } else if (self.stack.requiresTestExpectation) { - NSLog(@"No test expectation present for context save"); - } - completionBlock(); - }]; + [_stack saveContext:context withCompletionBlock:completionBlock]; } - (nonnull NSManagedObjectContext *const)newDerivedContext { From 847b238fbf80ea43a15d3e82bdb32a91af8dcb67 Mon Sep 17 00:00:00 2001 From: James Frost Date: Sun, 1 May 2022 16:35:40 +0100 Subject: [PATCH 152/166] Fix broken Last Post Insight unit test --- WordPress/WordPressTest/LastPostStatsRecordValueTests.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/WordPress/WordPressTest/LastPostStatsRecordValueTests.swift b/WordPress/WordPressTest/LastPostStatsRecordValueTests.swift index 00651130b218..44a8d3d60791 100644 --- a/WordPress/WordPressTest/LastPostStatsRecordValueTests.swift +++ b/WordPress/WordPressTest/LastPostStatsRecordValueTests.swift @@ -101,7 +101,8 @@ class LastPostStatsRecordValueTests: StatsTestCase { likesCount: 1, commentsCount: 2, viewsCount: 3, - postID: 4) + postID: 4, + featuredImageURL: URL(string: "https://s.w.org/style/images/about/WordPress-logotype-wmark.png")!) let blog = defaultBlog @@ -123,7 +124,8 @@ class LastPostStatsRecordValueTests: StatsTestCase { XCTAssertEqual(castedResults.likesCount, 1) XCTAssertEqual(castedResults.commentsCount, 2) XCTAssertEqual(castedResults.viewsCount, 3) - XCTAssertEqual(castedResults.url, URL(string: "google.com") ) + XCTAssertEqual(castedResults.url, URL(string: "google.com")) + XCTAssertEqual(castedResults.featuredImageURL, URL(string: "https://s.w.org/style/images/about/WordPress-logotype-wmark.png")) } @discardableResult func createLastPostStatsRecordValue(parent: StatsRecord) -> LastPostStatsRecordValue { From 83dbaf5f85eab822ba579942475ac1d869f7b2ca Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 2 May 2022 12:05:37 +1000 Subject: [PATCH 153/166] Bump version number --- config/Version.internal.xcconfig | 4 ++-- config/Version.public.xcconfig | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/Version.internal.xcconfig b/config/Version.internal.xcconfig index cb82c4d39ff5..60fdcdbd9666 100644 --- a/config/Version.internal.xcconfig +++ b/config/Version.internal.xcconfig @@ -1,4 +1,4 @@ -VERSION_SHORT=19.7 +VERSION_SHORT=19.8 // Internal long version example: VERSION_LONG=9.9.0.20180423 -VERSION_LONG=19.7.0.20220429 +VERSION_LONG=19.8.0.20220502 diff --git a/config/Version.public.xcconfig b/config/Version.public.xcconfig index 29ce61c03594..969cf1527888 100644 --- a/config/Version.public.xcconfig +++ b/config/Version.public.xcconfig @@ -1,4 +1,4 @@ -VERSION_SHORT=19.7 +VERSION_SHORT=19.8 // Public long version example: VERSION_LONG=9.9.0.0 -VERSION_LONG=19.7.0.3 +VERSION_LONG=19.8.0.0 From 5abe0293d22a2694e8feaa806d7c972f3132e8ad Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 2 May 2022 12:06:08 +1000 Subject: [PATCH 154/166] Update draft release notes for 19.8. --- WordPress/Resources/release_notes.txt | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/WordPress/Resources/release_notes.txt b/WordPress/Resources/release_notes.txt index 16fdae8901ab..a6adff6aebfd 100644 --- a/WordPress/Resources/release_notes.txt +++ b/WordPress/Resources/release_notes.txt @@ -1,11 +1,13 @@ -We made a small but mighty change to the block editor: the ā€œAdd Blockā€ button is more visible when you first open the editor with no blocks selected. We also removed one of three error notifications when a media or audio block fails to uploadā€”it felt like overkill. +* [**] Self hosted sites are not restricted by video length during media uploads [https://github.com/wordpress-mobile/WordPress-iOS/pull/18414] +* [*] [internal] My Site Dashboard: Made some changes to the code architecture of the dashboard. The majority of the changes are related to the posts cards. It should have no visible changes but could cause regressions. Please test it by creating/trashing drafts and scheduled posts and testing that they appear correctly on the dashboard. [#18405] +* [*] Quick Start: Updated the Stats tour. The tour can now be accessed from either the dashboard or the menu tab. [#18413] +* [*] Quick Start: Updated the Reader tour. The tour now highlights the Discover tab and guides users to follow topics via the Settings screen. [#18450] +* [*] [internal] Quick Start: Deleted the Edit your homepage tour. [#18469] +* [*] [internal] Quick Start: Refactored some code related to the tasks displayed in the Quick Start Card and the Quick Start modal. It should have no visible changes but could cause regressions. [#18395] +* [**] Follow Conversation flow now enables in-app notifications by default. They were updated to be opt-out rather than opt-in. [#18449] +* [*] Block Editor: Latest Posts block: Add featured image settings [https://github.com/WordPress/gutenberg/pull/39257] +* [*] Block Editor: Prevent incorrect notices displaying when switching between HTML-Visual mode quickly [https://github.com/WordPress/gutenberg/pull/40415] +* [*] Block Editor: Embed block: Fix inline preview cut-off when editing URL [https://github.com/WordPress/gutenberg/pull/35326] +* [*] Block Editor: Prevent gaps shown around floating toolbar when using external keyboard [https://github.com/WordPress/gutenberg/pull/40266] +* [**] We'll now ask users logging in which area of the app they'd like to focus on to build towards a more personalized experience. [#18385] -Youā€™ll hear some accessibility tweaks in the VoiceOver experience when youā€™re rearranging menu items. Instructions and notices are clearer, and the menu hierarchy makes more sense out loud. - -We added a new screen to the site creation process where you can enter your siteā€™s intent. We tested this screen with a small group of users, and we think youā€™ll like it, too. - -Web previews wonā€™t cut off bottom-of-the-screen notifications when your browser toolbar is visible. - -Whatā€™s in a name? Well, if your site has one, youā€™ll see it in the My Site navigation title. - -When you swipe left on a comment in your Notifications, you wonā€™t see the ā€œTrashā€ option anymore. Instead youā€™ll see ā€œUnapprove Commentā€ and ā€œApprove Comment.ā€ We approve. From efbfe3b92ef45be7254aa6726a714840fd81137f Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 2 May 2022 12:06:09 +1000 Subject: [PATCH 155/166] Update draft release notes for 19.8. --- WordPress/Jetpack/Resources/release_notes.txt | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/WordPress/Jetpack/Resources/release_notes.txt b/WordPress/Jetpack/Resources/release_notes.txt index 16fdae8901ab..a6adff6aebfd 100644 --- a/WordPress/Jetpack/Resources/release_notes.txt +++ b/WordPress/Jetpack/Resources/release_notes.txt @@ -1,11 +1,13 @@ -We made a small but mighty change to the block editor: the ā€œAdd Blockā€ button is more visible when you first open the editor with no blocks selected. We also removed one of three error notifications when a media or audio block fails to uploadā€”it felt like overkill. +* [**] Self hosted sites are not restricted by video length during media uploads [https://github.com/wordpress-mobile/WordPress-iOS/pull/18414] +* [*] [internal] My Site Dashboard: Made some changes to the code architecture of the dashboard. The majority of the changes are related to the posts cards. It should have no visible changes but could cause regressions. Please test it by creating/trashing drafts and scheduled posts and testing that they appear correctly on the dashboard. [#18405] +* [*] Quick Start: Updated the Stats tour. The tour can now be accessed from either the dashboard or the menu tab. [#18413] +* [*] Quick Start: Updated the Reader tour. The tour now highlights the Discover tab and guides users to follow topics via the Settings screen. [#18450] +* [*] [internal] Quick Start: Deleted the Edit your homepage tour. [#18469] +* [*] [internal] Quick Start: Refactored some code related to the tasks displayed in the Quick Start Card and the Quick Start modal. It should have no visible changes but could cause regressions. [#18395] +* [**] Follow Conversation flow now enables in-app notifications by default. They were updated to be opt-out rather than opt-in. [#18449] +* [*] Block Editor: Latest Posts block: Add featured image settings [https://github.com/WordPress/gutenberg/pull/39257] +* [*] Block Editor: Prevent incorrect notices displaying when switching between HTML-Visual mode quickly [https://github.com/WordPress/gutenberg/pull/40415] +* [*] Block Editor: Embed block: Fix inline preview cut-off when editing URL [https://github.com/WordPress/gutenberg/pull/35326] +* [*] Block Editor: Prevent gaps shown around floating toolbar when using external keyboard [https://github.com/WordPress/gutenberg/pull/40266] +* [**] We'll now ask users logging in which area of the app they'd like to focus on to build towards a more personalized experience. [#18385] -Youā€™ll hear some accessibility tweaks in the VoiceOver experience when youā€™re rearranging menu items. Instructions and notices are clearer, and the menu hierarchy makes more sense out loud. - -We added a new screen to the site creation process where you can enter your siteā€™s intent. We tested this screen with a small group of users, and we think youā€™ll like it, too. - -Web previews wonā€™t cut off bottom-of-the-screen notifications when your browser toolbar is visible. - -Whatā€™s in a name? Well, if your site has one, youā€™ll see it in the My Site navigation title. - -When you swipe left on a comment in your Notifications, you wonā€™t see the ā€œTrashā€ option anymore. Instead youā€™ll see ā€œUnapprove Commentā€ and ā€œApprove Comment.ā€ We approve. From 81cc03a7aa78a21daa9d32deee99970088f21681 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 2 May 2022 12:06:09 +1000 Subject: [PATCH 156/166] Release Notes: add new section for next version (19.9) --- RELEASE-NOTES.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index d5bb9d52e97c..d80798ef0115 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,3 +1,7 @@ +19.9 +----- + + 19.8 ----- * [**] Self hosted sites are not restricted by video length during media uploads [https://github.com/wordpress-mobile/WordPress-iOS/pull/18414] From fcf5e2f87f0589c0d9431c9a44d6c24140669245 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 2 May 2022 12:12:31 +1000 Subject: [PATCH 157/166] Update strings for localization --- .../Resources/en.lproj/Localizable.strings | 257 ++++++++++++------ 1 file changed, 181 insertions(+), 76 deletions(-) diff --git a/WordPress/Resources/en.lproj/Localizable.strings b/WordPress/Resources/en.lproj/Localizable.strings index e4a4fab5aa62..c8fb1cfd3075 100644 --- a/WordPress/Resources/en.lproj/Localizable.strings +++ b/WordPress/Resources/en.lproj/Localizable.strings @@ -108,6 +108,9 @@ /* Accessibility label for value in quintillions. Ex: 66.6 quintillion. */ "%@ quintillion" = "%@ quintillion"; +/* Title of the task complete hint for the Quick Start Tour */ +"%@ Return to My Site screen when you're ready for the next task." = "%@ Return to My Site screen when you're ready for the next task."; + /* The number of tags in the writting settings. Singular. %@ is a placeholder for the number */ "%@ Tag" = "%@ Tag"; @@ -117,6 +120,9 @@ /* Accessibility label for value in thousands. Ex: 66.6 thousand. */ "%@ thousand" = "%@ thousand"; +/* Title of the task complete hint for the Quick Start Tour */ +"%@ Tip: get updates faster by enabling push notifications." = "%@ Tip: get updates faster by enabling push notifications."; + /* Accessibility label for value in trillions. Ex: 66.6 trillion. */ "%@ trillion" = "%@ trillion"; @@ -253,9 +259,18 @@ /* Menus title label text for a post that has no set title. */ "(Untitled)" = "(Untitled)"; +/* Example notification content displayed on the Enable Notifications prompt that is personalized based on a users selection. Words marked between * characters will be displayed as bold text. */ +"*Johann Brandt* is now following your site!" = "*Johann Brandt* is now following your site!"; + +/* Example notification content displayed on the Enable Notifications prompt that is personalized based on a users selection. Words marked between * characters will be displayed as bold text. */ +"*Johann Brandt* responded to your comment" = "*Johann Brandt* responded to your comment"; + /* Example Comment notification displayed in the prologue carousel of the app. Username should be marked with * characters and will be displayed as bold text. */ "*Johann Brandt* responded to your post" = "*Johann Brandt* responded to your post"; +/* Example notification content displayed on the Enable Notifications prompt that is personalized based on a users selection. Words marked between * characters will be displayed as bold text. */ +"*Madison Ruiz* added a new post to their site" = "*Madison Ruiz* added a new post to their site"; + /* Example Like notification displayed in the prologue carousel of the app. Username should be marked with * characters and will be displayed as bold text. */ "*Madison Ruiz* liked your post" = "*Madison Ruiz* liked your post"; @@ -343,18 +358,18 @@ /* Message of Close Account confirmation alert */ "\nTo confirm, please re-enter your username before closing.\n\n" = "\nTo confirm, please re-enter your username before closing.\n\n"; -/* Describes that only one user likes a post. %1$d is the number of likes. The underscores denote underline and is not displayed. */ -"_%1$d blogger_ likes this." = "_%1$d blogger_ likes this."; - /* Plural format string for displaying the number of post likes. %1$d is the number of likes. The underscores denote underline and is not displayed. */ "_%1$d bloggers_ like this." = "_%1$d bloggers_ like this."; -/* Describes that the current user and one other user like a post. %1$d is the number of likes, excluding the like by current user. The underscores denote underline and is not displayed. */ -"_You and %1$d blogger_ like this." = "_You and %1$d blogger_ like this."; +/* Describes that only one user likes a post. The underscores denote underline and is not displayed. */ +"_One blogger_ likes this." = "_One blogger_ likes this."; /* Plural format string for displaying the number of post likes, including the like from the current user. %1$d is the number of likes, excluding the like by current user. The underscores denote underline and is not displayed. */ "_You and %1$d bloggers_ like this." = "_You and %1$d bloggers_ like this."; +/* Describes that the current user and one other user like a post. The underscores denote underline and is not displayed. */ +"_You and another blogger_ like this." = "_You and another blogger_ like this."; + /* Describes that the current user is the only one liking a post. The underscores denote underline and is not displayed. */ "_You_ like this." = "_You_ like this."; @@ -379,6 +394,9 @@ /* Story Intro welcome title */ "A new way to create and publish engaging content on your site." = "A new way to create and publish engaging content on your site."; +/* A VoiceOver hint to explain what the user gets when they select the 'Get to know the WordPress app' button. */ +"A series of steps helping you to explore the app." = "A series of steps helping you to explore the app."; + /* A VoiceOver hint to explain what the user gets when they select the 'Customize Your Site' button. */ "A series of steps showing you how to add a theme, site icon and more." = "A series of steps showing you how to add a theme, site icon and more."; @@ -539,9 +557,6 @@ /* No comment provided by engineer. */ "Add blocks" = "Add blocks"; -/* No comment provided by engineer. */ -"Add Blocks" = "Add Blocks"; - /* No comment provided by engineer. */ "Add button text" = "Add button text"; @@ -821,7 +836,8 @@ /* the comment has an anonymous author. */ "Anonymous" = "Anonymous"; -/* Title for a call-to-action button on the prompts card. */ +/* Title for a call-to-action button in the create new bottom action sheet. + Title for a call-to-action button on the prompts card. */ "Answer Prompt" = "Answer Prompt"; /* Navigates to picker screen to change the app's icon @@ -1260,7 +1276,6 @@ "Can't publish an empty post" = "Can't publish an empty post"; /* Alert dismissal title - Button label when canceling alert in quick start Button shown when the author is asked for publishing confirmation. Button title, cancel fixing all threats Button title. Cancels a pending action. @@ -1288,6 +1303,7 @@ Cancel registering a domain Cancel removing a plugin Cancel site creation + Cancel site creation. Cancel the crop Cancel updating User's Role Cancel. Action. @@ -1345,7 +1361,8 @@ Title for the warning shown to the user when he refuses to re-login when the authToken is missing. */ "Careful!" = "Careful!"; -/* Example prompt for the Prompts card in Feature Introduction. */ +/* Example prompt for blogging prompts in the create new bottom action sheet. + Example prompt for the Prompts card in Feature Introduction. */ "Cast the movie of your life." = "Cast the movie of your life."; /* Label for Categories @@ -1399,9 +1416,6 @@ /* Button title to edit visibility of sites. */ "Change Visibility" = "Change Visibility"; -/* Description of a Quick Start Tour */ -"Change, add, or remove content from your site's homepage." = "Change, add, or remove content from your site's homepage."; - /* Description of a Quick Start Tour */ "Change, add, or remove your site's pages." = "Change, add, or remove your site's pages."; @@ -1446,6 +1460,9 @@ /* Subtitle for No results full page screen displayed from post list when there is no connection */ "Check your network connection and try again. Or draft a post." = "Check your network connection and try again. Or draft a post."; +/* Title of a Quick Start Tour */ +"Check your notifications" = "Check your notifications"; + /* Title of a Quick Start Tour */ "Check your site stats" = "Check your site stats"; @@ -1455,10 +1472,14 @@ /* Overlay message displayed while checking if site has premium purchases */ "Checking purchasesā€¦" = "Checking purchasesā€¦"; +/* Title of button that asks the users if they'd like to focus on checking their sites stats */ +"Checking stats" = "Checking stats"; + /* Screen reader text expressing the menu item is a child of another menu item. Argument is a name for another menu item. */ "Child of %@" = "Child of %@"; -/* Title for the button to progress with the selected site homepage design */ +/* Title for the button to progress with the selected site homepage design + Title for the button to progress with the selected site homepage design. */ "Choose" = "Choose"; /* Label for Publish date picker */ @@ -1735,6 +1756,9 @@ /* The action is completed */ "Completed" = "Completed"; +/* The Quick Start Tour title after the user finished the step. */ +"Completed: Check your notifications" = "Completed: Check your notifications"; + /* The Quick Start Tour title after the user finished the step. */ "Completed: Check your site stats" = "Completed: Check your site stats"; @@ -1748,20 +1772,17 @@ "Completed: Choose a unique site icon" = "Completed: Choose a unique site icon"; /* The Quick Start Tour title after the user finished the step. */ -"Completed: Continue with site setup" = "Completed: Continue with site setup"; +"Completed: Connect with other sites" = "Completed: Connect with other sites"; /* The Quick Start Tour title after the user finished the step. */ -"Completed: Create your site" = "Completed: Create your site"; +"Completed: Continue with site setup" = "Completed: Continue with site setup"; /* The Quick Start Tour title after the user finished the step. */ -"Completed: Edit your homepage" = "Completed: Edit your homepage"; +"Completed: Create your site" = "Completed: Create your site"; /* The Quick Start Tour title after the user finished the step. */ "Completed: Explore plans" = "Completed: Explore plans"; -/* The Quick Start Tour title after the user finished the step. */ -"Completed: Follow other sites" = "Completed: Follow other sites"; - /* The Quick Start Tour title after the user finished the step. */ "Completed: Publish a post" = "Completed: Publish a post"; @@ -1804,6 +1825,9 @@ /* Title of domain name purchase success screen */ "Congratulations on your purchase!" = "Congratulations on your purchase!"; +/* Example notification content displayed on the Enable Notifications prompt that is personalized based on a users selection. Words marked between * characters will be displayed as bold text. */ +"Congratulations! Your site passed *1000 all-time* views!" = "Congratulations! Your site passed *1000 all-time* views!"; + /* Verb. Tapping connects an account to Publicize. Verb. Text label. Allows the user to connect to a third-party sharing service like Facebook or Twitter. */ "Connect" = "Connect"; @@ -1820,6 +1844,9 @@ /* A detailed message to users about growing the audience for their site through reader discover. */ "Connect with other bloggers by following, liking and commenting on their posts." = "Connect with other bloggers by following, liking and commenting on their posts."; +/* Title of a Quick Start Tour */ +"Connect with other sites" = "Connect with other sites"; + /* No comment provided by engineer. */ "Connect your favorite social media services to automatically share new posts with friends." = "Connect your favorite social media services to automatically share new posts with friends."; @@ -2117,7 +2144,8 @@ "Create Post" = "Create Post"; /* Button to progress to the next step - Site creation. Step 1. Screen title */ + Site creation. Step 1. Screen title + Title for the button to progress with creating the site with the selected design. */ "Create Site" = "Create Site"; /* Stories intro continue button title */ @@ -2226,8 +2254,7 @@ /* Customize Insights title */ "Customize your insights" = "Customize your insights"; -/* Name of the Quick Start list that guides users through a few tasks to customize their new website. - Title of the Quick Start Checklist that guides users through a few tasks to customize their new website. */ +/* Name of the Quick Start list that guides users through a few tasks to customize their new website. */ "Customize Your Site" = "Customize Your Site"; /* Notification Settings for your own blogs */ @@ -2352,7 +2379,7 @@ Title of section that contains plugins' description */ "Description" = "Description"; -/* Shortened version of the main title to be used in back navigation */ +/* Shortened version of the main title to be used in back navigation. */ "Design" = "Design"; /* Title for the desktop web preview */ @@ -2409,9 +2436,15 @@ /* Explanatory text for the user. The `%@` is a placeholder for the name of a third-party sharing service. */ "Disconnecting this account means published posts will no longer be automatically shared to %@" = "Disconnecting this account means published posts will no longer be automatically shared to %@"; +/* The menu item to select during a guided tour. */ +"Discover" = "Discover"; + /* Reader select interests title label text */ "Discover and follow blogs you love" = "Discover and follow blogs you love"; +/* Description of a Quick Start Tour */ +"Discover and follow sites that inspire you." = "Discover and follow sites that inspire you."; + /* Title for button that will open up the follow topics screen. */ "Discover blogs to follow" = "Discover blogs to follow"; @@ -2738,9 +2771,6 @@ /* No comment provided by engineer. */ "Edit video" = "Edit video"; -/* Title of a Quick Start Tour */ -"Edit your homepage" = "Edit your homepage"; - /* No comment provided by engineer. */ "Editing reusable blocks is not yet supported on WordPress for Android" = "Editing reusable blocks is not yet supported on WordPress for Android"; @@ -2843,9 +2873,6 @@ /* Describes a switch component that toggles in-app notifications for a followed post. */ "Enable in-app notifications" = "Enable in-app notifications"; -/* Hint for the action button that enables notification for new comments */ -"Enable in-app notifications?" = "Enable in-app notifications?"; - /* Title for button that will open up the social media Sharing screen. */ "Enable post sharing" = "Enable post sharing"; @@ -2853,7 +2880,10 @@ "Enable Publicize" = "Enable Publicize"; /* Title of a row displayed on the debug screen used in debug builds of the app */ -"Enable Quick Start for Site" = "Enable Quick Start for Site"; +"Enable Quick Start for Existing Site" = "Enable Quick Start for Existing Site"; + +/* Title of a row displayed on the debug screen used in debug builds of the app */ +"Enable Quick Start for New Site" = "Enable Quick Start for New Site"; /* Message prompting user to enable site notifications. */ "Enable site notifications?" = "Enable site notifications?"; @@ -3231,9 +3261,6 @@ /* Title for the find out more button in the What's New page. */ "Find out more" = "Find out more"; -/* Description of a Quick Start Tour */ -"Find sites that speak to you, and follow them to get updates when they publish." = "Find sites that speak to you, and follow them to get updates when they publish."; - /* The hint button's title text to help users find their site address. */ "Find your site address" = "Find your site address"; @@ -3275,10 +3302,7 @@ "Follow Conversation" = "Follow Conversation"; /* Verb. Button title. Follow the comments on a post. */ -"Follow conversation by email" = "Follow conversation by email"; - -/* Title of a Quick Start Tour */ -"Follow other sites" = "Follow other sites"; +"Follow conversation" = "Follow conversation"; /* Verb. An option to follow a site. */ "Follow site" = "Follow site"; @@ -3430,6 +3454,9 @@ /* Displayed in the Notifications Tab as a message, when the Follow Filter shows no notifications */ "Get noticed: comment on posts you've read." = "Get noticed: comment on posts you've read."; +/* Description of a Quick Start Tour */ +"Get real time updates from your pocket." = "Get real time updates from your pocket."; + /* View title for initial auth views. */ "Get Started" = "Get Started"; @@ -3442,6 +3469,9 @@ /* Appended to latest post summary text when the post does not have data. */ "Get the ball rolling and increase your post views by sharing your post." = "Get the ball rolling and increase your post views by sharing your post."; +/* Name of the Quick Start list that guides users through a few tasks to explore the WordPress app. */ +"Get to know the WordPress app" = "Get to know the WordPress app"; + /* Title of the card that starts the purchase of the first redirected domain in the Domains Dashboard. */ "Get your domain" = "Get your domain"; @@ -3466,6 +3496,9 @@ /* Cancel */ "Give Up" = "Give Up"; +/* Title of the Site Name screen. Takes the vertical name as a parameter. */ +"Give your %@ website a name" = "Give your %@ website a name"; + /* Description of a Quick Start Tour */ "Give your site a name that reflects its personality and topic. First impressions count!" = "Give your site a name that reflects its personality and topic. First impressions count!"; @@ -3473,9 +3506,6 @@ Title for Site Name screen in iPhone landscape. */ "Give your website a name" = "Give your website a name"; -/* Title of the Site Name screen. Takes the vertical name as a parameter. */ -"Give your%@website a name" = "Give your%@website a name"; - /* Option to select the Gmail app when logging in with magic links */ "Gmail" = "Gmail"; @@ -3514,10 +3544,12 @@ /* This is the text we display to the user after they've indicated they like the app */ "Great!\n We love to hear from happy users \nšŸ˜" = "Great!\n We love to hear from happy users \nšŸ˜"; -/* Name of the Quick Start list that guides users through a few tasks to customize their new website. - Title of the Quick Start Checklist that guides users through a few tasks to grow the audience of their new website. */ +/* Name of the Quick Start list that guides users through a few tasks to customize their new website. */ "Grow Your Audience" = "Grow Your Audience"; +/* This value is used to set the accessibility hint text for viewing the user's notifications. */ +"Guides you through the process of checking your notifications." = "Guides you through the process of checking your notifications."; + /* This value is used to set the accessibility hint text for choosing a theme for the user's site. */ "Guides you through the process of choosing a theme for your site." = "Guides you through the process of choosing a theme for your site."; @@ -3647,8 +3679,7 @@ Title for the dashboard screen. */ "Home" = "Home"; -/* The item to select during a guided tour. - Title for setting which shows the current page assigned as a site's homepage +/* Title for setting which shows the current page assigned as a site's homepage Title for the homepage section in site settings screen Title of the Homepage Badge */ "Homepage" = "Homepage"; @@ -3793,6 +3824,9 @@ /* The plugin is not active on the site and has enabled automatic updates */ "Inactive, Autoupdates on" = "Inactive, Autoupdates on"; +/* Title of the switch to turn on or off the blogging prompts feature. */ +"Include prompt" = "Include prompt"; + /* Describes a standard *.wordpress.com site domain */ "Included with Site" = "Included with Site"; @@ -3936,6 +3970,9 @@ /* Invite People Title */ "Invite People" = "Invite People"; +/* Footer text for Invite Links section of the Invite People screen. */ +"invite_people_invite_link_footer" = "Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted people."; + /* Describes the IP address section in the comment detail screen. */ "IP address" = "IP address"; @@ -4051,6 +4088,12 @@ /* Description of a Quick Start Tour */ "Keep up to date on your siteā€™s performance." = "Keep up to date on your siteā€™s performance."; +/* Subtitle giving the user more context about why to enable notifications. */ +"Know when your favorite authors post new content." = "Know when your favorite authors post new content."; + +/* Subtitle giving the user more context about why to enable notifications. */ +"Know when your site is getting more traffic, new followers, or when it passes a new milestone!" = "Know when your site is getting more traffic, new followers, or when it passes a new milestone!"; + /* An option in a list. Automatically approve comments from known users. */ "Known user's comments" = "Known user's comments"; @@ -4099,6 +4142,9 @@ /* Writing, Date and Time Settings: Learn more about date and time settings footer text */ "Learn more about date and time formatting." = "Learn more about date and time formatting."; +/* Accessibility label for the blogging prompts info button on the Blogging Reminders Settings screen. */ +"Learn more about prompts" = "Learn more about prompts"; + /* Footer text for Invite People role field. */ "Learn more about roles" = "Learn more about roles"; @@ -5040,6 +5086,9 @@ /* Display value for Support email field if there is no user email address. */ "Not Set" = "Not Set"; +/* Button that allows users unsure of what selection they'd like */ +"Not sure, show me around" = "Not sure, show me around"; + /* Label for the note displayed in the Feature Introduction view. */ "Note:" = "Note:"; @@ -5072,9 +5121,13 @@ /* Title for the time picker button in Blogging Reminders. */ "Notification time" = "Notification time"; +/* Description of the blogging prompts feature on the Blogging Reminders Settings screen. */ +"Notification will include a word or short phrase for inspiration" = "Notification will include a word or short phrase for inspiration"; + /* Notifications 3D Touch Shortcut Notifications tab bar item accessibility label Notifications View Controller title + The item to select during a guided tour. Title of the 'Notifications' tab - used for spotlight indexing on iOS. */ "Notifications" = "Notifications"; @@ -5767,9 +5820,9 @@ /* Displays the Post Preview Interface Section title for related posts section preview - Title for button to preview a selected homepage design + Title for button to preview a selected homepage design. Title for button to preview a selected layout - Title for screen to preview a selected homepage design + Title for screen to preview a selected homepage design. Title for screen to preview a static content. */ "Preview" = "Preview"; @@ -5792,7 +5845,7 @@ "Preview Unavailable" = "Preview Unavailable"; /* Description of a Quick Start Tour */ -"Preview your new site to see what your visitors will see." = "Preview your new site to see what your visitors will see."; +"Preview your site to see what your visitors will see." = "Preview your site to see what your visitors will see."; /* Accessibility label for the button which shows the previous month in the monthly calendar view */ "Previous month" = "Previous month"; @@ -5859,7 +5912,8 @@ /* Menu item label for linking a project page. */ "Projects" = "Projects"; -/* Title label for the Prompts card in My Sites tab. */ +/* Title label for blogging prompts in the create new bottom action sheet. + Title label for the Prompts card in My Sites tab. */ "Prompts" = "Prompts"; /* Privacy setting for posts set to 'Public' (default). Should be the same as in core WP. @@ -5979,6 +6033,9 @@ /* Title of the screen that allows the user to change the Reader CSS URL for debug builds */ "Reader CSS URL" = "Reader CSS URL"; +/* Title of button that asks the users if they'd like to focus on checking their sites stats */ +"Reading posts from other sites" = "Reading posts from other sites"; + /* Real Estate site intent topic */ "Real Estate" = "Real Estate"; @@ -6448,7 +6505,6 @@ "Scrollable block menu opened. Select a block." = "Scrollable block menu opened. Select a block."; /* Placeholder text for the search bar - The menu item to select during a guided tour. Title of the Reader's search feature */ "Search" = "Search"; @@ -6538,13 +6594,7 @@ "Select %@ to discover new themes" = "Select %@ to discover new themes"; /* A step in a guided tour for quick start. %@ will be the name of the item to select. */ -"Select %@ to edit your Homepage." = "Select %@ to edit your Homepage."; - -/* A step in a guided tour for quick start. %@ will be the name of the item to select. */ -"Select %@ to look for sites with similar interests" = "Select %@ to look for sites with similar interests"; - -/* A step in a guided tour for quick start. %@ will be the name of the item to select. */ -"Select %@ to preview" = "Select %@ to preview"; +"Select %@ to find other sites." = "Select %@ to find other sites."; /* A step in a guided tour for quick start. %@ will be the name of the item to select. */ "Select %@ to see how your site is performing." = "Select %@ to see how your site is performing."; @@ -6564,6 +6614,9 @@ /* A step in a guided tour for quick start. %@ will be the name of the item to select. */ "Select %@ to upload a new one." = "Select %@ to upload a new one."; +/* A step in a guided tour for quick start. %@ will be the site url. */ +"Select %@ to view your site" = "Select %@ to view your site"; + /* No comment provided by engineer. */ "Select a color" = "Select a color"; @@ -6597,6 +6650,9 @@ /* Register Domain - Address information field placeholder for State */ "Select State" = "Select State"; +/* A step in a guided tour for quick start. %@ will be the name of the item to select. */ +"Select the %@ tab to get updates on the go." = "Select the %@ tab to get updates on the go."; + /* A step in a guided tour for quick start. %@ will be the name of the item to select. */ "Select the %@ to add your social media accounts" = "Select the %@ to add your social media accounts"; @@ -6735,6 +6791,7 @@ /* Link to plugin's Settings Section title + The menu item to select during a guided tour. Title for screen that allows configuration of your blog/site settings. Title for the Jetpack Security Settings Screen */ "Settings" = "Settings"; @@ -6968,7 +7025,8 @@ /* Title of the navigation bar, shown when the large title is hidden. */ "Site Topic" = "Site Topic"; -/* The accessibility label for the followed sites search field */ +/* The accessibility label for the followed sites search field + The item to select during a guided tour. */ "Site URL" = "Site URL"; /* Sites Filter Tab Title @@ -6984,18 +7042,13 @@ /* Image size option title. */ "Size" = "Size"; -/* Button label when skipping all quick start items +/* Button that allows the user to skip the prompt and be brought to the app Button title that appears when you swipe to left the row. It indicates the possibility to skip a specific tour. Continue without making a selection + Continue without making a selection. Title for the Skip button in the Site Name Screen. */ "Skip" = "Skip"; -/* Label for button that will allow the user to skip all items in the Quick Start checklist */ -"Skip All" = "Skip All"; - -/* Title shown in alert to confirm skipping all quick start items */ -"Skip Quick Start" = "Skip Quick Start"; - /* Menu title to skip today's prompt. */ "Skip this prompt" = "Skip this prompt"; @@ -7167,12 +7220,39 @@ /* Displayed in the Stats widgets when there is no network */ "Stats will be updated next time you're online" = "Stats will be updated next time you're online"; +/* Title for Comments count in Latest Post Summary stats card. */ +"stats.insights.latestPostSummary.comments" = "Comments"; + +/* Title for Likes count in Latest Post Summary stats card. */ +"stats.insights.latestPostSummary.likes" = "Likes"; + +/* Publish date of a post displayed in Stats. Placeholder will be replaced with a localized relative time, e.g. 2 days ago */ +"stats.insights.latestPostSummary.publishDate" = "Published %@"; + +/* Title for Views count in Latest Post Summary stats card. */ +"stats.insights.latestPostSummary.views" = "Views"; + +/* Insights 'Most Popular Time' header. Fire emoji should remain part of the string. */ +"stats.insights.mostPopularCard.title" = "šŸ”„ Most Popular Time"; + +/* Label showing the percentage of views to a user's site which fall on a particular day. */ +"stats.insights.mostPopularCard.viewPercentage" = "%d%% of views"; + /* The status of the post. Should be the same as in core WP. */ "Status" = "Status"; /* Title of the first alert preparing users to grant permission for us to send them push notifications. */ "Stay in the loop" = "Stay in the loop"; +/* Subtitle giving the user more context about why to enable notifications. */ +"Stay in touch with like and comment notifications." = "Stay in touch with like and comment notifications."; + +/* Subtitle giving the user more context about why to enable notifications. */ +"Stay in touch with your audience with like and comment notifications." = "Stay in touch with your audience with like and comment notifications."; + +/* Title of button that asks the users if they'd like to focus on checking their sites stats */ +"Staying up to date with notifications" = "Staying up to date with notifications"; + /* This is the cell title. */ "Stick post to the front page" = "Stick post to the front page"; @@ -7406,6 +7486,9 @@ /* Accessibility hint for button used to view the user's site */ "Tap to view your site" = "Tap to view your site"; +/* A hint about the completed guided tour. */ +"Task complete." = "Task complete."; + /* Label for the Taxonomy area (categories, keywords, ...) in post settings. */ "Taxonomy" = "Taxonomy"; @@ -7535,9 +7618,6 @@ /* Message displayed in popup when user tries to copy a post with conflicts */ "The post you are trying to copy has two versions that are in conflict or you recently made changes but didn\'t save them.\nEdit the post first to resolve any conflict or proceed with copying the version from this app." = "The post you are trying to copy has two versions that are in conflict or you recently made changes but didn\'t save them.\nEdit the post first to resolve any conflict or proceed with copying the version from this app."; -/* Description shown in alert to confirm skipping all quick start items */ -"The quick start tour will guide you through building a basic site. Are you sure you want to skip? " = "The quick start tour will guide you through building a basic site. Are you sure you want to skip? "; - /* A failure reason for when the request couldn't be serialized. */ "The serialization of the request failed." = "The serialization of the request failed."; @@ -8057,6 +8137,9 @@ Customize Insights button title */ "Try it now" = "Try it now"; +/* A step in a guided tour for quick start. %@ will be the name of the item to select. */ +"Try selecting %@ to add topics you like." = "Try selecting %@ to add topics you like."; + /* The title of a notice telling users that the classic editor is deprecated and will be removed in a future version of the app. */ "Try the new Block Editor" = "Try the new Block Editor"; @@ -8277,6 +8360,7 @@ Button title. Reverts a comment moderation action. Button title. Reverts the previous notification operation Revert an operation + Revert enabling notification after successfully subcribing to the comments for the post. The title of an 'undo' button. Tapping the button moves a trashed page out of the trash folder. The title of an 'undo' button. Tapping the button moves a trashed post out of the trash folder. Undo action */ @@ -8290,10 +8374,10 @@ "Unfollow %@" = "Unfollow %@"; /* Title for a button that unsubscribes the user from the post. */ -"Unfollow conversation" = "Unfollow conversation"; +"Unfollow Conversation" = "Unfollow Conversation"; /* Verb. Button title. The user is following the comments on a post. */ -"Unfollow conversation by email" = "Unfollow conversation by email"; +"Unfollow conversation" = "Unfollow conversation"; /* Verb. An option to unfollow a site. */ "Unfollow site" = "Unfollow site"; @@ -8487,6 +8571,9 @@ /* Use the current image */ "Use" = "Use"; +/* A step in a guided tour for quick start. %@ will be the name of the item to select. */ +"Use %@ to find sites and tags." = "Use %@ to find sites and tags."; + /* Option to enable the block editor for new posts */ "Use block editor" = "Use block editor"; @@ -8496,9 +8583,6 @@ /* Title of a row displayed on the debug screen used to configure the sandbox store use in the App. */ "Use Sandbox Store" = "Use Sandbox Store"; -/* Footer text for Invite Links section of the Invite People screen. */ -"invite_people_invite_link_footer" = "Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organization, even if they received the link from somebody else, so make sure that you share it with trusted people."; - /* No comment provided by engineer. */ "Use this site" = "Use this site"; @@ -8615,8 +8699,7 @@ /* Button label for viewing a post */ "View Post" = "View Post"; -/* Action title. Opens the user's site in an in-app browser - The menu item to select during a guided tour. */ +/* Action title. Opens the user's site in an in-app browser */ "View Site" = "View Site"; /* Description for view count. Singular. */ @@ -8657,6 +8740,9 @@ /* A call to action to visit the specified blog. The '%@' characters are a placholder for the blog name. */ "Visit %@ for more" = "Visit %@ for more"; +/* Text of a button that links to the VaultPress dashboard. */ +"Visit Dashboard" = "Visit Dashboard"; + /* Portion of a message for Jetpack users that have multisite WP installation, thus Restore is not available. This part is a link, colored with a different color. */ "visit our documentation page" = "visit our documentation page"; @@ -9278,6 +9364,9 @@ /* Writing & Poetry site intent topic */ "Writing & Poetry" = "Writing & Poetry"; +/* Title of button that asks the users if they'd like to focus on checking their sites stats */ +"Writing blog posts" = "Writing blog posts"; + /* No comment provided by engineer. */ "X-Axis Position" = "X-Axis Position"; @@ -9434,6 +9523,9 @@ /* Body of alert prompting users to verify their accounts while attempting to publish */ "You need to verify your account before you can publish a post.\nDonā€™t worry, your post is safe and will be saved as a draft." = "You need to verify your account before you can publish a post.\nDonā€™t worry, your post is safe and will be saved as a draft."; +/* Example notification content displayed on the Enable Notifications prompt that is personalized based on a users selection. Words marked between * characters will be displayed as bold text. */ +"You received *50 likes* on your comment" = "You received *50 likes* on your comment"; + /* Example Likes notification displayed in the prologue carousel of the app. Number of likes should marked with * characters and will be displayed as bold text. */ "You received *50 likes* on your site today" = "You received *50 likes* on your site today"; @@ -9459,6 +9551,10 @@ /* Blogging Reminders description confirming a user's choices. The placeholder will be replaced at runtime with a day of the week. The HTML markup is used to bold the word 'once'. */ "You'll get a reminder to blog once a week on %@ at %@." = "You'll get a reminder to blog once a week on %1$@ at %2$@."; +/* Message for the action with opt-out revert action. + The app successfully subscribed to the comments for the post */ +"You'll get notifications in the app" = "You'll get notifications in the app"; + /* Blogging Reminders description confirming a user's choices. The first placeholder will be populated with a count of the number of times a week they'll be reminded. The second will be a formatted list of days. For example: 'You'll get reminders to blog 2 times a week on Monday and Tuesday. */ "You'll get reminders to blog %@ times a week on %@." = "You'll get reminders to blog %1$@ times a week on %2$@."; @@ -9531,6 +9627,12 @@ /* Body text of alert helping users understand their site address */ "Your site address appears in the bar at the top of the screen when you visit your site in Safari." = "Your site address appears in the bar at the top of the screen when you visit your site in Safari."; +/* Description for label when the user has a site with VaultPress. */ +"Your site already is protected by VaultPress. You can find a link to your VaultPress dashboard below." = "Your site already is protected by VaultPress. You can find a link to your VaultPress dashboard below."; + +/* Example notification content displayed on the Enable Notifications prompt that is personalized based on a users selection. Words marked between * characters will be displayed as bold text. */ +"Your site appears to be getting *more traffic* than usual!" = "Your site appears to be getting *more traffic* than usual!"; + /* Header of the domains list section in the Domains Dashboard. */ "Your Site Domains" = "Your Site Domains"; @@ -9543,6 +9645,9 @@ /* Title of a message displayed when a site has finished rewinding */ "Your site has been succesfully restored" = "Your site has been succesfully restored"; +/* Title for label when the user has VaultPress enabled. */ +"Your site has VaultPress" = "Your site has VaultPress"; + /* The item to select during a guided tour. */ "Your Site Icon" = "Your Site Icon"; From 7ec37ac5eb3319fcf5d8eabe7f5fa66681b61367 Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Fri, 29 Apr 2022 12:58:40 +0200 Subject: [PATCH 158/166] Add `TooltipAnchor` --- .../Feature Highlight/TooltipAnchor.swift | 67 +++++++++++++++++++ .../Detail/ReaderDetailViewController.swift | 11 +++ WordPress/WordPress.xcodeproj/project.pbxproj | 28 +++++--- 3 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift diff --git a/WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift b/WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift new file mode 100644 index 000000000000..7cadbf889f3d --- /dev/null +++ b/WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift @@ -0,0 +1,67 @@ +import UIKit + +final class TooltipAnchor: UIControl { + private enum Constants { + static let horizontalMarginToBounds: CGFloat = 16 + static let verticalMarginToBounds: CGFloat = 9 + static let stackViewSpacing: CGFloat = 4 + static let viewHeight: CGFloat = 40 + } + + var title: String? { + didSet { + titleLabel.text = title + } + } + + private lazy var titleLabel: UILabel = { + $0.textColor = .invertedLabel + $0.font = WPStyleGuide.fontForTextStyle(.body) + return $0 + }(UILabel()) + + private lazy var highlightLabel: UILabel = { + $0.font = WPStyleGuide.fontForTextStyle(.body) + $0.text = "āœØ" + return $0 + }(UILabel()) + + private lazy var stackView: UIStackView = { + $0.addArrangedSubviews([highlightLabel, titleLabel]) + $0.spacing = Constants.stackViewSpacing + return $0 + }(UIStackView()) + + init() { + super.init(frame: .zero) + commonInit() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + commonInit() + } + + private func commonInit() { + setUpViewHierarchy() + configureUI() + } + + private func setUpViewHierarchy() { + stackView.translatesAutoresizingMaskIntoConstraints = false + addSubview(stackView) + + NSLayoutConstraint.activate([ + heightAnchor.constraint(equalToConstant: Constants.viewHeight), + stackView.topAnchor.constraint(equalTo: topAnchor, constant: Constants.verticalMarginToBounds), + stackView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: Constants.horizontalMarginToBounds), + trailingAnchor.constraint(equalTo: stackView.trailingAnchor, constant: Constants.horizontalMarginToBounds), + bottomAnchor.constraint(equalTo: stackView.bottomAnchor, constant: Constants.verticalMarginToBounds) + ]) + } + + private func configureUI() { + backgroundColor = .invertedSystem5 + layer.cornerRadius = Constants.viewHeight / 2 + } +} diff --git a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift index 71ea94e25471..aacea67b6524 100644 --- a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift +++ b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift @@ -169,6 +169,17 @@ class ReaderDetailViewController: UIViewController, ReaderDetailView { // When comments are moderated or edited from the Comments view, update the Comments snippet here. NotificationCenter.default.addObserver(self, selector: #selector(fetchComments), name: .ReaderCommentModifiedNotification, object: nil) + + + // TODO: Remove test code + let tooltipAnchor = TooltipAnchor() + tooltipAnchor.translatesAutoresizingMaskIntoConstraints = false + tooltipAnchor.title = "New" + view.addSubview(tooltipAnchor) + NSLayoutConstraint.activate([ + view.bottomAnchor.constraint(equalTo: tooltipAnchor.bottomAnchor, constant: 100), + tooltipAnchor.centerXAnchor.constraint(equalTo: view.centerXAnchor) + ]) } override func viewWillAppear(_ animated: Bool) { diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 6b5c3c59b7c1..dab39f5abf28 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -72,6 +72,7 @@ 0807CB721CE670A800CDBDAC /* WPContentSearchHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0807CB711CE670A800CDBDAC /* WPContentSearchHelper.swift */; }; 080C44A91CE14A9F00B3A02F /* MenuDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 080C449E1CE14A9F00B3A02F /* MenuDetailsViewController.m */; }; 0815CF461E96F22600069916 /* MediaImportService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0815CF451E96F22600069916 /* MediaImportService.swift */; }; + 081E4B4C281C019A0085E89C /* TooltipAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 081E4B4B281C019A0085E89C /* TooltipAnchor.swift */; }; 08216FAA1CDBF95100304BA7 /* MenuItemEditing.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 08216FA71CDBF95100304BA7 /* MenuItemEditing.storyboard */; }; 08216FAB1CDBF95100304BA7 /* MenuItemEditingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 08216FA91CDBF95100304BA7 /* MenuItemEditingViewController.m */; }; 08216FC81CDBF96000304BA7 /* MenuItemAbstractPostsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 08216FAD1CDBF96000304BA7 /* MenuItemAbstractPostsViewController.m */; }; @@ -1354,16 +1355,16 @@ 80EF672327F160720063B138 /* DashboardCustomAnnouncementCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF672127F160720063B138 /* DashboardCustomAnnouncementCell.swift */; }; 80EF672527F3D63B0063B138 /* DashboardStatsStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF672427F3D63B0063B138 /* DashboardStatsStackView.swift */; }; 80EF672627F3D63B0063B138 /* DashboardStatsStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF672427F3D63B0063B138 /* DashboardStatsStackView.swift */; }; - 80EF928D280E83110064A971 /* QuickStartToursCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */; }; - 80EF928E280E83110064A971 /* QuickStartToursCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */; }; - 80EF929028105CFA0064A971 /* QuickStartFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */; }; - 80EF929128105CFA0064A971 /* QuickStartFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */; }; - 80EF92932810FA5A0064A971 /* QuickStartFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF92922810FA5A0064A971 /* QuickStartFactoryTests.swift */; }; 80EF9284280CFEB60064A971 /* DashboardPostsSyncManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF9283280CFEB60064A971 /* DashboardPostsSyncManagerTests.swift */; }; 80EF9286280D272E0064A971 /* DashboardPostsSyncManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF9285280D272E0064A971 /* DashboardPostsSyncManager.swift */; }; 80EF9287280D272E0064A971 /* DashboardPostsSyncManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF9285280D272E0064A971 /* DashboardPostsSyncManager.swift */; }; 80EF928A280D28140064A971 /* Atomic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF9289280D28140064A971 /* Atomic.swift */; }; 80EF928B280D28140064A971 /* Atomic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF9289280D28140064A971 /* Atomic.swift */; }; + 80EF928D280E83110064A971 /* QuickStartToursCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */; }; + 80EF928E280E83110064A971 /* QuickStartToursCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */; }; + 80EF929028105CFA0064A971 /* QuickStartFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */; }; + 80EF929128105CFA0064A971 /* QuickStartFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */; }; + 80EF92932810FA5A0064A971 /* QuickStartFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EF92922810FA5A0064A971 /* QuickStartFactoryTests.swift */; }; 820ADD701F3A1F88002D7F93 /* ThemeBrowserSectionHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 820ADD6F1F3A1F88002D7F93 /* ThemeBrowserSectionHeaderView.xib */; }; 820ADD721F3A226E002D7F93 /* ThemeBrowserSectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 820ADD711F3A226E002D7F93 /* ThemeBrowserSectionHeaderView.swift */; }; 821738091FE04A9E00BEC94C /* DateAndTimeFormatSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 821738081FE04A9E00BEC94C /* DateAndTimeFormatSettingsViewController.swift */; }; @@ -4829,6 +4830,7 @@ 080C449D1CE14A9F00B3A02F /* MenuDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuDetailsViewController.h; sourceTree = ""; }; 080C449E1CE14A9F00B3A02F /* MenuDetailsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuDetailsViewController.m; sourceTree = ""; }; 0815CF451E96F22600069916 /* MediaImportService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaImportService.swift; sourceTree = ""; }; + 081E4B4B281C019A0085E89C /* TooltipAnchor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TooltipAnchor.swift; sourceTree = ""; }; 08216FA71CDBF95100304BA7 /* MenuItemEditing.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MenuItemEditing.storyboard; sourceTree = ""; }; 08216FA81CDBF95100304BA7 /* MenuItemEditingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuItemEditingViewController.h; sourceTree = ""; }; 08216FA91CDBF95100304BA7 /* MenuItemEditingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuItemEditingViewController.m; sourceTree = ""; }; @@ -6109,12 +6111,12 @@ 80EF671E27F135EB0063B138 /* WhatIsNewViewAppearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WhatIsNewViewAppearance.swift; sourceTree = ""; }; 80EF672127F160720063B138 /* DashboardCustomAnnouncementCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardCustomAnnouncementCell.swift; sourceTree = ""; }; 80EF672427F3D63B0063B138 /* DashboardStatsStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardStatsStackView.swift; sourceTree = ""; }; - 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartToursCollection.swift; sourceTree = ""; }; - 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartFactory.swift; sourceTree = ""; }; - 80EF92922810FA5A0064A971 /* QuickStartFactoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartFactoryTests.swift; sourceTree = ""; }; 80EF9283280CFEB60064A971 /* DashboardPostsSyncManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardPostsSyncManagerTests.swift; sourceTree = ""; }; 80EF9285280D272E0064A971 /* DashboardPostsSyncManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardPostsSyncManager.swift; sourceTree = ""; }; 80EF9289280D28140064A971 /* Atomic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Atomic.swift; sourceTree = ""; }; + 80EF928C280E83110064A971 /* QuickStartToursCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartToursCollection.swift; sourceTree = ""; }; + 80EF928F28105CFA0064A971 /* QuickStartFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartFactory.swift; sourceTree = ""; }; + 80EF92922810FA5A0064A971 /* QuickStartFactoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickStartFactoryTests.swift; sourceTree = ""; }; 820ADD6C1F3A0DA0002D7F93 /* WordPress 64.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "WordPress 64.xcdatamodel"; sourceTree = ""; }; 820ADD6F1F3A1F88002D7F93 /* ThemeBrowserSectionHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ThemeBrowserSectionHeaderView.xib; sourceTree = ""; }; 820ADD711F3A226E002D7F93 /* ThemeBrowserSectionHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeBrowserSectionHeaderView.swift; sourceTree = ""; }; @@ -8215,6 +8217,14 @@ path = Classes; sourceTree = ""; }; + 081E4B4A281BFB520085E89C /* Feature Highlight */ = { + isa = PBXGroup; + children = ( + 081E4B4B281C019A0085E89C /* TooltipAnchor.swift */, + ); + path = "Feature Highlight"; + sourceTree = ""; + }; 086C4D0C1E81F7920011D960 /* Media */ = { isa = PBXGroup; children = ( @@ -11363,6 +11373,7 @@ C533CF320E6D3AB3000C3DE8 /* Comments */, F1C740BD26B18DEA005D0809 /* Developer */, 173BCE711CEB365400AE8817 /* Domains */, + 081E4B4A281BFB520085E89C /* Feature Highlight */, 98AA9F1F27EA888C00B3A98C /* Feature Introduction */, 7E3E9B6E2177C9C300FD5797 /* Gutenberg */, E1F391ED1FF25DEC00DB32A3 /* Jetpack */, @@ -18226,6 +18237,7 @@ FAA4013427B52455009E1137 /* QuickActionButton.swift in Sources */, 32A218D8251109DB00D1AE6C /* ReaderReportPostAction.swift in Sources */, FA681F8A25CA946B00DAA544 /* BaseRestoreStatusFailedViewController.swift in Sources */, + 081E4B4C281C019A0085E89C /* TooltipAnchor.swift in Sources */, 3F851415260D0A3300A4B938 /* UnifiedPrologueEditorContentView.swift in Sources */, 179A70F02729834B006DAC0A /* Binding+OnChange.swift in Sources */, D8D7DF5A20AD18A400B40A2D /* ImgUploadProcessor.swift in Sources */, From 1fb0ca3f8d78748e3ae69ab23d3e7f7b918c33d1 Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Mon, 2 May 2022 14:22:13 +0200 Subject: [PATCH 159/166] Add shadow & accessibility --- .../ViewRelated/Feature Highlight/TooltipAnchor.swift | 8 ++++++++ .../Reader/Detail/ReaderDetailViewController.swift | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift b/WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift index 7cadbf889f3d..015abbcd411f 100644 --- a/WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift +++ b/WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift @@ -11,6 +11,7 @@ final class TooltipAnchor: UIControl { var title: String? { didSet { titleLabel.text = title + accessibilityLabel = title } } @@ -63,5 +64,12 @@ final class TooltipAnchor: UIControl { private func configureUI() { backgroundColor = .invertedSystem5 layer.cornerRadius = Constants.viewHeight / 2 + addShadow() + } + + private func addShadow() { + layer.shadowColor = UIColor.black.cgColor + layer.shadowOffset = CGSize(width: 0, height: 2) + layer.shadowOpacity = 0.5 } } diff --git a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift index aacea67b6524..0bc99f2aa70e 100644 --- a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift +++ b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift @@ -177,8 +177,8 @@ class ReaderDetailViewController: UIViewController, ReaderDetailView { tooltipAnchor.title = "New" view.addSubview(tooltipAnchor) NSLayoutConstraint.activate([ - view.bottomAnchor.constraint(equalTo: tooltipAnchor.bottomAnchor, constant: 100), - tooltipAnchor.centerXAnchor.constraint(equalTo: view.centerXAnchor) + view.safeAreaLayoutGuide.bottomAnchor.constraint(equalTo: tooltipAnchor.bottomAnchor, constant: 68), + tooltipAnchor.centerXAnchor.constraint(equalTo: view.layoutMarginsGuide.centerXAnchor) ]) } From 7409bd1593ac6e6a4f1f634851f8a9a2745bc0d2 Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Mon, 2 May 2022 14:25:21 +0200 Subject: [PATCH 160/166] Revert test code --- .../Reader/Detail/ReaderDetailViewController.swift | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift index 0bc99f2aa70e..71ea94e25471 100644 --- a/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift +++ b/WordPress/Classes/ViewRelated/Reader/Detail/ReaderDetailViewController.swift @@ -169,17 +169,6 @@ class ReaderDetailViewController: UIViewController, ReaderDetailView { // When comments are moderated or edited from the Comments view, update the Comments snippet here. NotificationCenter.default.addObserver(self, selector: #selector(fetchComments), name: .ReaderCommentModifiedNotification, object: nil) - - - // TODO: Remove test code - let tooltipAnchor = TooltipAnchor() - tooltipAnchor.translatesAutoresizingMaskIntoConstraints = false - tooltipAnchor.title = "New" - view.addSubview(tooltipAnchor) - NSLayoutConstraint.activate([ - view.safeAreaLayoutGuide.bottomAnchor.constraint(equalTo: tooltipAnchor.bottomAnchor, constant: 68), - tooltipAnchor.centerXAnchor.constraint(equalTo: view.layoutMarginsGuide.centerXAnchor) - ]) } override func viewWillAppear(_ animated: Bool) { From c6873f2c15b02d4593c31565dac87e2924e85058 Mon Sep 17 00:00:00 2001 From: Tony Li Date: Tue, 3 May 2022 00:39:22 +1200 Subject: [PATCH 161/166] Use `testContextManager` instead of `ContextManager.sharedInstance` They are the same object in runtime, since `TestContextManager` overrides `ContextManager.sharedInstance` with a mock instance. --- WordPress/WordPressTest/BlogJetpackTest.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/WordPressTest/BlogJetpackTest.m b/WordPress/WordPressTest/BlogJetpackTest.m index 29117d42611e..4fbdc9a7f735 100644 --- a/WordPress/WordPressTest/BlogJetpackTest.m +++ b/WordPress/WordPressTest/BlogJetpackTest.m @@ -77,7 +77,7 @@ - (void)testJetpackUsername { - (void)testJetpackSetupDoesntReplaceDotcomAccount { XCTestExpectation *saveExpectation = [self expectationForNotification:NSManagedObjectContextDidSaveNotification object:self.testContextManager.mainContext handler:nil]; - AccountService *accountService = [[AccountService alloc] initWithManagedObjectContext:[ContextManager sharedInstance].mainContext]; + AccountService *accountService = [[AccountService alloc] initWithManagedObjectContext:self.testContextManager.mainContext]; WPAccount *wpComAccount = [accountService createOrUpdateAccountWithUsername:@"user" authToken:@"token"]; [self waitForExpectations:@[saveExpectation] timeout:2.0]; WPAccount * defaultAccount = [accountService defaultWordPressComAccount]; From 65d13c640c425cf4bc4dc64f1184a1947eb7429d Mon Sep 17 00:00:00 2001 From: alpavanoglu Date: Mon, 2 May 2022 15:47:01 +0200 Subject: [PATCH 162/166] Add `dismissByFadingOut` to `TooltipAnchor` --- .../ViewRelated/Feature Highlight/TooltipAnchor.swift | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift b/WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift index 015abbcd411f..8acb2eea5659 100644 --- a/WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift +++ b/WordPress/Classes/ViewRelated/Feature Highlight/TooltipAnchor.swift @@ -38,6 +38,14 @@ final class TooltipAnchor: UIControl { commonInit() } + func dismissByFadingOut() { + UIView.animate(withDuration: 0.3) { + self.alpha = 0 + } completion: { _ in + self.removeFromSuperview() + } + } + required init?(coder: NSCoder) { super.init(coder: coder) commonInit() From cd29f816fee7162f9eafbbfa4171afc3049f26ef Mon Sep 17 00:00:00 2001 From: Stephenie Harris Date: Mon, 2 May 2022 14:29:52 -0600 Subject: [PATCH 163/166] Update Kit pod version. --- Podfile | 4 ++-- Podfile.lock | 13 ++++--------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Podfile b/Podfile index 48713daa248e..502b0b2a3cee 100644 --- a/Podfile +++ b/Podfile @@ -47,9 +47,9 @@ def wordpress_ui end def wordpress_kit - # pod 'WordPressKit', '~> 4.50.0' + pod 'WordPressKit', '~> 4.51.0-beta' # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :tag => '' - pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :branch => 'feature/blogging-prompts-remote' + # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :branch => '' # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :commit => '' # pod 'WordPressKit', :path => '../WordPressKit-iOS' end diff --git a/Podfile.lock b/Podfile.lock index 7f842b5e7311..8370726bdbb8 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -591,7 +591,7 @@ DEPENDENCIES: - SVProgressHUD (= 2.2.5) - WordPress-Editor-iOS (~> 1.19.8) - WordPressAuthenticator (~> 2.0.0) - - WordPressKit (from `https://github.com/wordpress-mobile/WordPressKit-iOS.git`, branch `feature/blogging-prompts-remote`) + - WordPressKit (~> 4.51.0-beta) - WordPressMocks (~> 0.0.15) - WordPressShared (~> 1.17.1) - WordPressUI (~> 1.12.5) @@ -603,6 +603,7 @@ DEPENDENCIES: SPEC REPOS: https://github.com/wordpress-mobile/cocoapods-specs.git: - WordPressAuthenticator + - WordPressKit trunk: - Alamofire - AlamofireImage @@ -752,9 +753,6 @@ EXTERNAL SOURCES: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true :tag: v1.75.0 - WordPressKit: - :branch: feature/blogging-prompts-remote - :git: https://github.com/wordpress-mobile/WordPressKit-iOS.git Yoga: :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/Yoga.podspec.json @@ -770,9 +768,6 @@ CHECKOUT OPTIONS: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true :tag: v1.75.0 - WordPressKit: - :commit: 32b70527fa0c5430598ae0ce3237f43c5967ae07 - :git: https://github.com/wordpress-mobile/WordPressKit-iOS.git SPEC CHECKSUMS: Alamofire: 3ec537f71edc9804815215393ae2b1a8ea33a844 @@ -858,7 +853,7 @@ SPEC CHECKSUMS: WordPress-Aztec-iOS: 7d11d598f14c82c727c08b56bd35fbeb7dafb504 WordPress-Editor-iOS: 9eb9f12f21a5209cb837908d81ffe1e31cb27345 WordPressAuthenticator: 5163f732e4e529781f931f158f54b1a1545bc536 - WordPressKit: 516b88d84ea79503435747fd2ad14f9b0aa8c1f4 + WordPressKit: 13d8806fcc505a89144e1e3d240d17f52026d967 WordPressMocks: 6b52b0764d9939408151367dd9c6e8a910877f4d WordPressShared: 0c4bc5e25765732fcf5d07f28c81970ab28493fb WordPressUI: c5be816f6c7b3392224ac21de9e521e89fa108ac @@ -874,6 +869,6 @@ SPEC CHECKSUMS: ZendeskSupportSDK: 3a8e508ab1d9dd22dc038df6c694466414e037ba ZIPFoundation: ae5b4b813d216d3bf0a148773267fff14bd51d37 -PODFILE CHECKSUM: 6c9781cee94ccf722431310c643ad558a12e3d78 +PODFILE CHECKSUM: 3fa477a11aa74117f1a71675a488092c5cd5d560 COCOAPODS: 1.11.2 From b03a15b4b211fa8aecb2cc106cad9266a107a33c Mon Sep 17 00:00:00 2001 From: Stephenie Harris Date: Mon, 2 May 2022 15:40:06 -0600 Subject: [PATCH 164/166] Update Kit pod version. --- Podfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Podfile.lock b/Podfile.lock index 8370726bdbb8..03cd5ef7c650 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -487,7 +487,7 @@ PODS: - WordPressKit (~> 4.18-beta) - WordPressShared (~> 1.12-beta) - WordPressUI (~> 1.7-beta) - - WordPressKit (4.51.0-beta.1): + - WordPressKit (4.51.0-beta.2): - Alamofire (~> 4.8.0) - CocoaLumberjack (~> 3.4) - NSObject-SafeExpectations (= 0.0.4) @@ -853,7 +853,7 @@ SPEC CHECKSUMS: WordPress-Aztec-iOS: 7d11d598f14c82c727c08b56bd35fbeb7dafb504 WordPress-Editor-iOS: 9eb9f12f21a5209cb837908d81ffe1e31cb27345 WordPressAuthenticator: 5163f732e4e529781f931f158f54b1a1545bc536 - WordPressKit: 13d8806fcc505a89144e1e3d240d17f52026d967 + WordPressKit: 78ef3c3b083ecc933dca771b7db0a4bfb4be6ba3 WordPressMocks: 6b52b0764d9939408151367dd9c6e8a910877f4d WordPressShared: 0c4bc5e25765732fcf5d07f28c81970ab28493fb WordPressUI: c5be816f6c7b3392224ac21de9e521e89fa108ac From 0ed4afa7a7de62ca5aabea2e248bf048311eef39 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 3 May 2022 10:35:47 +1000 Subject: [PATCH 165/166] Remove WordPress-only item from Jetpack 19.8 release notes Co-authored-by: Olivier Halligon --- WordPress/Jetpack/Resources/release_notes.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/WordPress/Jetpack/Resources/release_notes.txt b/WordPress/Jetpack/Resources/release_notes.txt index a6adff6aebfd..f565d1aff3a1 100644 --- a/WordPress/Jetpack/Resources/release_notes.txt +++ b/WordPress/Jetpack/Resources/release_notes.txt @@ -1,4 +1,3 @@ -* [**] Self hosted sites are not restricted by video length during media uploads [https://github.com/wordpress-mobile/WordPress-iOS/pull/18414] * [*] [internal] My Site Dashboard: Made some changes to the code architecture of the dashboard. The majority of the changes are related to the posts cards. It should have no visible changes but could cause regressions. Please test it by creating/trashing drafts and scheduled posts and testing that they appear correctly on the dashboard. [#18405] * [*] Quick Start: Updated the Stats tour. The tour can now be accessed from either the dashboard or the menu tab. [#18413] * [*] Quick Start: Updated the Reader tour. The tour now highlights the Discover tab and guides users to follow topics via the Settings screen. [#18450] From 4a4126a1f1ad2df889a34539983327779909a5f2 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 3 May 2022 12:11:33 +1000 Subject: [PATCH 166/166] Update WordPressKit to version 4.51.0 stable --- Podfile | 4 ++-- Podfile.lock | 15 +++++---------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/Podfile b/Podfile index e133ff9b2deb..96a143edf111 100644 --- a/Podfile +++ b/Podfile @@ -47,9 +47,9 @@ def wordpress_ui end def wordpress_kit - # pod 'WordPressKit', '~> 4.50.0' + pod 'WordPressKit', '~> 4.51.0' # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :tag => '' - pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :branch => 'feature/stats-last-post-insight-featured-image' + # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :branch => 'feature/stats-last-post-insight-featured-image' # pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :commit => '' # pod 'WordPressKit', :path => '../WordPressKit-iOS' end diff --git a/Podfile.lock b/Podfile.lock index b11aa167572e..d1f7485a3c90 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -487,7 +487,7 @@ PODS: - WordPressKit (~> 4.18-beta) - WordPressShared (~> 1.12-beta) - WordPressUI (~> 1.7-beta) - - WordPressKit (4.51.0-beta.1): + - WordPressKit (4.51.0): - Alamofire (~> 4.8.0) - CocoaLumberjack (~> 3.4) - NSObject-SafeExpectations (= 0.0.4) @@ -591,7 +591,7 @@ DEPENDENCIES: - SVProgressHUD (= 2.2.5) - WordPress-Editor-iOS (~> 1.19.8) - WordPressAuthenticator (~> 2.0.0) - - WordPressKit (from `https://github.com/wordpress-mobile/WordPressKit-iOS.git`, branch `feature/stats-last-post-insight-featured-image`) + - WordPressKit (~> 4.51.0) - WordPressMocks (~> 0.0.15) - WordPressShared (~> 1.17.1) - WordPressUI (~> 1.12.5) @@ -640,6 +640,7 @@ SPEC REPOS: - UIDeviceIdentifier - WordPress-Aztec-iOS - WordPress-Editor-iOS + - WordPressKit - WordPressMocks - WordPressShared - WordPressUI @@ -752,9 +753,6 @@ EXTERNAL SOURCES: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true :tag: v1.75.0 - WordPressKit: - :branch: feature/stats-last-post-insight-featured-image - :git: https://github.com/wordpress-mobile/WordPressKit-iOS.git Yoga: :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.75.0/third-party-podspecs/Yoga.podspec.json @@ -770,9 +768,6 @@ CHECKOUT OPTIONS: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true :tag: v1.75.0 - WordPressKit: - :commit: e2a9e16c9a9b2a6c7f46d22ed8187ea42a16244b - :git: https://github.com/wordpress-mobile/WordPressKit-iOS.git SPEC CHECKSUMS: Alamofire: 3ec537f71edc9804815215393ae2b1a8ea33a844 @@ -858,7 +853,7 @@ SPEC CHECKSUMS: WordPress-Aztec-iOS: 7d11d598f14c82c727c08b56bd35fbeb7dafb504 WordPress-Editor-iOS: 9eb9f12f21a5209cb837908d81ffe1e31cb27345 WordPressAuthenticator: 5163f732e4e529781f931f158f54b1a1545bc536 - WordPressKit: 516b88d84ea79503435747fd2ad14f9b0aa8c1f4 + WordPressKit: 79d309801a09fabe9564ac9e1e06554274fc5022 WordPressMocks: 6b52b0764d9939408151367dd9c6e8a910877f4d WordPressShared: 0c4bc5e25765732fcf5d07f28c81970ab28493fb WordPressUI: c5be816f6c7b3392224ac21de9e521e89fa108ac @@ -874,6 +869,6 @@ SPEC CHECKSUMS: ZendeskSupportSDK: 3a8e508ab1d9dd22dc038df6c694466414e037ba ZIPFoundation: ae5b4b813d216d3bf0a148773267fff14bd51d37 -PODFILE CHECKSUM: f6b719c1a9c508e666b7af6b8a7da70cf4bec256 +PODFILE CHECKSUM: b5b3e1a15ab257c5a66378599b49a7b178e84063 COCOAPODS: 1.11.2