diff --git a/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Expanding/WKEditorToolbarExpandingView.swift b/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Expanding/WKEditorToolbarExpandingView.swift index 79d64bd89b3..b4ebce3079d 100644 --- a/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Expanding/WKEditorToolbarExpandingView.swift +++ b/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Expanding/WKEditorToolbarExpandingView.swift @@ -81,71 +81,70 @@ class WKEditorToolbarExpandingView: WKEditorToolbarView { stackView.addArrangedSubview(primaryContainerView) } - expandButton.isAccessibilityElement = false expandButton.setImage(WKSFSymbolIcon.for(symbol: .chevronRightCircle), for: .normal) expandButton.addTarget(self, action: #selector(tappedExpand), for: .touchUpInside) - expandButton.isAccessibilityElement = false + expandButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarExpandButtonAccessibility updateExpandButtonVisibility() formatTextButton.setImage(WKSFSymbolIcon.for(symbol: .textFormat)) formatTextButton.addTarget(self, action: #selector(tappedFormatText), for: .touchUpInside) formatTextButton.accessibilityIdentifier = WKSourceEditorAccessibilityIdentifiers.current?.formatTextButton - formatTextButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonFormatText + formatTextButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarOpenTextFormatMenuButtonAccessibility referenceButton.setImage(WKSFSymbolIcon.for(symbol: .quoteOpening)) referenceButton.addTarget(self, action: #selector(tappedReference), for: .touchUpInside) - referenceButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonCitation + referenceButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarReferenceButtonAccessibility linkButton.setImage(WKSFSymbolIcon.for(symbol: .link)) linkButton.addTarget(self, action: #selector(tappedLink), for: .touchUpInside) - linkButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonLink + linkButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarLinkButtonAccessibility templateButton.setImage(WKSFSymbolIcon.for(symbol: .curlybraces)) templateButton.addTarget(self, action: #selector(tappedTemplate), for: .touchUpInside) - templateButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonTemplate + templateButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarTemplateButtonAccessibility imageButton.setImage(WKSFSymbolIcon.for(symbol: .photo)) imageButton.addTarget(self, action: #selector(tappedMedia), for: .touchUpInside) - imageButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonMedia + imageButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarImageButtonAccessibility findInPageButton.setImage(WKSFSymbolIcon.for(symbol: .docTextMagnifyingGlass)) findInPageButton.addTarget(self, action: #selector(tappedFindInPage), for: .touchUpInside) findInPageButton.accessibilityIdentifier = WKSourceEditorAccessibilityIdentifiers.current?.findButton - findInPageButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonFind + findInPageButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarFindButtonAccessibility unorderedListButton.setImage(WKSFSymbolIcon.for(symbol: .listBullet)) unorderedListButton.addTarget(self, action: #selector(tappedUnorderedList), for: .touchUpInside) - unorderedListButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonListUnordered + unorderedListButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarListUnorderedButtonAccessibility orderedListButton.setImage(WKSFSymbolIcon.for(symbol: .listNumber)) orderedListButton.addTarget(self, action: #selector(tappedOrderedList), for: .touchUpInside) - orderedListButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonListOrdered + orderedListButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarListOrderedButtonAccessibility decreaseIndentionButton.setImage(WKSFSymbolIcon.for(symbol: .decreaseIndent)) decreaseIndentionButton.addTarget(self, action: #selector(tappedDecreaseIndentation), for: .touchUpInside) - decreaseIndentionButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonDecreaseIndent + decreaseIndentionButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarIndentDecreaseButtonAccessibility decreaseIndentionButton.isEnabled = false increaseIndentionButton.setImage(WKSFSymbolIcon.for(symbol: .increaseIndent)) increaseIndentionButton.addTarget(self, action: #selector(tappedIncreaseIndentation), for: .touchUpInside) - increaseIndentionButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonInceaseIndent + increaseIndentionButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarIndentIncreaseButtonAccessibility increaseIndentionButton.isEnabled = false cursorUpButton.setImage(WKSFSymbolIcon.for(symbol: .chevronUp)) cursorUpButton.addTarget(self, action: #selector(tappedCursorUp), for: .touchUpInside) - cursorUpButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonCursorUp + cursorUpButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarCursorUpButtonAccessibility cursorDownButton.setImage(WKSFSymbolIcon.for(symbol: .chevronDown)) cursorDownButton.addTarget(self, action: #selector(tappedCursorDown), for: .touchUpInside) - cursorDownButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonCursorDown + cursorDownButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarCursorDownButtonAccessibility cursorLeftButton.setImage(WKSFSymbolIcon.for(symbol: .chevronBackward)) cursorLeftButton.addTarget(self, action: #selector(tappedCursorLeft), for: .touchUpInside) - cursorLeftButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonCursorLeft + cursorLeftButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarCursorPreviousButtonAccessibility cursorRightButton.setImage(WKSFSymbolIcon.for(symbol: .chevronForward)) cursorRightButton.addTarget(self, action: #selector(tappedCursorRight), for: .touchUpInside) - cursorRightButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonCursorRight + cursorRightButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.toolbarCursorNextButtonAccessibility NotificationCenter.default.addObserver(self, selector: #selector(updateButtonSelectionState(_:)), name: Notification.WKSourceEditorSelectionState, object: nil) } @@ -187,8 +186,6 @@ class WKEditorToolbarExpandingView: WKEditorToolbarView { } else { increaseIndentionButton.isEnabled = false } - - cursorRightButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonCursorRight } // MARK: - Button Actions @@ -225,6 +222,9 @@ class WKEditorToolbarExpandingView: WKEditorToolbarView { let buttonAnimator = UIViewPropertyAnimator(duration: 0.4, dampingRatio: 0.7, animations: buttonTransform) let scrollViewAnimator = UIViewPropertyAnimator(duration: 0.2, curve: .easeInOut, animations: scrollViewContentOffsetChange) + scrollViewAnimator.addCompletion { [weak self] _ in + self?.updateExpandButtonVisibility() + } buttonAnimator.startAnimation() scrollViewAnimator.startAnimation() @@ -233,9 +233,6 @@ class WKEditorToolbarExpandingView: WKEditorToolbarView { @objc private func tappedFormatText() { delegate?.toolbarExpandingViewDidTapFormatText(toolbarView: self) } - - @objc private func tappedFormatHeading() { - } @objc private func tappedReference() { delegate?.toolbarExpandingViewDidTapReference(toolbarView: self, isSelected: referenceButton.isSelected) @@ -293,6 +290,19 @@ class WKEditorToolbarExpandingView: WKEditorToolbarView { private func updateExpandButtonVisibility() { expandButton.isHidden = traitCollection.horizontalSizeClass == .regular + + if expandButton.isHidden { + accessibilityElements = [formatTextButton as Any, referenceButton as Any, linkButton as Any, templateButton as Any, imageButton as Any, findInPageButton as Any, unorderedListButton as Any, orderedListButton as Any, decreaseIndentionButton as Any, increaseIndentionButton as Any, cursorUpButton as Any, cursorDownButton as Any, cursorLeftButton as Any, cursorRightButton as Any] + UIAccessibility.post(notification: .screenChanged, argument: formatTextButton) + } else { + if scrollView.contentOffset.x == 0 { + accessibilityElements = [formatTextButton as Any, referenceButton as Any, linkButton as Any, templateButton as Any, imageButton as Any, findInPageButton as Any, expandButton as Any] + UIAccessibility.post(notification: .screenChanged, argument: formatTextButton) + } else { + accessibilityElements = [unorderedListButton as Any, orderedListButton as Any, decreaseIndentionButton as Any, increaseIndentionButton as Any, cursorUpButton as Any, cursorDownButton as Any, cursorLeftButton as Any, cursorRightButton as Any, expandButton as Any] + UIAccessibility.post(notification: .screenChanged, argument: unorderedListButton) + } + } } } diff --git a/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Find and Replace/WKFindAndReplaceView.swift b/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Find and Replace/WKFindAndReplaceView.swift index fd4d876635b..bf89cbe5210 100644 --- a/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Find and Replace/WKFindAndReplaceView.swift +++ b/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Find and Replace/WKFindAndReplaceView.swift @@ -58,19 +58,20 @@ class WKFindAndReplaceView: WKComponentView { maximumContentSizeCategory = .accessibilityLarge closeButton.setImage(WKSFSymbolIcon.for(symbol: .close), for: .normal) - closeButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelFindButtonClose + closeButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.findCloseButtonAccessibility previousButton.setImage(WKSFSymbolIcon.for(symbol: .chevronUp), for: .normal) - previousButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelFindButtonPrevious + previousButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.findPreviousButtonAccessibility previousButton.imageView?.contentMode = .center nextButton.setImage(WKSFSymbolIcon.for(symbol: .chevronDown), for: .normal) - nextButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelFindButtonNext + nextButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.findNextButtonAccessibility nextButton.imageView?.contentMode = .center replaceButton.setImage(WKIcon.replace, for: .normal) - replaceButton.accessibilityLabel = String.localizedStringWithFormat(WKSourceEditorLocalizedStrings.current.accessibilityLabelReplaceButtonPerformFormat, WKSourceEditorLocalizedStrings.current.accessibilityLabelReplaceTypeSingle) + replaceButton.accessibilityLabel = String.localizedStringWithFormat(WKSourceEditorLocalizedStrings.current.replaceButtonAccessibilityFormat, WKSourceEditorLocalizedStrings.current.replaceTypeSingleAccessibility) + replaceButton.imageView?.contentMode = .center replaceSwitchButton.setImage(WKSFSymbolIcon.for(symbol: .ellipsis), for: .normal) - replaceSwitchButton.accessibilityLabel = String.localizedStringWithFormat(WKSourceEditorLocalizedStrings.current.accessibilityLabelReplaceButtonSwitchFormat, WKSourceEditorLocalizedStrings.current.accessibilityLabelReplaceTypeSingle) + replaceSwitchButton.accessibilityLabel = String.localizedStringWithFormat(WKSourceEditorLocalizedStrings.current.replaceTypeButtonAccessibilityFormat, WKSourceEditorLocalizedStrings.current.replaceTypeSingleAccessibility) replaceSwitchButton.imageView?.contentMode = .center replaceSwitchButton.showsMenuAsPrimaryAction = true @@ -82,22 +83,22 @@ class WKFindAndReplaceView: WKComponentView { pencilImageView.contentMode = .center findClearButton.setImage(WKSFSymbolIcon.for(symbol: .multiplyCircleFill), for: .normal) - findClearButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelFindButtonClear + findClearButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.findClearButtonAccessibility findClearButton.imageView?.contentMode = .center replaceClearButton.setImage(WKSFSymbolIcon.for(symbol: .multiplyCircleFill), for: .normal) - replaceClearButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelReplaceButtonClear + replaceClearButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current.replaceClearButtonAccessibility replaceClearButton.imageView?.contentMode = .center findTextField.adjustsFontForContentSizeCategory = true findTextField.font = WKFont.for(.caption1, compatibleWith: appEnvironment.traitCollection) - findTextField.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelFindTextField + findTextField.accessibilityLabel = WKSourceEditorLocalizedStrings.current.findTextFieldAccessibility findTextField.autocorrectionType = .yes findTextField.spellCheckingType = .yes findTextField.delegate = self replaceTextField.adjustsFontForContentSizeCategory = true replaceTextField.font = WKFont.for(.caption1, compatibleWith: appEnvironment.traitCollection) - replaceTextField.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelReplaceTextField + replaceTextField.accessibilityLabel = WKSourceEditorLocalizedStrings.current.replaceTextFieldAccessibility replaceTextField.autocorrectionType = .yes replaceTextField.spellCheckingType = .yes replaceTextField.delegate = self @@ -107,12 +108,12 @@ class WKFindAndReplaceView: WKComponentView { replaceTypeLabel.adjustsFontForContentSizeCategory = true replaceTypeLabel.font = WKFont.for(.caption1, compatibleWith: appEnvironment.traitCollection) - replaceTypeLabel.text = WKSourceEditorLocalizedStrings.current.findReplaceTypeSingle + replaceTypeLabel.text = WKSourceEditorLocalizedStrings.current.replaceTypeSingle replaceTypeLabel.isAccessibilityElement = false replacePlaceholderLabel.adjustsFontForContentSizeCategory = true replacePlaceholderLabel.font = WKFont.for(.caption1, compatibleWith: appEnvironment.traitCollection) - replacePlaceholderLabel.text = WKSourceEditorLocalizedStrings.current.findReplaceWith + replacePlaceholderLabel.text = WKSourceEditorLocalizedStrings.current.replaceTextfieldPlaceholder replacePlaceholderLabel.isAccessibilityElement = false updateColors() @@ -136,6 +137,12 @@ class WKFindAndReplaceView: WKComponentView { } else { currentMatchInfoLabel.text = nil } + + if let currentMatchInfoAccessibility = viewModel.currentMatchInfoAccessibility { + currentMatchInfoLabel.accessibilityLabel = currentMatchInfoAccessibility + } else { + currentMatchInfoLabel.accessibilityLabel = currentMatchInfoLabel.text + } nextButton.isEnabled = viewModel.nextPrevButtonsAreEnabled previousButton.isEnabled = viewModel.nextPrevButtonsAreEnabled @@ -286,19 +293,25 @@ class WKFindAndReplaceView: WKComponentView { } private func replaceSwitchButtonMenu() -> UIMenu { - let replace = UIAction(title: WKSourceEditorLocalizedStrings.current.findReplaceTypeSingle) { [weak self] _ in + let replace = UIAction(title: WKSourceEditorLocalizedStrings.current.replaceTypeSingle) { [weak self] _ in self?.replaceType = .single - self?.replaceTypeLabel.text = WKSourceEditorLocalizedStrings.current.findReplaceTypeSingle - self?.replaceSwitchButton.accessibilityLabel = String.localizedStringWithFormat(WKSourceEditorLocalizedStrings.current.accessibilityLabelReplaceButtonSwitchFormat, WKSourceEditorLocalizedStrings.current.accessibilityLabelReplaceTypeSingle) + self?.replaceTypeLabel.text = WKSourceEditorLocalizedStrings.current.replaceTypeSingle + + self?.replaceButton.accessibilityLabel = String.localizedStringWithFormat(WKSourceEditorLocalizedStrings.current.replaceButtonAccessibilityFormat, WKSourceEditorLocalizedStrings.current.replaceTypeSingleAccessibility) + + self?.replaceSwitchButton.accessibilityLabel = String.localizedStringWithFormat(WKSourceEditorLocalizedStrings.current.replaceTypeButtonAccessibilityFormat, WKSourceEditorLocalizedStrings.current.replaceTypeSingleAccessibility) } - let replaceAll = UIAction(title: WKSourceEditorLocalizedStrings.current.findReplaceTypeAll) { [weak self] _ in + let replaceAll = UIAction(title: WKSourceEditorLocalizedStrings.current.replaceTypeAll) { [weak self] _ in self?.replaceType = .all - self?.replaceTypeLabel.text = WKSourceEditorLocalizedStrings.current.findReplaceTypeAll - self?.replaceSwitchButton.accessibilityLabel = String.localizedStringWithFormat(WKSourceEditorLocalizedStrings.current.accessibilityLabelReplaceButtonSwitchFormat, WKSourceEditorLocalizedStrings.current.accessibilityLabelReplaceTypeAll) + self?.replaceTypeLabel.text = WKSourceEditorLocalizedStrings.current.replaceTypeAll + + self?.replaceButton.accessibilityLabel = String.localizedStringWithFormat(WKSourceEditorLocalizedStrings.current.replaceButtonAccessibilityFormat, WKSourceEditorLocalizedStrings.current.replaceTypeAll) + + self?.replaceSwitchButton.accessibilityLabel = String.localizedStringWithFormat(WKSourceEditorLocalizedStrings.current.replaceTypeButtonAccessibilityFormat, WKSourceEditorLocalizedStrings.current.replaceTypeAllAccessibility) } - return UIMenu(title: WKSourceEditorLocalizedStrings.current.findReplaceTypeMenuTitle, children: [replace, replaceAll]) + return UIMenu(title: WKSourceEditorLocalizedStrings.current.findAndReplaceTitle, children: [replace, replaceAll]) } } diff --git a/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Find and Replace/WKFindAndReplaceViewModel.swift b/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Find and Replace/WKFindAndReplaceViewModel.swift index 2a2bda35bfd..68d9c494d1c 100644 --- a/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Find and Replace/WKFindAndReplaceViewModel.swift +++ b/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Find and Replace/WKFindAndReplaceViewModel.swift @@ -8,6 +8,7 @@ struct WKFindAndReplaceViewModel { } var currentMatchInfo: String? + var currentMatchInfoAccessibility: String? var matchCount: Int = 0 var nextPrevButtonsAreEnabled: Bool = false var replaceButtonIsEnabled: Bool = false @@ -16,6 +17,7 @@ struct WKFindAndReplaceViewModel { mutating func reset() { currentMatchInfo = nil + currentMatchInfoAccessibility = nil nextPrevButtonsAreEnabled = false } } diff --git a/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Highlight/WKEditorToolbarHighlightView.swift b/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Highlight/WKEditorToolbarHighlightView.swift index 69d26511737..a8a500b7921 100644 --- a/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Highlight/WKEditorToolbarHighlightView.swift +++ b/Components/Sources/Components/Components/Editors/Common Views/Input Accessory Views/Highlight/WKEditorToolbarHighlightView.swift @@ -28,35 +28,37 @@ class WKEditorToolbarHighlightView: WKEditorToolbarView { override func awakeFromNib() { super.awakeFromNib() - accessibilityElements = buttons + [showMoreButton as Any] + stackView.isLayoutMarginsRelativeArrangement = true stackView.layoutMargins = UIEdgeInsets(top: 5, left: 0, bottom: 5, right: 0) boldButton.setImage(WKSFSymbolIcon.for(symbol: .bold)) boldButton.addTarget(self, action: #selector(tappedBold), for: .touchUpInside) - boldButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.accessibilityLabelButtonBold + boldButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.toolbarBoldButtonAccessibility italicsButton.setImage(WKSFSymbolIcon.for(symbol: .italic)) italicsButton.addTarget(self, action: #selector(tappedItalics), for: .touchUpInside) - italicsButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.accessibilityLabelButtonItalics + italicsButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.toolbarItalicsButtonAccessibility referenceButton.setImage(WKSFSymbolIcon.for(symbol: .quoteOpening)) referenceButton.addTarget(self, action: #selector(tappedReference), for: .touchUpInside) - referenceButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.accessibilityLabelButtonCitation + referenceButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.toolbarReferenceButtonAccessibility linkButton.setImage(WKSFSymbolIcon.for(symbol: .link)) linkButton.addTarget(self, action: #selector(tappedLink), for: .touchUpInside) - linkButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.accessibilityLabelButtonLink + linkButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.toolbarLinkButtonAccessibility templateButton.setImage(WKSFSymbolIcon.for(symbol: .curlybraces)) templateButton.addTarget(self, action: #selector(tappedTemplate), for: .touchUpInside) - templateButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.accessibilityLabelButtonTemplate + templateButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.toolbarTemplateButtonAccessibility showMoreButton.setImage(WKSFSymbolIcon.for(symbol: .plusCircleFill), for: .normal) showMoreButton.addTarget(self, action: #selector(tappedShowMore), for: .touchUpInside) showMoreButton.accessibilityIdentifier = WKSourceEditorAccessibilityIdentifiers.current?.showMoreButton - showMoreButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.accessibilityLabelButtonShowMore + showMoreButton.accessibilityLabel = WKSourceEditorLocalizedStrings.current?.toolbarOpenTextFormatMenuButtonAccessibility NotificationCenter.default.addObserver(self, selector: #selector(updateButtonSelectionState(_:)), name: Notification.WKSourceEditorSelectionState, object: nil) + + accessibilityElements = [boldButton as Any, italicsButton as Any, referenceButton as Any, linkButton as Any, templateButton as Any, showMoreButton as Any] } // MARK: - Notifications diff --git a/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorHeaderSelectButton.swift b/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorHeaderSelectButton.swift index b46a1ae4df4..ee0833a9703 100644 --- a/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorHeaderSelectButton.swift +++ b/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorHeaderSelectButton.swift @@ -5,14 +5,14 @@ final class WKEditorHeaderSelectButton: WKComponentView { // MARK: - Nested Types - struct Configuration { + struct ViewModel { let title: String let font: UIFont } // MARK: - Properties - let configuration: Configuration + let viewModel: ViewModel var tapAction: (() -> Void)? private var button: UIButton? @@ -27,8 +27,8 @@ final class WKEditorHeaderSelectButton: WKComponentView { // MARK: - Lifecycle - init(configuration: Configuration) { - self.configuration = configuration + init(viewModel: ViewModel) { + self.viewModel = viewModel super.init(frame: .zero) setup() } @@ -82,10 +82,10 @@ final class WKEditorHeaderSelectButton: WKComponentView { var buttonConfig = UIButton.Configuration.plain() var container = AttributeContainer() - container.font = configuration.font + container.font = viewModel.font container.foregroundColor = theme.text - buttonConfig.attributedTitle = AttributedString(configuration.title, attributes: container) + buttonConfig.attributedTitle = AttributedString(viewModel.title, attributes: container) buttonConfig.baseForegroundColor = theme.text buttonConfig.contentInsets = NSDirectionalEdgeInsets(top: 19, leading: 12, bottom: 19, trailing: 12) buttonConfig.background.cornerRadius = 10 @@ -94,7 +94,7 @@ final class WKEditorHeaderSelectButton: WKComponentView { } private func createButtonAction() -> UIAction { - return UIAction(title: configuration.title, handler: { [weak self] _ in + return UIAction(title: viewModel.title, handler: { [weak self] _ in self?.tapAction?() }) } @@ -104,10 +104,10 @@ final class WKEditorHeaderSelectButton: WKComponentView { buttonConfig?.background.backgroundColor = button.isSelected ? self.theme.link : self.theme.paperBackground var container = AttributeContainer() - container.font = self.configuration.font + container.font = viewModel.font container.foregroundColor = button.isSelected ? self.theme.paperBackground : self.theme.text - buttonConfig?.attributedTitle = AttributedString(self.configuration.title, attributes: container) + buttonConfig?.attributedTitle = AttributedString(viewModel.title, attributes: container) button.configuration = buttonConfig } diff --git a/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorHeaderSelectScrollView.swift b/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorHeaderSelectScrollView.swift index 1df48927083..c8b97177d00 100644 --- a/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorHeaderSelectScrollView.swift +++ b/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorHeaderSelectScrollView.swift @@ -11,7 +11,7 @@ final class WKEditorHeaderSelectScrollView: WKComponentView { private weak var delegate: WKEditorHeaderSelectScrollViewDelegate? private var buttons: [WKEditorHeaderSelectButton] = [] - private let configurations: [WKEditorHeaderSelectButton.Configuration] + private let viewModels: [WKEditorHeaderSelectButton.ViewModel] private lazy var scrollView: UIScrollView = { let scrollView = UIScrollView() @@ -32,8 +32,8 @@ final class WKEditorHeaderSelectScrollView: WKComponentView { // MARK: - Lifecycle - init(configurations: [WKEditorHeaderSelectButton.Configuration], delegate: WKEditorHeaderSelectScrollViewDelegate?) { - self.configurations = configurations + init(viewModels: [WKEditorHeaderSelectButton.ViewModel], delegate: WKEditorHeaderSelectScrollViewDelegate?) { + self.viewModels = viewModels self.delegate = delegate super.init(frame: .zero) setup() @@ -90,8 +90,8 @@ final class WKEditorHeaderSelectScrollView: WKComponentView { var buttons: [WKEditorHeaderSelectButton] = [] - for configuration in configurations { - let button = WKEditorHeaderSelectButton(configuration: configuration) + for viewModel in viewModels { + let button = WKEditorHeaderSelectButton(viewModel: viewModel) button.translatesAutoresizingMaskIntoConstraints = false buttons.append(button) diff --git a/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorInputView.swift b/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorInputView.swift index 85f80be61fe..3a448683df1 100644 --- a/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorInputView.swift +++ b/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorInputView.swift @@ -35,12 +35,12 @@ class WKEditorInputView: WKComponentView { var title: String { switch self { - case .paragraph: return WKSourceEditorLocalizedStrings.current.inputViewParagraph - case .heading: return WKSourceEditorLocalizedStrings.current.inputViewHeading - case .subheading1: return WKSourceEditorLocalizedStrings.current.inputViewSubheading1 - case .subheading2: return WKSourceEditorLocalizedStrings.current.inputViewSubheading2 - case .subheading3: return WKSourceEditorLocalizedStrings.current.inputViewSubheading3 - case .subheading4: return WKSourceEditorLocalizedStrings.current.inputViewSubheading4 + case .paragraph: return WKSourceEditorLocalizedStrings.current.keyboardParagraph + case .heading: return WKSourceEditorLocalizedStrings.current.keyboardHeading + case .subheading1: return WKSourceEditorLocalizedStrings.current.keyboardSubheading1 + case .subheading2: return WKSourceEditorLocalizedStrings.current.keyboardSubheading2 + case .subheading3: return WKSourceEditorLocalizedStrings.current.keyboardSubheading3 + case .subheading4: return WKSourceEditorLocalizedStrings.current.keyboardSubheading4 } } @@ -69,8 +69,9 @@ class WKEditorInputView: WKComponentView { label.translatesAutoresizingMaskIntoConstraints = false label.adjustsFontForContentSizeCategory = true label.font = WKFont.for(.boldTitle3, compatibleWith: appEnvironment.traitCollection) - label.text = WKSourceEditorLocalizedStrings.current.inputViewTextFormatting + label.text = WKSourceEditorLocalizedStrings.current.keyboardTextFormattingTitle label.setContentHuggingPriority(.defaultLow, for: .horizontal) + label.accessibilityTraits = [.header] return label }() @@ -80,7 +81,7 @@ class WKEditorInputView: WKComponentView { setCloseButtonImage(button: button) button.addTarget(self, action: #selector(close(_:)), for: .touchUpInside) button.accessibilityIdentifier = WKSourceEditorAccessibilityIdentifiers.current?.closeButton - button.accessibilityLabel = WKSourceEditorLocalizedStrings.current.accessibilityLabelButtonCloseMainInputView + button.accessibilityLabel = WKSourceEditorLocalizedStrings.current.keyboardCloseTextFormatMenuButtonAccessibility button.setContentHuggingPriority(.required, for: .horizontal) return button }() @@ -109,16 +110,16 @@ class WKEditorInputView: WKComponentView { }() private lazy var headerSelectScrollView: WKEditorHeaderSelectScrollView = { - let configurations: [WKEditorHeaderSelectButton.Configuration] = headingButtonTypes.map { + let viewModels: [WKEditorHeaderSelectButton.ViewModel] = headingButtonTypes.map { let title = $0.title let font = $0.font(traitCollection: traitCollection) - let item = WKEditorHeaderSelectButton.Configuration(title: title, font: font) + let item = WKEditorHeaderSelectButton.ViewModel(title: title, font: font) return item } - let scrollingChoiceView = WKEditorHeaderSelectScrollView(configurations: configurations, delegate: self) + let scrollingChoiceView = WKEditorHeaderSelectScrollView(viewModels: viewModels, delegate: self) scrollingChoiceView.translatesAutoresizingMaskIntoConstraints = false return scrollingChoiceView }() @@ -161,84 +162,70 @@ class WKEditorInputView: WKComponentView { private lazy var multiButtonBoldItalic: WKEditorMultiButton = { - let configuration = WKEditorMultiButton.Configuration(icons: [ - WKSFSymbolIcon.for(symbol: .bold), - WKSFSymbolIcon.for(symbol: .italic) - ]) + let boldViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .bold), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardBoldButtonAccessibility) + let italicViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .italic), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardItalicsButtonAccessibility) - let button = WKEditorMultiButton(configuration: configuration, delegate: self) + let button = WKEditorMultiButton(viewModels: [boldViewModel, italicViewModel], delegate: self) button.translatesAutoresizingMaskIntoConstraints = false return button }() private lazy var multiButtonUnderlineStrikethrough: WKEditorMultiButton = { - let configuration = WKEditorMultiButton.Configuration(icons: [ - WKSFSymbolIcon.for(symbol: .underline), - WKSFSymbolIcon.for(symbol: .strikethrough) - ]) + let underlineViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .underline), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardUnderlineButtonAccessibility) + let strikethroughViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .strikethrough), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardStrikethroughButtonAccessibility) - let button = WKEditorMultiButton(configuration: configuration, delegate: self) + let button = WKEditorMultiButton(viewModels: [underlineViewModel, strikethroughViewModel], delegate: self) button.translatesAutoresizingMaskIntoConstraints = false return button }() private lazy var multiButtonReferenceLink: WKEditorMultiButton = { + + let referenceViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .quoteOpening), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardReferenceButtonAccessibility) + let linkViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .link), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardLinkButtonAccessibility) - let configuration = WKEditorMultiButton.Configuration(icons: [ - WKSFSymbolIcon.for(symbol: .quoteOpening), - WKSFSymbolIcon.for(symbol: .link) - ]) - - let button = WKEditorMultiButton(configuration: configuration, delegate: self) + let button = WKEditorMultiButton(viewModels: [referenceViewModel, linkViewModel], delegate: self) button.translatesAutoresizingMaskIntoConstraints = false return button }() private lazy var multiButtonBulletNumberList: WKEditorMultiButton = { + + let bulletViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .listBullet), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardListUnorderedButtonAccessibility) + let numberViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .listNumber), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardListOrderedButtonAccessibility) - let configuration = WKEditorMultiButton.Configuration(icons: [ - WKSFSymbolIcon.for(symbol: .listBullet), - WKSFSymbolIcon.for(symbol: .listNumber) - ]) - - let button = WKEditorMultiButton(configuration: configuration, delegate: self) + let button = WKEditorMultiButton(viewModels: [bulletViewModel, numberViewModel], delegate: self) button.translatesAutoresizingMaskIntoConstraints = false return button }() private lazy var multiButtonIndentIncreaseDecrease: WKEditorMultiButton = { + + let decreaseIndentViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .decreaseIndent), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardIndentDecreaseButtonAccessibility) + let increaseIndentViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .increaseIndent), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardIndentIncreaseButtonAccessibility) - let configuration = WKEditorMultiButton.Configuration(icons: [ - WKSFSymbolIcon.for(symbol: .decreaseIndent), - WKSFSymbolIcon.for(symbol: .increaseIndent) - ]) - - let button = WKEditorMultiButton(configuration: configuration, delegate: self) + let button = WKEditorMultiButton(viewModels: [decreaseIndentViewModel, increaseIndentViewModel], delegate: self) button.translatesAutoresizingMaskIntoConstraints = false return button }() private lazy var multiButtonSubscriptSuperscript: WKEditorMultiButton = { + + let superscriptViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .textFormatSuperscript), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardSuperscriptButtonAccessibility) + let subscriptViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .textFormatSubscript), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardSubscriptButtonAccessibility) - let configuration = WKEditorMultiButton.Configuration(icons: [ - WKSFSymbolIcon.for(symbol: .textFormatSuperscript), - WKSFSymbolIcon.for(symbol: .textFormatSubscript) - ]) - - let button = WKEditorMultiButton(configuration: configuration, delegate: self) + let button = WKEditorMultiButton(viewModels: [superscriptViewModel, subscriptViewModel], delegate: self) button.translatesAutoresizingMaskIntoConstraints = false return button }() private lazy var multiButtonTemplateComment: WKEditorMultiButton = { + + let templateViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .curlybraces), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardTemplateButtonAccessibility) + let commentViewModel = WKEditorMultiButton.ViewModel(icon: WKSFSymbolIcon.for(symbol: .exclamationMarkCircle), accessibilityLabel: WKSourceEditorLocalizedStrings.current.keyboardCommentButtonAccessibility) - let configuration = WKEditorMultiButton.Configuration(icons: [ - WKSFSymbolIcon.for(symbol: .curlybraces), - WKSFSymbolIcon.for(symbol: .exclamationMarkCircle) - ]) - - let button = WKEditorMultiButton(configuration: configuration, delegate: self) + let button = WKEditorMultiButton(viewModels: [templateViewModel, commentViewModel], delegate: self) button.translatesAutoresizingMaskIntoConstraints = false return button }() diff --git a/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorMultiButton.swift b/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorMultiButton.swift index 084b680fbd9..fe114a566db 100644 --- a/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorMultiButton.swift +++ b/Components/Sources/Components/Components/Editors/Common Views/Input Views/WKEditorMultiButton.swift @@ -9,13 +9,14 @@ final class WKEditorMultiButton: WKComponentView { // MARK: - Nested Types - struct Configuration { - let icons: [UIImage?] + struct ViewModel { + let icon: UIImage? + let accessibilityLabel: String } // MARK: - Properties - private let configuration: Configuration + private let viewModels: [ViewModel] private var buttons: [UIButton] = [] private weak var delegate: WKEditorMultiSelectButtonDelegate? @@ -31,8 +32,8 @@ final class WKEditorMultiButton: WKComponentView { // MARK: - Lifecycle - init(configuration: Configuration, delegate: WKEditorMultiSelectButtonDelegate) { - self.configuration = configuration + init(viewModels: [ViewModel], delegate: WKEditorMultiSelectButtonDelegate) { + self.viewModels = viewModels self.delegate = delegate super.init(frame: .zero) setup() @@ -62,8 +63,8 @@ final class WKEditorMultiButton: WKComponentView { override func appEnvironmentDidChange() { - for (icon, button) in zip(configuration.icons, buttons) { - let buttonConfig = createButtonConfig(image: icon) + for (viewModel, button) in zip(viewModels, buttons) { + let buttonConfig = createButtonConfig(image: viewModel.icon) button.configuration = buttonConfig button.configurationUpdateHandler = buttonConfigurationUpdateHandler(button:) } @@ -91,8 +92,8 @@ final class WKEditorMultiButton: WKComponentView { private func createAndAddButtonsToStackView() { var buttons: [UIButton] = [] - for (index, icon) in configuration.icons.enumerated() { - let button = createButton(icon: icon, tapAction: { [weak self] in + for (index, viewModel) in viewModels.enumerated() { + let button = createButton(viewModel: viewModel, tapAction: { [weak self] in guard let self else { return } @@ -130,13 +131,14 @@ final class WKEditorMultiButton: WKComponentView { button.configuration = buttonConfig } - private func createButton(icon: UIImage?, tapAction: @escaping () -> Void) -> UIButton { + private func createButton(viewModel: ViewModel, tapAction: @escaping () -> Void) -> UIButton { - let buttonConfig = createButtonConfig(image: icon) + let buttonConfig = createButtonConfig(image: viewModel.icon) let action = createButtonAction(action: tapAction) let button = UIButton(configuration: buttonConfig, primaryAction: action) button.configurationUpdateHandler = buttonConfigurationUpdateHandler(button:) button.translatesAutoresizingMaskIntoConstraints = false + button.accessibilityLabel = viewModel.accessibilityLabel return button } diff --git a/Components/Sources/Components/Components/Editors/Source Editor/WKSourceEditorLocalizedStrings.swift b/Components/Sources/Components/Components/Editors/Source Editor/WKSourceEditorLocalizedStrings.swift index a6c9b79e387..b6d9f67237a 100644 --- a/Components/Sources/Components/Components/Editors/Source Editor/WKSourceEditorLocalizedStrings.swift +++ b/Components/Sources/Components/Components/Editors/Source Editor/WKSourceEditorLocalizedStrings.swift @@ -3,132 +3,126 @@ import Foundation public struct WKSourceEditorLocalizedStrings { static var current: WKSourceEditorLocalizedStrings! - let inputViewTextFormatting: String - let inputViewStyle: String - let inputViewClearFormatting: String - let inputViewParagraph: String - let inputViewHeading: String - let inputViewSubheading1: String - let inputViewSubheading2: String - let inputViewSubheading3: String - let inputViewSubheading4: String - let findReplaceTypeSingle: String - let findReplaceTypeAll: String - let findReplaceWith: String - let findReplaceTypeMenuTitle: String + // visible strings + let keyboardTextFormattingTitle: String + let keyboardParagraph: String + let keyboardHeading: String + let keyboardSubheading1: String + let keyboardSubheading2: String + let keyboardSubheading3: String + let keyboardSubheading4: String + let findAndReplaceTitle: String + let replaceTypeSingle: String + let replaceTypeAll: String + let replaceTextfieldPlaceholder: String + let replaceTypeContextMenuTitle: String - let accessibilityLabelButtonFormatText: String - let accessibilityLabelButtonCitation: String - let accessibilityLabelButtonCitationSelected: String - let accessibilityLabelButtonLink: String - let accessibilityLabelButtonLinkSelected: String - let accessibilityLabelButtonTemplate: String - let accessibilityLabelButtonTemplateSelected: String - let accessibilityLabelButtonMedia: String - let accessibilityLabelButtonFind: String - let accessibilityLabelButtonListUnordered: String - let accessibilityLabelButtonListUnorderedSelected: String - let accessibilityLabelButtonListOrdered: String - let accessibilityLabelButtonListOrderedSelected: String - let accessibilityLabelButtonInceaseIndent: String - let accessibilityLabelButtonDecreaseIndent: String - let accessibilityLabelButtonCursorUp: String - let accessibilityLabelButtonCursorDown: String - let accessibilityLabelButtonCursorLeft: String - let accessibilityLabelButtonCursorRight: String + // Voice Over strings + let toolbarOpenTextFormatMenuButtonAccessibility: String + let toolbarReferenceButtonAccessibility: String + let toolbarLinkButtonAccessibility: String + let toolbarTemplateButtonAccessibility: String + let toolbarImageButtonAccessibility: String + let toolbarFindButtonAccessibility: String + let toolbarExpandButtonAccessibility: String + let toolbarListUnorderedButtonAccessibility: String + let toolbarListOrderedButtonAccessibility: String + let toolbarIndentIncreaseButtonAccessibility: String + let toolbarIndentDecreaseButtonAccessibility: String + let toolbarCursorUpButtonAccessibility: String + let toolbarCursorDownButtonAccessibility: String + let toolbarCursorPreviousButtonAccessibility: String + let toolbarCursorNextButtonAccessibility: String + let toolbarBoldButtonAccessibility: String + let toolbarItalicsButtonAccessibility: String + + let keyboardCloseTextFormatMenuButtonAccessibility: String + let keyboardBoldButtonAccessibility: String + let keyboardItalicsButtonAccessibility: String + let keyboardUnderlineButtonAccessibility: String + let keyboardStrikethroughButtonAccessibility: String + let keyboardReferenceButtonAccessibility: String + let keyboardLinkButtonAccessibility: String + let keyboardListUnorderedButtonAccessibility: String + let keyboardListOrderedButtonAccessibility: String + let keyboardIndentIncreaseButtonAccessibility: String + let keyboardIndentDecreaseButtonAccessibility: String + let keyboardSuperscriptButtonAccessibility: String + let keyboardSubscriptButtonAccessibility: String + let keyboardTemplateButtonAccessibility: String + let keyboardCommentButtonAccessibility: String - let accessibilityLabelButtonBold: String - let accessibilityLabelButtonBoldSelected: String - let accessibilityLabelButtonItalics: String - let accessibilityLabelButtonItalicsSelected: String - let accessibilityLabelButtonShowMore: String - - let accessibilityLabelButtonComment: String - let accessibilityLabelButtonCommentSelected: String - let accessibilityLabelButtonSuperscript: String - let accessibilityLabelButtonSuperscriptSelected: String - let accessibilityLabelButtonSubscript: String - let accessibilityLabelButtonSubscriptSelected: String - let accessibilityLabelButtonUnderline: String - let accessibilityLabelButtonUnderlineSelected: String - let accessibilityLabelButtonStrikethrough: String - let accessibilityLabelButtonStrikethroughSelected: String - - let accessibilityLabelButtonCloseMainInputView: String - let accessibilityLabelButtonCloseHeaderSelectInputView: String - - let accessibilityLabelFindTextField: String - let accessibilityLabelFindButtonClear: String - let accessibilityLabelFindButtonClose: String - let accessibilityLabelFindButtonNext: String - let accessibilityLabelFindButtonPrevious: String - let accessibilityLabelReplaceTextField: String - let accessibilityLabelReplaceButtonClear: String - let accessibilityLabelReplaceButtonPerformFormat: String - let accessibilityLabelReplaceButtonSwitchFormat: String - let accessibilityLabelReplaceTypeSingle: String - let accessibilityLabelReplaceTypeAll: String - - public init(inputViewTextFormatting: String, inputViewStyle: String, inputViewClearFormatting: String, inputViewParagraph: String, inputViewHeading: String, inputViewSubheading1: String, inputViewSubheading2: String, inputViewSubheading3: String, inputViewSubheading4: String, findReplaceTypeSingle: String, findReplaceTypeAll: String, findReplaceWith: String, findReplaceTypeMenuTitle: String, accessibilityLabelButtonFormatText: String, accessibilityLabelButtonCitation: String, accessibilityLabelButtonCitationSelected: String, accessibilityLabelButtonLink: String, accessibilityLabelButtonLinkSelected: String, accessibilityLabelButtonTemplate: String, accessibilityLabelButtonTemplateSelected: String, accessibilityLabelButtonMedia: String, accessibilityLabelButtonFind: String, accessibilityLabelButtonListUnordered: String, accessibilityLabelButtonListUnorderedSelected: String, accessibilityLabelButtonListOrdered: String, accessibilityLabelButtonListOrderedSelected: String, accessibilityLabelButtonInceaseIndent: String, accessibilityLabelButtonDecreaseIndent: String, accessibilityLabelButtonCursorUp: String, accessibilityLabelButtonCursorDown: String, accessibilityLabelButtonCursorLeft: String, accessibilityLabelButtonCursorRight: String, accessibilityLabelButtonBold: String, accessibilityLabelButtonBoldSelected: String, accessibilityLabelButtonItalics: String, accessibilityLabelButtonItalicsSelected: String, accessibilityLabelButtonShowMore: String, accessibilityLabelButtonComment: String, accessibilityLabelButtonCommentSelected: String, accessibilityLabelButtonSuperscript: String, accessibilityLabelButtonSuperscriptSelected: String, accessibilityLabelButtonSubscript: String, accessibilityLabelButtonSubscriptSelected: String, accessibilityLabelButtonUnderline: String, accessibilityLabelButtonUnderlineSelected: String, accessibilityLabelButtonStrikethrough: String, accessibilityLabelButtonStrikethroughSelected: String, accessibilityLabelButtonCloseMainInputView: String, accessibilityLabelButtonCloseHeaderSelectInputView: String, accessibilityLabelFindTextField: String, accessibilityLabelFindButtonClear: String, accessibilityLabelFindButtonClose: String, accessibilityLabelFindButtonNext: String, accessibilityLabelFindButtonPrevious: String, accessibilityLabelReplaceTextField: String, accessibilityLabelReplaceButtonClear: String, accessibilityLabelReplaceButtonPerformFormat: String, accessibilityLabelReplaceButtonSwitchFormat: String, accessibilityLabelReplaceTypeSingle: String, accessibilityLabelReplaceTypeAll: String) { - self.inputViewTextFormatting = inputViewTextFormatting - self.inputViewStyle = inputViewStyle - self.inputViewClearFormatting = inputViewClearFormatting - self.inputViewParagraph = inputViewParagraph - self.inputViewHeading = inputViewHeading - self.inputViewSubheading1 = inputViewSubheading1 - self.inputViewSubheading2 = inputViewSubheading2 - self.inputViewSubheading3 = inputViewSubheading3 - self.inputViewSubheading4 = inputViewSubheading4 - self.findReplaceTypeSingle = findReplaceTypeSingle - self.findReplaceTypeAll = findReplaceTypeAll - self.findReplaceWith = findReplaceWith - self.findReplaceTypeMenuTitle = findReplaceTypeMenuTitle - self.accessibilityLabelButtonFormatText = accessibilityLabelButtonFormatText - self.accessibilityLabelButtonCitation = accessibilityLabelButtonCitation - self.accessibilityLabelButtonCitationSelected = accessibilityLabelButtonCitationSelected - self.accessibilityLabelButtonLink = accessibilityLabelButtonLink - self.accessibilityLabelButtonLinkSelected = accessibilityLabelButtonLinkSelected - self.accessibilityLabelButtonTemplate = accessibilityLabelButtonTemplate - self.accessibilityLabelButtonTemplateSelected = accessibilityLabelButtonTemplateSelected - self.accessibilityLabelButtonMedia = accessibilityLabelButtonMedia - self.accessibilityLabelButtonFind = accessibilityLabelButtonFind - self.accessibilityLabelButtonListUnordered = accessibilityLabelButtonListUnordered - self.accessibilityLabelButtonListUnorderedSelected = accessibilityLabelButtonListUnorderedSelected - self.accessibilityLabelButtonListOrdered = accessibilityLabelButtonListOrdered - self.accessibilityLabelButtonListOrderedSelected = accessibilityLabelButtonListOrderedSelected - self.accessibilityLabelButtonInceaseIndent = accessibilityLabelButtonInceaseIndent - self.accessibilityLabelButtonDecreaseIndent = accessibilityLabelButtonDecreaseIndent - self.accessibilityLabelButtonCursorUp = accessibilityLabelButtonCursorUp - self.accessibilityLabelButtonCursorDown = accessibilityLabelButtonCursorDown - self.accessibilityLabelButtonCursorLeft = accessibilityLabelButtonCursorLeft - self.accessibilityLabelButtonCursorRight = accessibilityLabelButtonCursorRight - self.accessibilityLabelButtonBold = accessibilityLabelButtonBold - self.accessibilityLabelButtonBoldSelected = accessibilityLabelButtonBoldSelected - self.accessibilityLabelButtonItalics = accessibilityLabelButtonItalics - self.accessibilityLabelButtonItalicsSelected = accessibilityLabelButtonItalicsSelected - self.accessibilityLabelButtonShowMore = accessibilityLabelButtonShowMore - self.accessibilityLabelButtonComment = accessibilityLabelButtonComment - self.accessibilityLabelButtonCommentSelected = accessibilityLabelButtonCommentSelected - self.accessibilityLabelButtonSuperscript = accessibilityLabelButtonSuperscript - self.accessibilityLabelButtonSuperscriptSelected = accessibilityLabelButtonSuperscriptSelected - self.accessibilityLabelButtonSubscript = accessibilityLabelButtonSubscript - self.accessibilityLabelButtonSubscriptSelected = accessibilityLabelButtonSubscriptSelected - self.accessibilityLabelButtonUnderline = accessibilityLabelButtonUnderline - self.accessibilityLabelButtonUnderlineSelected = accessibilityLabelButtonUnderlineSelected - self.accessibilityLabelButtonStrikethrough = accessibilityLabelButtonStrikethrough - self.accessibilityLabelButtonStrikethroughSelected = accessibilityLabelButtonStrikethroughSelected - self.accessibilityLabelButtonCloseMainInputView = accessibilityLabelButtonCloseMainInputView - self.accessibilityLabelButtonCloseHeaderSelectInputView = accessibilityLabelButtonCloseHeaderSelectInputView - self.accessibilityLabelFindTextField = accessibilityLabelFindTextField - self.accessibilityLabelFindButtonClear = accessibilityLabelFindButtonClear - self.accessibilityLabelFindButtonClose = accessibilityLabelFindButtonClose - self.accessibilityLabelFindButtonNext = accessibilityLabelFindButtonNext - self.accessibilityLabelFindButtonPrevious = accessibilityLabelFindButtonPrevious - self.accessibilityLabelReplaceTextField = accessibilityLabelReplaceTextField - self.accessibilityLabelReplaceButtonClear = accessibilityLabelReplaceButtonClear - self.accessibilityLabelReplaceButtonPerformFormat = accessibilityLabelReplaceButtonPerformFormat - self.accessibilityLabelReplaceButtonSwitchFormat = accessibilityLabelReplaceButtonSwitchFormat - self.accessibilityLabelReplaceTypeSingle = accessibilityLabelReplaceTypeSingle - self.accessibilityLabelReplaceTypeAll = accessibilityLabelReplaceTypeAll + let findTextFieldAccessibility: String + let findClearButtonAccessibility: String + let findCurrentMatchInfoFormatAccessibility: String + let findCurrentMatchInfoZeroResultsAccessibility: String + let findCloseButtonAccessibility: String + let findNextButtonAccessibility: String + let findPreviousButtonAccessibility: String + let replaceTextFieldAccessibility: String + let replaceClearButtonAccessibility: String + let replaceButtonAccessibilityFormat: String + let replaceTypeButtonAccessibilityFormat: String + let replaceTypeSingleAccessibility: String + let replaceTypeAllAccessibility: String + + public init(keyboardTextFormattingTitle: String, keyboardParagraph: String, keyboardHeading: String, keyboardSubheading1: String, keyboardSubheading2: String, keyboardSubheading3: String, keyboardSubheading4: String, findAndReplaceTitle: String, replaceTypeSingle: String, replaceTypeAll: String, replaceTextfieldPlaceholder: String, replaceTypeContextMenuTitle: String, toolbarOpenTextFormatMenuButtonAccessibility: String, toolbarReferenceButtonAccessibility: String, toolbarLinkButtonAccessibility: String, toolbarTemplateButtonAccessibility: String, toolbarImageButtonAccessibility: String, toolbarFindButtonAccessibility: String, toolbarExpandButtonAccessibility: String, toolbarListUnorderedButtonAccessibility: String, toolbarListOrderedButtonAccessibility: String, toolbarIndentIncreaseButtonAccessibility: String, toolbarIndentDecreaseButtonAccessibility: String, toolbarCursorUpButtonAccessibility: String, toolbarCursorDownButtonAccessibility: String, toolbarCursorPreviousButtonAccessibility: String, toolbarCursorNextButtonAccessibility: String, toolbarBoldButtonAccessibility: String, toolbarItalicsButtonAccessibility: String, keyboardCloseTextFormatMenuButtonAccessibility: String, keyboardBoldButtonAccessibility: String, keyboardItalicsButtonAccessibility: String, keyboardUnderlineButtonAccessibility: String, keyboardStrikethroughButtonAccessibility: String, keyboardReferenceButtonAccessibility: String, keyboardLinkButtonAccessibility: String, keyboardListUnorderedButtonAccessibility: String, keyboardListOrderedButtonAccessibility: String, keyboardIndentIncreaseButtonAccessibility: String, keyboardIndentDecreaseButtonAccessibility: String, keyboardSuperscriptButtonAccessibility: String, keyboardSubscriptButtonAccessibility: String, keyboardTemplateButtonAccessibility: String, keyboardCommentButtonAccessibility: String, findTextFieldAccessibility: String, findClearButtonAccessibility: String, findCurrentMatchInfoFormatAccessibility: String, findCurrentMatchInfoZeroResultsAccessibility: String, findCloseButtonAccessibility: String, findNextButtonAccessibility: String, findPreviousButtonAccessibility: String, replaceTextFieldAccessibility: String, replaceClearButtonAccessibility: String, replaceButtonAccessibilityFormat: String, replaceTypeButtonAccessibilityFormat: String, replaceTypeSingleAccessibility: String, replaceTypeAllAccessibility: String) { + self.keyboardTextFormattingTitle = keyboardTextFormattingTitle + self.keyboardParagraph = keyboardParagraph + self.keyboardHeading = keyboardHeading + self.keyboardSubheading1 = keyboardSubheading1 + self.keyboardSubheading2 = keyboardSubheading2 + self.keyboardSubheading3 = keyboardSubheading3 + self.keyboardSubheading4 = keyboardSubheading4 + self.findAndReplaceTitle = findAndReplaceTitle + self.replaceTypeSingle = replaceTypeSingle + self.replaceTypeAll = replaceTypeAll + self.replaceTextfieldPlaceholder = replaceTextfieldPlaceholder + self.replaceTypeContextMenuTitle = replaceTypeContextMenuTitle + self.toolbarOpenTextFormatMenuButtonAccessibility = toolbarOpenTextFormatMenuButtonAccessibility + self.toolbarReferenceButtonAccessibility = toolbarReferenceButtonAccessibility + self.toolbarLinkButtonAccessibility = toolbarLinkButtonAccessibility + self.toolbarTemplateButtonAccessibility = toolbarTemplateButtonAccessibility + self.toolbarImageButtonAccessibility = toolbarImageButtonAccessibility + self.toolbarFindButtonAccessibility = toolbarFindButtonAccessibility + self.toolbarExpandButtonAccessibility = toolbarExpandButtonAccessibility + self.toolbarListUnorderedButtonAccessibility = toolbarListUnorderedButtonAccessibility + self.toolbarListOrderedButtonAccessibility = toolbarListOrderedButtonAccessibility + self.toolbarIndentIncreaseButtonAccessibility = toolbarIndentIncreaseButtonAccessibility + self.toolbarIndentDecreaseButtonAccessibility = toolbarIndentDecreaseButtonAccessibility + self.toolbarCursorUpButtonAccessibility = toolbarCursorUpButtonAccessibility + self.toolbarCursorDownButtonAccessibility = toolbarCursorDownButtonAccessibility + self.toolbarCursorPreviousButtonAccessibility = toolbarCursorPreviousButtonAccessibility + self.toolbarCursorNextButtonAccessibility = toolbarCursorNextButtonAccessibility + self.toolbarBoldButtonAccessibility = toolbarBoldButtonAccessibility + self.toolbarItalicsButtonAccessibility = toolbarItalicsButtonAccessibility + self.keyboardCloseTextFormatMenuButtonAccessibility = keyboardCloseTextFormatMenuButtonAccessibility + self.keyboardBoldButtonAccessibility = keyboardBoldButtonAccessibility + self.keyboardItalicsButtonAccessibility = keyboardItalicsButtonAccessibility + self.keyboardUnderlineButtonAccessibility = keyboardUnderlineButtonAccessibility + self.keyboardStrikethroughButtonAccessibility = keyboardStrikethroughButtonAccessibility + self.keyboardReferenceButtonAccessibility = keyboardReferenceButtonAccessibility + self.keyboardLinkButtonAccessibility = keyboardLinkButtonAccessibility + self.keyboardListUnorderedButtonAccessibility = keyboardListUnorderedButtonAccessibility + self.keyboardListOrderedButtonAccessibility = keyboardListOrderedButtonAccessibility + self.keyboardIndentIncreaseButtonAccessibility = keyboardIndentIncreaseButtonAccessibility + self.keyboardIndentDecreaseButtonAccessibility = keyboardIndentDecreaseButtonAccessibility + self.keyboardSuperscriptButtonAccessibility = keyboardSuperscriptButtonAccessibility + self.keyboardSubscriptButtonAccessibility = keyboardSubscriptButtonAccessibility + self.keyboardTemplateButtonAccessibility = keyboardTemplateButtonAccessibility + self.keyboardCommentButtonAccessibility = keyboardCommentButtonAccessibility + self.findTextFieldAccessibility = findTextFieldAccessibility + self.findClearButtonAccessibility = findClearButtonAccessibility + self.findCurrentMatchInfoFormatAccessibility = findCurrentMatchInfoFormatAccessibility + self.findCurrentMatchInfoZeroResultsAccessibility = findCurrentMatchInfoZeroResultsAccessibility + self.findCloseButtonAccessibility = findCloseButtonAccessibility + self.findNextButtonAccessibility = findNextButtonAccessibility + self.findPreviousButtonAccessibility = findPreviousButtonAccessibility + self.replaceTextFieldAccessibility = replaceTextFieldAccessibility + self.replaceClearButtonAccessibility = replaceClearButtonAccessibility + self.replaceButtonAccessibilityFormat = replaceButtonAccessibilityFormat + self.replaceTypeButtonAccessibilityFormat = replaceTypeButtonAccessibilityFormat + self.replaceTypeSingleAccessibility = replaceTypeSingleAccessibility + self.replaceTypeAllAccessibility = replaceTypeAllAccessibility } } diff --git a/Components/Sources/Components/Components/Editors/Source Editor/WKSourceEditorViewController.swift b/Components/Sources/Components/Components/Editors/Source Editor/WKSourceEditorViewController.swift index c794aef101b..729016ac286 100644 --- a/Components/Sources/Components/Components/Editors/Source Editor/WKSourceEditorViewController.swift +++ b/Components/Sources/Components/Components/Editors/Source Editor/WKSourceEditorViewController.swift @@ -347,11 +347,16 @@ private extension WKSourceEditorViewController { } if findFormatter.selectedMatchIndex != NSNotFound { - viewModel.currentMatchInfo = "\(findFormatter.selectedMatchIndex + 1) / \(findFormatter.matchCount)" + let selectedMatch = findFormatter.selectedMatchIndex + 1 + let totalMatchCount = findFormatter.matchCount + viewModel.currentMatchInfo = "\(selectedMatch) / \(totalMatchCount)" + viewModel.currentMatchInfoAccessibility = String.localizedStringWithFormat(WKSourceEditorLocalizedStrings.current.findCurrentMatchInfoFormatAccessibility, "\(totalMatchCount)", "\(selectedMatch)") } else if findFormatter.matchCount == 0 { viewModel.currentMatchInfo = "0 / 0" + viewModel.currentMatchInfoAccessibility = WKSourceEditorLocalizedStrings.current.findCurrentMatchInfoZeroResultsAccessibility } else { viewModel.currentMatchInfo = nil + viewModel.currentMatchInfoAccessibility = nil } viewModel.nextPrevButtonsAreEnabled = findFormatter.matchCount > 0 diff --git a/Components/Tests/ComponentsTests/WKSourceEditorTests.swift b/Components/Tests/ComponentsTests/WKSourceEditorTests.swift index 3b73b7a27d9..97ff1b4e3dc 100644 --- a/Components/Tests/ComponentsTests/WKSourceEditorTests.swift +++ b/Components/Tests/ComponentsTests/WKSourceEditorTests.swift @@ -61,67 +61,63 @@ extension WKSourceEditorTests: WKSourceEditorViewControllerDelegate { extension WKSourceEditorLocalizedStrings { static var emptyTestStrings: WKSourceEditorLocalizedStrings { - return WKSourceEditorLocalizedStrings( - inputViewTextFormatting: "", - inputViewStyle: "", - inputViewClearFormatting: "", - inputViewParagraph: "", - inputViewHeading: "", - inputViewSubheading1: "", - inputViewSubheading2: "", - inputViewSubheading3: "", - inputViewSubheading4: "", - findReplaceTypeSingle: "", - findReplaceTypeAll: "", - findReplaceWith: "", - findReplaceTypeMenuTitle: "", - accessibilityLabelButtonFormatText: "", - accessibilityLabelButtonCitation: "", - accessibilityLabelButtonCitationSelected: "", - accessibilityLabelButtonLink: "", - accessibilityLabelButtonLinkSelected: "", - accessibilityLabelButtonTemplate: "", - accessibilityLabelButtonTemplateSelected: "", - accessibilityLabelButtonMedia: "", - accessibilityLabelButtonFind: "", - accessibilityLabelButtonListUnordered: "", - accessibilityLabelButtonListUnorderedSelected: "", - accessibilityLabelButtonListOrdered: "", - accessibilityLabelButtonListOrderedSelected: "", - accessibilityLabelButtonInceaseIndent: "", - accessibilityLabelButtonDecreaseIndent: "", - accessibilityLabelButtonCursorUp: "", - accessibilityLabelButtonCursorDown: "", - accessibilityLabelButtonCursorLeft: "", - accessibilityLabelButtonCursorRight: "", - accessibilityLabelButtonBold: "", - accessibilityLabelButtonBoldSelected: "", - accessibilityLabelButtonItalics: "", - accessibilityLabelButtonItalicsSelected: "", - accessibilityLabelButtonShowMore: "", - accessibilityLabelButtonComment: "", - accessibilityLabelButtonCommentSelected: "", - accessibilityLabelButtonSuperscript: "", - accessibilityLabelButtonSuperscriptSelected: "", - accessibilityLabelButtonSubscript: "", - accessibilityLabelButtonSubscriptSelected: "", - accessibilityLabelButtonUnderline: "", - accessibilityLabelButtonUnderlineSelected: "", - accessibilityLabelButtonStrikethrough: "", - accessibilityLabelButtonStrikethroughSelected: "", - accessibilityLabelButtonCloseMainInputView: "", - accessibilityLabelButtonCloseHeaderSelectInputView: "", - accessibilityLabelFindTextField: "", - accessibilityLabelFindButtonClear: "", - accessibilityLabelFindButtonClose: "", - accessibilityLabelFindButtonNext: "", - accessibilityLabelFindButtonPrevious: "", - accessibilityLabelReplaceTextField: "", - accessibilityLabelReplaceButtonClear: "", - accessibilityLabelReplaceButtonPerformFormat: "", - accessibilityLabelReplaceButtonSwitchFormat: "", - accessibilityLabelReplaceTypeSingle: "", - accessibilityLabelReplaceTypeAll: "" + return WKSourceEditorLocalizedStrings(keyboardTextFormattingTitle: "", + keyboardParagraph: "", + keyboardHeading: "", + keyboardSubheading1: "", + keyboardSubheading2: "", + keyboardSubheading3: "", + keyboardSubheading4: "", + findAndReplaceTitle: "", + replaceTypeSingle: "", + replaceTypeAll: "", + replaceTextfieldPlaceholder: "", + replaceTypeContextMenuTitle: "", + toolbarOpenTextFormatMenuButtonAccessibility: "", + toolbarReferenceButtonAccessibility: "", + toolbarLinkButtonAccessibility: "", + toolbarTemplateButtonAccessibility: "", + toolbarImageButtonAccessibility: "", + toolbarFindButtonAccessibility: "", + toolbarExpandButtonAccessibility: "", + toolbarListUnorderedButtonAccessibility: "", + toolbarListOrderedButtonAccessibility: "", + toolbarIndentIncreaseButtonAccessibility: "", + toolbarIndentDecreaseButtonAccessibility: "", + toolbarCursorUpButtonAccessibility: "", + toolbarCursorDownButtonAccessibility: "", + toolbarCursorPreviousButtonAccessibility: "", + toolbarCursorNextButtonAccessibility: "", + toolbarBoldButtonAccessibility: "", + toolbarItalicsButtonAccessibility: "", + keyboardCloseTextFormatMenuButtonAccessibility: "", + keyboardBoldButtonAccessibility: "", + keyboardItalicsButtonAccessibility: "", + keyboardUnderlineButtonAccessibility: "", + keyboardStrikethroughButtonAccessibility: "", + keyboardReferenceButtonAccessibility: "", + keyboardLinkButtonAccessibility: "", + keyboardListUnorderedButtonAccessibility: "", + keyboardListOrderedButtonAccessibility: "", + keyboardIndentIncreaseButtonAccessibility: "", + keyboardIndentDecreaseButtonAccessibility: "", + keyboardSuperscriptButtonAccessibility: "", + keyboardSubscriptButtonAccessibility: "", + keyboardTemplateButtonAccessibility: "", + keyboardCommentButtonAccessibility: "", + findTextFieldAccessibility: "", + findClearButtonAccessibility: "", + findCurrentMatchInfoFormatAccessibility: "", + findCurrentMatchInfoZeroResultsAccessibility: "", + findCloseButtonAccessibility: "", + findNextButtonAccessibility: "", + findPreviousButtonAccessibility: "", + replaceTextFieldAccessibility: "", + replaceClearButtonAccessibility: "", + replaceButtonAccessibilityFormat: "", + replaceTypeButtonAccessibilityFormat: "", + replaceTypeSingleAccessibility: "", + replaceTypeAllAccessibility: "" ) } } diff --git a/WMF Framework/CommonStrings.swift b/WMF Framework/CommonStrings.swift index 54504dea82e..91ad2250590 100644 --- a/WMF Framework/CommonStrings.swift +++ b/WMF Framework/CommonStrings.swift @@ -532,73 +532,93 @@ public class CommonStrings: NSObject { // Native page editor - public static let textFormatting = WMFLocalizedString("source-editor-text-formatting", value: "Text Formatting", comment: "Label for text formatting section on the page editor") - public static let style = WMFLocalizedString("source-editor-style", value: "Style", comment: "Label for style formatting section on the page editor ") - public static let clearFormatting = WMFLocalizedString("source-editor-clear-formatting", value: "Clear formatting", comment: "Label for clear formatting on the page editor") - public static let paragraph = WMFLocalizedString("source-editor-paragraph", value: "Paragraph", comment: "Label for paragraph formatting button on the page editor") - public static let heading = WMFLocalizedString("source-editor-heading", value: "Heading", comment: "Label for heading formatting button on section editor") - public static let subheading1 = WMFLocalizedString("source-editor-subheading1", value: "Subheading 1", comment: "Label for subheading 1 formatting button on the page editor") - public static let subheading2 = WMFLocalizedString("source-editor-subheading2", value: "Subheading 2", comment: "Label for subheading 2 formatting button on the page editor") - public static let subheading3 = WMFLocalizedString("source-editor-subheading3", value: "Subheading 3", comment: "Label for subheading 3 formatting button on the page editor") - public static let subheading4 = WMFLocalizedString("source-editor-subheading4", value: "Subheading 4", comment: "Label for subheading 4 formatting button on the page editor") - public static let findAndReplaceSingle = WMFLocalizedString("source-editor-find-replace-single", value: "Replace", comment: "Label for replace single string button on page editor") - public static let findAndReplaceAll = WMFLocalizedString("source-editor-find-replace-all", value: "Replace all", comment: "Label for replace all ocurrences of a string on the page editor") - public static let replaceWith = WMFLocalizedString("source-editor-find-replace-with", value: "Replace with...", comment: "Lable for replace with string button on page editor") - public static let accessibilityLabelButtonFormatText = WMFLocalizedString("source-editor-accessibility-label-format-text", value: "Show text formatting menu", comment: "Accessibility label for text formatting menu button on the page editor") - public static let accessibilityLabelButtonCitation = WMFLocalizedString("source-editor-accessibility-label-citation", value: "Add reference syntax", comment: "Accessibility label for add reference syntax button on the page editor") - public static let accessibilityLabelButtonCitationSelected = WMFLocalizedString("source-editor-accessibility-label-citation-selected", value: "Remove reference syntax", comment: "Accessibility label for remove reference syntax button on the page editor") - public static let accessibilityLabelButtonLink = WMFLocalizedString("source-editor-accessibility-label-link", value: "Add link syntax", comment: "Accessibility label for the add link syntax button on the page editor") - public static let accessibilityLabelButtonLinkSelected = WMFLocalizedString("source-editor-accessibility-label-link-selected", value: "Remove link syntax", comment: "Accessibility label for the remove link syntax button on the page editor") - public static let accessibilityLabelButtonTemplate = WMFLocalizedString("source-editor-accessibility-label-template", value: "Add template syntax", comment: "Accessibility label for the add template syntax button on the page editor") - public static let accessibilityLabelButtonTemplateSelected = WMFLocalizedString("source-editor-accessibility-label-template-selected", value: "Remove template syntax", comment: "Accessibility label for the remove template syntax button on the page editor") - public static let accessibilityLabelButtonMedia = WMFLocalizedString("source-editor-accessibility-label-media", value: "Insert media", comment: "Accessibility label for the insert media syntax button on the page editor") - public static let accessibilityLabelButtonFind = WMFLocalizedString("source-editor-accessibility-label-find", value: "Find in page", comment: "Accessibility label for the find in page button on the page editor") - public static let accessibilityLabelButtonListUnordered = WMFLocalizedString("source-editor-accessibility-label-unordered", value: "Make current line unordered list", comment: "Accessibility label for make unordered list button on the page editor") - public static let accessibilityLabelButtonListUnorderedSelected = WMFLocalizedString("source-editor-accessibility-label-unordered-selected", value: "Remove unordered list from current line", comment: "Accessibility label for remove unordered list button on the page editor") - public static let accessibilityLabelButtonListOrdered = WMFLocalizedString("source-editor-accessibility-label-ordered", value: "Make current line ordered list", comment: "Accessibility label for make ordered list button on the page editor") - public static let accessibilityLabelButtonListOrderedSelected = WMFLocalizedString("source-editor-accessibility-label-ordered-selected", value: "Remove ordered list from current line", comment: "accessibility label for remove ordered list button on the page editor") - public static let accessibilityLabelButtonIncreaseIndent = WMFLocalizedString("source-editor-accessibility-label-indent-increase", value: "Increase indent depth", comment: "Accessibility label for the increase indent button on the page editor") - public static let accessibilityLabelButtonDecreaseIndent = WMFLocalizedString("source-editor-accessibility-label-indent-decrease", value: "Decrease indent depth", comment: "Accessibility label for the decrease indent button on the page editor") - public static let accessibilityLabelButtonCursorUp = WMFLocalizedString("source-editor-accessibility-label-cursor-up", value: "Move cursor up", comment: "Accessibility label for the move cursor up button on the page editor") - public static let accessibilityLabelButtonCursorDown = WMFLocalizedString("source-editor-accessibility-label-cursor-down", value: "Move cursor down", comment: "Accessibility label for the move cursor down button on the page editor") - public static let accessibilityLabelButtonCursorLeft = WMFLocalizedString("source-editor-accessibility-label-cursor-left", value: "Move cursor left", comment: "Accessibility label for the move cursor left button the page editor") - public static let accessibilityLabelButtonCursorRight = WMFLocalizedString("source-editor-accessibility-label-cursor-right", value: "Move cursor right", comment: "Accessibility label for the move cursor right on the page editor") - public static let accessibilityLabelButtonBold = WMFLocalizedString("source-editor-accessibility-label-bold", value: "Add bold formatting", comment: "Accessibility label for the bold button on the page editor") - public static let accessibilityLabelButtonBoldSelected = WMFLocalizedString("source-editor-accessibility-label-bold-selected", value: "Remove bold formatting", comment: "Accessibility label for the selected bold button on the page editor") - public static let accessibilityLabelButtonItalics = WMFLocalizedString("source-editor-accessibility-label-italics", value: "Add italic formatting", comment: "Accessibility label for the italics button on the page editor") - public static let accessibilityLabelButtonItalicsSelected = WMFLocalizedString("source-editor-accessibility-label-italics-selected", value: "Remove italic formatting", comment: "Accessibility label for the selected italics button on the page editor") - public static let accessibilityLabelButtonClearFormatting = WMFLocalizedString("source-editor-accessibility-label-clear-formatting", value: "Clear formatting", comment: "Accessibility label for the clear formatting button on the page editor") - public static let accessibilityLabelButtonShowMore = WMFLocalizedString("source-editor-accessibility-label-format-text-show-more", value: "Show text formatting menu", comment: "Accessibility label for the show more button on the page editor") - public static let accessibilityLabelButtonComment = WMFLocalizedString("source-editor-accessibility-label-comment", value: "Add comment syntax", comment: "Accessibility label for the add comment button on the page editor") - public static let accessibilityLabelButtonCommentSelected = WMFLocalizedString("source-editor-accessibility-label-comment-selected", value: "Remove comment syntax", comment: "Accessibility label for the selected comment button on the page editor") - public static let accessibilityLabelButtonSuperscript = WMFLocalizedString("source-editor-accessibility-label-superscript", value: "Add superscript formatting", comment: "Accessibility label for the superscript button on the page editor") - public static let accessibilityLabelButtonSuperscriptSelected = WMFLocalizedString("source-editor-accessibility-label-superscript-selected", value: "Remove superscript formatting", comment: "Accessibility string for the selected superscript button on the page editor") - public static let accessibilityLabelButtonSubscript = WMFLocalizedString("source-editor-accessibility-label-subscript", value: "Add subscript formatting", comment: "Accessibility label for the subscript button on the page editor") - public static let accessibilityLabelButtonSubscriptSelected = WMFLocalizedString("source-editor-accessibility-label-subscript-selected", value: "Remove subscript formatting", comment: "Accessibility label for the selected subscript button on the page editor") - public static let accessibilityLabelButtonUnderline = WMFLocalizedString("source-editor-accessibility-label-underline", value: "Add underline", comment: "Accessibility label for the underline button on the page editor") - public static let accessibilityLabelButtonUnderlineSelected = WMFLocalizedString("source-editor-accessibility-label-underline-selected", value: "Remove underline", comment: "Accessibility label for the selected underline button on the page editor") - public static let accessibilityLabelButtonStrikethrough = WMFLocalizedString("source-editor-accessibility-label-strikethrough", value: "Add strikethrough", comment: "Accessibility label for the strikethrough button on the page editor") - public static let accessibilityLabelButtonStrikethroughSelected = WMFLocalizedString("source-editor-accessibility-label-strikethrough-selected", value: "Remove strikethrough", comment: "Accessibility label for the selected strikethrough button on the page editor") - public static let accessibilityLabelButtonCloseMainInputView = WMFLocalizedString("source-editor-accessibility-label-close-main-input", value: "Close text formatting menu", comment: "Accessibility label for the close formatting menu button on the page editor") - public static let accessibilityLabelButtonCloseHeaderSelectInputView = WMFLocalizedString("source-editor-accessibility-label-close-header-select", value: "Close text style menu", comment: "Accessibility label for the close text style menu button on the page editor") - public static let accessibilityLabelFindTextField = WMFLocalizedString("source-editor-accessibility-label-find-text-field", value: "Find", comment: "Accessibility label for the find text field on the page editor") - public static let accessibilityLabelFindButtonClear = WMFLocalizedString("source-editor-accessibility-label-find-button-clear", value: "Clear find", comment: "Accessibility label for the clear find button on the page editor") - public static let accessibilityLabelFindButtonClose = WMFLocalizedString("source-editor-accessibility-label-find-button-close", value: "Close find", comment: "Accessibility label for the close find button on the page editor") - public static let accessibilityLabelFindButtonNext = WMFLocalizedString("source-editor-accessibility-label-find-button-next", value: "Next find result", comment: "Accessibility label for the find next result on the page editor") - public static let accessibilityLabelFindButtonPrevious = WMFLocalizedString("source-editor-accessibility-label-find-button-prev", value: "Previous find result", comment: "Accessibility label for the find previous result button on the page editor") - public static let accessibilityLabelReplaceTextField = WMFLocalizedString("source-editor-accessibility-label-replace-text-field", value: "Replace", comment: "Accessibility label for the replace text field on the page editor") - public static let accessibilityLabelReplaceButtonClear = WMFLocalizedString("source-editor-accessibility-label-replace-button-clear", value: "Clear replace", comment: "Accessibility label for the clear replace field button on the page editor") - public static let accessibilityLabelReplaceButtonPerformFormat = WMFLocalizedString("source-editor-accessibility-label-replace-button-perform-format", value: "Perform replace operation. Replace type is set to %@", comment: "Accessibility label for the perform replace button on the page editor, %@ is replaced by text to replace") // TODO get replaced text correctly - public static let accessibilityLabelReplaceButtonSwitchFormat = WMFLocalizedString("source-editor-accessibility-label-replace-button-switch-format", value: "Switch replace type. Currently set to %@. Select to change.", comment: "Accessibility label for switch format button on page editor, %@ is replaced by text to replace")// TODO get replaced text correctly - public static let accessibilityLabelReplaceTypeSingle = WMFLocalizedString("source-editor-accessibility-label-replace-type-single", value: "Replace single instance", comment: "Accessibility label for replace single instance button on the page editor") - public static let accessibilityLabelReplaceTypeAll = WMFLocalizedString("source-editor-accessibility-label-replace-type-all", value: "Replace all instances", comment: "Accessibility label for the replace all instances button on the page editor") + public static let editorKeyboardTextFormattingTitle = WMFLocalizedString("editor-keyboard-text-formatting-title", value: "Text Formatting", comment: "Title of text formatting keyboard view on the editor.") - public static let editContextMenuTitle = WMFLocalizedString("edit-menu-item", value: "Edit", comment: "Button label for 'Edit' context menu item") + public static let editorKeyboardParagraphButton = WMFLocalizedString("editor-keyboard-paragraph-button", value: "Paragraph", comment: "Paragraph button label in the text formatting keyboard view on the editor.") + public static let editorKeyboardHeadingButton = WMFLocalizedString("editor-keyboard-heading-button", value: "Heading", comment: "Heading button label in the text formatting keyboard view on the editor.") + public static let editorKeyboardSubheading1Button = WMFLocalizedString("editor-keyboard-subheading1-button", value: "Subheading 1", comment: "Subheading1 button label in the text formatting keyboard view on the editor.") + public static let editorKeyboardSubheading2Button = WMFLocalizedString("editor-keyboard-subheading2-button", value: "Subheading 2", comment: "Subheading2 button label in the text formatting keyboard view on the editor.") + public static let editorKeyboardSubheading3Button = WMFLocalizedString("editor-keyboard-subheading3-button", value: "Subheading 3", comment: "Subheading3 button label in the text formatting keyboard view on the editor.") + public static let editorKeyboardSubheading4Button = WMFLocalizedString("editor-keyboard-subheading4-button", value: "Subheading 4", comment: "Subheading4 button label in the text formatting keyboard view on the editor.") + + public static let editorReplaceTypeSingle = WMFLocalizedString("editor-replace-type-single", value: "Replace", comment: "Label indicating which replace type the user has set in the find and replace view on the editor. This type replaces a single instance of the find text.") + public static let editorReplaceTypeAll = WMFLocalizedString("editor-replace-type-all", value: "Replace all", comment: "Label indicating which replace type the user has set in the find and replace view on the editor. This type replaces all instances of the find text.") + public static let editorReplaceTextfieldPlaceholder = WMFLocalizedString("editor-replace-textfield-placeholder", value: "Replace with...", comment: "Placeholder label displayed when the replace textfield in the editor's find and replace view is empty.") + + public static let editorToolbarButtonOpenTextFormatMenuAccessiblityLabel = WMFLocalizedString("editor-toolbar-open-text-format-menu-accessibility", value: "Open text formatting menu", comment: "Accessibility label for text format toolbar button on the editor. This button opens the keyboard text formatting menu.") + + public static let editorToolbarButtonReferenceAccessiblityLabel = WMFLocalizedString("editor-toolbar-reference-accessibility", value: "Reference text formatting", comment: "Accessibility label for reference toolbar button on the editor.") + public static let editorKeyboardButtonReferenceAccessiblityLabel = WMFLocalizedString("editor-keyboard-reference-accessibility", value: "Reference", comment: "Accessibility label for reference keyboard button on the editor.") + + public static let editorToolbarButtonLinkAccessiblityLabel = WMFLocalizedString("editor-toolbar-link-accessibility", value: "Link text formatting", comment: "Accessibility label for link toolbar button on the editor.") + public static let editorKeyboardButtonLinkAccessiblityLabel = WMFLocalizedString("editor-keyboard-link-accessibility", value: "Link", comment: "Accessibility label for link keyboard button on the editor.") + + public static let editorToolbarButtonTemplateAccessiblityLabel = WMFLocalizedString("editor-toolbar-template-accessibility", value: "Template text formatting", comment: "Accessibility label for template toolbar button on the editor.") + public static let editorKeyboardButtonTemplateAccessiblityLabel = WMFLocalizedString("editor-keyboard-template-accessibility", value: "Template", comment: "Accessibility label for template keyboard button on the editor.") + + public static let editorToolbarButtonImageAccessiblityLabel = WMFLocalizedString("editor-toolbar-image-accessibility", value: "Image text formatting", comment: "Accessibility label for image toolbar button on the editor.") + + public static let editorToolbarButtonFindAccessiblityLabel = WMFLocalizedString("editor-toolbar-find-accessibility", value: "Find in page", comment: "Accessibility label for find toolbar button on the editor. This button opens the find in page view.") + + public static let editorToolbarShowMoreOptionsButtonAccessiblityLabel = WMFLocalizedString("editor-toolbar-show-more-accessibility", value: "Show more formatting options", comment: "Accessibility label for expand button on the formatting toolbar in editor. This button reveals more formatting toolbar buttons.") + + public static let editorToolbarButtonListUnorderedAccessiblityLabel = WMFLocalizedString("editor-toolbar-list-unordered-accessibility", value: "Unordered list text formatting", comment: "Accessibility label for unordered list toolbar button on the editor.") + public static let editorKeyboardButtonListUnorderedAccessiblityLabel = WMFLocalizedString("editor-keyboard-list-unordered-accessibility", value: "Unordered list", comment: "Accessibility label for unordered list keyboard button on the editor.") + + public static let editorToolbarButtonListOrderedAccessiblityLabel = WMFLocalizedString("editor-toolbar-list-ordered-accessibility", value: "Ordered list text formatting", comment: "Accessibility label for ordered list toolbar button on the editor.") + public static let editorKeyboardButtonListOrderedAccessiblityLabel = WMFLocalizedString("editor-keyboard-list-ordered-accessibility", value: "Ordered list", comment: "Accessibility label for ordered list keyboard button on the editor.") + + public static let editorToolbarButtonIndentIncreaseAccessiblityLabel = WMFLocalizedString("editor-toolbar-indent-increase-accessibility", value: "Increase indent text formatting", comment: "Accessibility label for increase indent toolbar button on the editor.") + public static let editorKeyboardButtonIndentIncreaseAccessiblityLabel = WMFLocalizedString("editor-keyboard-indent-increase-accessibility", value: "Increase indent", comment: "Accessibility label for increase indent keyboard button on the editor.") + + public static let editorToolbarButtonIndentDecreaseAccessiblityLabel = WMFLocalizedString("editor-toolbar-indent-decrease-accessibility", value: "Decrease indent text formatting", comment: "Accessibility label for decrease indent toolbar button on the editor.") + public static let editorKeyboardButtonIndentDecreaseAccessiblityLabel = WMFLocalizedString("editor-keyboard-indent-decrease-accessibility", value: "Decrease indent", comment: "Accessibility label for decrease indent keyboard button on the editor.") - public static let editSource = WMFLocalizedString("source-editor-edit-source", value: "Edit source", comment: "Title for menu option to edit the source of a page.") + public static let editorToolbarButtonCursorUpAccessiblityLabel = WMFLocalizedString("editor-toolbar-cursor-up-accessibility", value: "Move cursor up to previous line.", comment: "Accessibility label for move cursor up button on the editor. This button moves the cursor up to the previous line.") + public static let editorToolbarButtonCursorDownAccessiblityLabel = WMFLocalizedString("editor-toolbar-cursor-down-accessibility", value: "Move cursor down to next line.", comment: "Accessibility label for move cursor down button on the editor. This button moves the cursor down to the next line.") + public static let editorToolbarButtonCursorPreviousAccessiblityLabel = WMFLocalizedString("editor-toolbar-cursor-previous-accessibility", value: "Move cursor to previous character.", comment: "Accessibility label for move cursor down button on the editor. This button moves the cursor to the previous character.") + public static let editorToolbarButtonCursorNextAccessiblityLabel = WMFLocalizedString("editor-toolbar-cursor-next-accessibility", value: "Move cursor to next character.", comment: "Accessibility label for move cursor next button on the editor. This button moves the cursor to the next character.") - public static let editPublishedToastTitle = WMFLocalizedString("source-editor-edit-published", value: "Your edit was published.", comment: "Title for alert informing that the user's new edit was successfully published.") + public static let editorToolbarButtonBoldAccessiblityLabel = WMFLocalizedString("editor-toolbar-bold-accessibility", value: "Bold text formatting", comment: "Accessibility label for bold toolbar button on the editor.") + public static let editorKeyboardButtonBoldAccessiblityLabel = WMFLocalizedString("editor-keyboard-bold-accessibility", value: "Bold", comment: "Accessibility label for bold keyboard button on the editor.") + public static let editorToolbarButtonItalicsAccessiblityLabel = WMFLocalizedString("editor-toolbar-italics-accessibility", value: "Italics text formatting", comment: "Accessibility label for italics toolbar button on the editor.") + public static let editorKeyboardButtonItalicsAccessiblityLabel = WMFLocalizedString("editor-keyboard-italics-accessibility", value: "Italics", comment: "Accessibility label for italics keyboard button on the editor.") + + public static let editorKeyboardButtonCommentAccessiblityLabel = WMFLocalizedString("editor-keyboard-comment-accessibility", value: "Comment", comment: "Accessibility label for comment keyboard button on the editor.") + + public static let editorKeyboardButtonSuperscriptAccessiblityLabel = WMFLocalizedString("editor-keyboard-superscript-accessibility", value: "Superscript", comment: "Accessibility label for superscript keyboard button on the editor.") + + public static let editorKeyboardButtonSubscriptAccessiblityLabel = WMFLocalizedString("editor-keyboard-subscript-accessibility", value: "Subscript", comment: "Accessibility label for subscript keyboard button on the editor.") + + public static let editorKeyboardButtonUnderlineAccessiblityLabel = WMFLocalizedString("editor-keyboard-underline-accessibility", value: "Underline", comment: "Accessibility label for underline keyboard button on the editor.") + + public static let editorKeyboardButtonStrikethroughAccessiblityLabel = WMFLocalizedString("editor-keyboard-strikethrough-accessibility", value: "Strikethrough", comment: "Accessibility label for strikethrough keyboard button on the editor.") + + public static let editorKeyboardButtonCloseTextFormatMenuAccessiblityLabel = WMFLocalizedString("editor-keyboard-close-text-format-menu-accessibility", value: "Close text formatting menu", comment: "Accessibility label for close keyboard button on the editor. This button closes the keyboard text formatting menu.") + + public static let editorFindTextFieldAccessibilityLabel = WMFLocalizedString("editor-find-textfield-accessibility", value: "Find", comment: "Accessibility label for the find textfield on the editor") + public static let editorFindClearButtonAccessibilityLabel = WMFLocalizedString("editor-find-clear-button-accessibility", value: "Clear find", comment: "Accessibility label for the clear find button on the editor. This button clears the text in the find textfield.") + public static let editorFindCurrentMatchInfoFormatAccessibilityLabel = WMFLocalizedString("editor-find-current-match-info-accessibility", value: "%1$@ total matches found. Highlighted match number %2$@", comment: "Accessibility text for the match results informational label. %1$@ is replaced by the total number of matches found. %2$@ is replaced by which number match is currently highlighted.") + public static let editorFindCurrentMatchInfoZeroResultsAccessibilityLabel = WMFLocalizedString("editor-find-current-match-info-zero-results-accessibility", value: "No matches found", comment: "Accessibility text for zero match results informational label.") + public static let editorFindCloseButtonAccessibilityLabel = WMFLocalizedString("editor-find-close-button-accessibility", value: "Close find", comment: "Accessibility label for the close find button on the editor. This button clears out find results and closes the find in page view.") + public static let editorFindNextButtonAccessibilityLabel = WMFLocalizedString("editor-find-next-button-accessibility", value: "Next find result", comment: "Accessibility label for the find next result on the editor. This button highlights the next find result in the editor text.") + public static let editorFindPreviousButtonAccessibilityLabel = WMFLocalizedString("editor-find-previous-button-accessibility", value: "Previous find result", comment: "Accessibility label for the find previous result on the editor. This button highlights the previous find result in the editor text.") + public static let editorReplaceTextFieldAccessibilityLabel = WMFLocalizedString("editor-replace-textfield-accessibility", value: "Replace", comment: "Accessibility label for the replace textfield on the editor") + public static let editorReplaceClearButtonAccessibilityLabel = WMFLocalizedString("editor-replace-clear-button-accessibility", value: "Clear replace", comment: "Accessibility label for the clear replace button on the editor. This button clears the text in the replace textfield.") + + public static let editorReplaceButtonFormatAccessibilityLabel = WMFLocalizedString("editor-replace-button-format-accessibility", value: "Perform replace operation. Replace type is set to %1$@.", comment: "Accessibility label for the replace button on the editor. %1$@ is replaced by the replace type the user has set (single instance or all instances).") + + public static let editorReplaceTypeButtonFormatAccessibilityLabel = WMFLocalizedString("editor-replace-type-button-accessibility", value: "Switch replace type. Currently set to %1$@. Select to change.", comment: "Accessibility label for the replace type button on the editor. %1$@ is replaced by the replace type the user has set (single instance or all instances).") + + public static let editorReplaceTypeSingleAccessibility = WMFLocalizedString("editor-replace-type-single-accessibility", value: "Replace single instance", comment: "Accessibility text for the replace single instance type on the editor.") + public static let editorReplaceTypeAllAccessibility = WMFLocalizedString("editor-replace-type-all-accessibility", value: "Replace all instances", comment: "Accessibility text for the replace all instances type on the editor.") + + public static let editContextMenuTitle = WMFLocalizedString("edit-menu-item", value: "Edit", comment: "Button label for 'Edit' context menu item") + + public static let editSource = WMFLocalizedString("editor-edit-source", value: "Edit source", comment: "Title for menu option to edit the source of a page.") + + public static let editPublishedToastTitle = WMFLocalizedString("editor-edit-published", value: "Your edit was published.", comment: "Title for alert informing that the user's new edit was successfully published.") } // Language variant strings diff --git a/Wikipedia/Code/PageEditorViewController.swift b/Wikipedia/Code/PageEditorViewController.swift index 42049cfdbaf..5225890323a 100644 --- a/Wikipedia/Code/PageEditorViewController.swift +++ b/Wikipedia/Code/PageEditorViewController.swift @@ -123,65 +123,65 @@ final class PageEditorViewController: UIViewController { } private func addChildEditor(wikitext: String) { - let localizedStrings = WKSourceEditorLocalizedStrings(inputViewTextFormatting: CommonStrings.textFormatting, - inputViewStyle: CommonStrings.style, - inputViewClearFormatting: CommonStrings.clearFormatting, - inputViewParagraph: CommonStrings.paragraph, - inputViewHeading: CommonStrings.heading, - inputViewSubheading1: CommonStrings.subheading1, - inputViewSubheading2: CommonStrings.subheading2, - inputViewSubheading3: CommonStrings.subheading3, - inputViewSubheading4: CommonStrings.subheading4, - findReplaceTypeSingle: CommonStrings.findAndReplaceSingle, - findReplaceTypeAll: CommonStrings.findAndReplaceAll, - findReplaceWith: CommonStrings.replaceWith, findReplaceTypeMenuTitle: CommonStrings.findReplaceHeader, - accessibilityLabelButtonFormatText: CommonStrings.accessibilityLabelButtonFormatText, - accessibilityLabelButtonCitation: CommonStrings.accessibilityLabelButtonCitation, - accessibilityLabelButtonCitationSelected: CommonStrings.accessibilityLabelButtonCitationSelected, - accessibilityLabelButtonLink: CommonStrings.accessibilityLabelButtonBold, - accessibilityLabelButtonLinkSelected: CommonStrings.accessibilityLabelButtonLinkSelected, - accessibilityLabelButtonTemplate: CommonStrings.accessibilityLabelButtonTemplate, - accessibilityLabelButtonTemplateSelected: CommonStrings.accessibilityLabelButtonTemplateSelected, - accessibilityLabelButtonMedia: CommonStrings.accessibilityLabelButtonMedia, - accessibilityLabelButtonFind: CommonStrings.accessibilityLabelButtonFind, - accessibilityLabelButtonListUnordered: CommonStrings.accessibilityLabelButtonListUnordered, - accessibilityLabelButtonListUnorderedSelected: CommonStrings.accessibilityLabelButtonListUnorderedSelected, - accessibilityLabelButtonListOrdered: CommonStrings.accessibilityLabelButtonListOrdered, - accessibilityLabelButtonListOrderedSelected: CommonStrings.accessibilityLabelButtonListOrderedSelected, - accessibilityLabelButtonInceaseIndent: CommonStrings.accessibilityLabelButtonIncreaseIndent, - accessibilityLabelButtonDecreaseIndent: CommonStrings.accessibilityLabelButtonDecreaseIndent, - accessibilityLabelButtonCursorUp: CommonStrings.accessibilityLabelButtonCursorUp, - accessibilityLabelButtonCursorDown: CommonStrings.accessibilityLabelButtonCursorDown, - accessibilityLabelButtonCursorLeft: CommonStrings.accessibilityLabelButtonCursorLeft, - accessibilityLabelButtonCursorRight: CommonStrings.accessibilityLabelButtonCursorRight, - accessibilityLabelButtonBold: CommonStrings.accessibilityLabelButtonBold, - accessibilityLabelButtonBoldSelected: CommonStrings.accessibilityLabelButtonBoldSelected, - accessibilityLabelButtonItalics: CommonStrings.accessibilityLabelButtonItalics, - accessibilityLabelButtonItalicsSelected: CommonStrings.accessibilityLabelButtonItalicsSelected, - accessibilityLabelButtonShowMore: CommonStrings.accessibilityLabelButtonShowMore, - accessibilityLabelButtonComment: CommonStrings.accessibilityLabelButtonComment, - accessibilityLabelButtonCommentSelected: CommonStrings.accessibilityLabelButtonCommentSelected, - accessibilityLabelButtonSuperscript: CommonStrings.accessibilityLabelButtonSuperscript, - accessibilityLabelButtonSuperscriptSelected: CommonStrings.accessibilityLabelButtonSuperscriptSelected, - accessibilityLabelButtonSubscript: CommonStrings.accessibilityLabelButtonSubscript, - accessibilityLabelButtonSubscriptSelected: CommonStrings.accessibilityLabelButtonSubscriptSelected, - accessibilityLabelButtonUnderline: CommonStrings.accessibilityLabelButtonUnderline, - accessibilityLabelButtonUnderlineSelected: CommonStrings.accessibilityLabelButtonUnderlineSelected, - accessibilityLabelButtonStrikethrough: CommonStrings.accessibilityLabelButtonStrikethrough, - accessibilityLabelButtonStrikethroughSelected: CommonStrings.accessibilityLabelButtonStrikethroughSelected, - accessibilityLabelButtonCloseMainInputView: CommonStrings.accessibilityLabelButtonCloseMainInputView, - accessibilityLabelButtonCloseHeaderSelectInputView: CommonStrings.accessibilityLabelButtonCloseHeaderSelectInputView, - accessibilityLabelFindTextField: CommonStrings.accessibilityLabelButtonFind, - accessibilityLabelFindButtonClear: CommonStrings.accessibilityLabelButtonClearFormatting, - accessibilityLabelFindButtonClose: CommonStrings.accessibilityLabelFindButtonClose, - accessibilityLabelFindButtonNext: CommonStrings.accessibilityLabelFindButtonNext, - accessibilityLabelFindButtonPrevious: CommonStrings.accessibilityLabelFindButtonPrevious, - accessibilityLabelReplaceTextField: CommonStrings.accessibilityLabelReplaceTextField, - accessibilityLabelReplaceButtonClear: CommonStrings.accessibilityLabelReplaceButtonClear, - accessibilityLabelReplaceButtonPerformFormat: CommonStrings.accessibilityLabelReplaceButtonPerformFormat, - accessibilityLabelReplaceButtonSwitchFormat: CommonStrings.accessibilityLabelReplaceButtonSwitchFormat, - accessibilityLabelReplaceTypeSingle: CommonStrings.accessibilityLabelReplaceTypeSingle, - accessibilityLabelReplaceTypeAll: CommonStrings.accessibilityLabelReplaceTypeAll) + let localizedStrings = WKSourceEditorLocalizedStrings( + keyboardTextFormattingTitle: CommonStrings.editorKeyboardTextFormattingTitle, + keyboardParagraph: CommonStrings.editorKeyboardParagraphButton, + keyboardHeading: CommonStrings.editorKeyboardHeadingButton, + keyboardSubheading1: CommonStrings.editorKeyboardSubheading1Button, + keyboardSubheading2: CommonStrings.editorKeyboardSubheading2Button, + keyboardSubheading3: CommonStrings.editorKeyboardSubheading3Button, + keyboardSubheading4: CommonStrings.editorKeyboardSubheading4Button, + findAndReplaceTitle: CommonStrings.findReplaceHeader, + replaceTypeSingle: CommonStrings.editorReplaceTypeSingle, + replaceTypeAll: CommonStrings.editorReplaceTypeAll, + replaceTextfieldPlaceholder: CommonStrings.editorReplaceTextfieldPlaceholder, + replaceTypeContextMenuTitle: CommonStrings.findReplaceHeader, + toolbarOpenTextFormatMenuButtonAccessibility: CommonStrings.editorToolbarButtonOpenTextFormatMenuAccessiblityLabel, + toolbarReferenceButtonAccessibility: CommonStrings.editorToolbarButtonReferenceAccessiblityLabel, + toolbarLinkButtonAccessibility: CommonStrings.editorToolbarButtonLinkAccessiblityLabel, + toolbarTemplateButtonAccessibility: CommonStrings.editorToolbarButtonTemplateAccessiblityLabel, + toolbarImageButtonAccessibility: CommonStrings.editorToolbarButtonImageAccessiblityLabel, + toolbarFindButtonAccessibility: CommonStrings.editorToolbarButtonFindAccessiblityLabel, + toolbarExpandButtonAccessibility: CommonStrings.editorToolbarShowMoreOptionsButtonAccessiblityLabel, + toolbarListUnorderedButtonAccessibility: CommonStrings.editorToolbarButtonListUnorderedAccessiblityLabel, + toolbarListOrderedButtonAccessibility: CommonStrings.editorToolbarButtonListOrderedAccessiblityLabel, + toolbarIndentIncreaseButtonAccessibility: CommonStrings.editorToolbarButtonIndentIncreaseAccessiblityLabel, + toolbarIndentDecreaseButtonAccessibility: CommonStrings.editorToolbarButtonIndentDecreaseAccessiblityLabel, + toolbarCursorUpButtonAccessibility: CommonStrings.editorToolbarButtonCursorUpAccessiblityLabel, + toolbarCursorDownButtonAccessibility: CommonStrings.editorToolbarButtonCursorDownAccessiblityLabel, + toolbarCursorPreviousButtonAccessibility: CommonStrings.editorToolbarButtonCursorPreviousAccessiblityLabel, + toolbarCursorNextButtonAccessibility: CommonStrings.editorToolbarButtonCursorNextAccessiblityLabel, + toolbarBoldButtonAccessibility: CommonStrings.editorToolbarButtonBoldAccessiblityLabel, + toolbarItalicsButtonAccessibility: CommonStrings.editorToolbarButtonItalicsAccessiblityLabel, + keyboardCloseTextFormatMenuButtonAccessibility: CommonStrings.editorKeyboardButtonCloseTextFormatMenuAccessiblityLabel, + keyboardBoldButtonAccessibility: CommonStrings.editorKeyboardButtonBoldAccessiblityLabel, + keyboardItalicsButtonAccessibility: CommonStrings.editorKeyboardButtonItalicsAccessiblityLabel, + keyboardUnderlineButtonAccessibility: CommonStrings.editorKeyboardButtonUnderlineAccessiblityLabel, + keyboardStrikethroughButtonAccessibility: CommonStrings.editorKeyboardButtonStrikethroughAccessiblityLabel, + keyboardReferenceButtonAccessibility: CommonStrings.editorKeyboardButtonReferenceAccessiblityLabel, + keyboardLinkButtonAccessibility: CommonStrings.editorKeyboardButtonLinkAccessiblityLabel, + keyboardListUnorderedButtonAccessibility: CommonStrings.editorKeyboardButtonListUnorderedAccessiblityLabel, + keyboardListOrderedButtonAccessibility: CommonStrings.editorKeyboardButtonListOrderedAccessiblityLabel, + keyboardIndentIncreaseButtonAccessibility: CommonStrings.editorKeyboardButtonIndentIncreaseAccessiblityLabel, + keyboardIndentDecreaseButtonAccessibility: CommonStrings.editorKeyboardButtonIndentDecreaseAccessiblityLabel, + keyboardSuperscriptButtonAccessibility: CommonStrings.editorKeyboardButtonSuperscriptAccessiblityLabel, + keyboardSubscriptButtonAccessibility: CommonStrings.editorKeyboardButtonSubscriptAccessiblityLabel, + keyboardTemplateButtonAccessibility: CommonStrings.editorKeyboardButtonTemplateAccessiblityLabel, + keyboardCommentButtonAccessibility: CommonStrings.editorKeyboardButtonCommentAccessiblityLabel, + findTextFieldAccessibility: CommonStrings.editorFindTextFieldAccessibilityLabel, + findClearButtonAccessibility: CommonStrings.editorFindClearButtonAccessibilityLabel, + findCurrentMatchInfoFormatAccessibility: CommonStrings.editorFindCurrentMatchInfoFormatAccessibilityLabel, + findCurrentMatchInfoZeroResultsAccessibility: CommonStrings.editorFindCurrentMatchInfoZeroResultsAccessibilityLabel, + findCloseButtonAccessibility: CommonStrings.editorFindCloseButtonAccessibilityLabel, + findNextButtonAccessibility: CommonStrings.editorFindNextButtonAccessibilityLabel, + findPreviousButtonAccessibility: CommonStrings.editorFindPreviousButtonAccessibilityLabel, + replaceTextFieldAccessibility: CommonStrings.editorReplaceTextFieldAccessibilityLabel, + replaceClearButtonAccessibility: CommonStrings.editorReplaceClearButtonAccessibilityLabel, + replaceButtonAccessibilityFormat: CommonStrings.editorReplaceButtonFormatAccessibilityLabel, + replaceTypeButtonAccessibilityFormat: CommonStrings.editorReplaceTypeButtonFormatAccessibilityLabel, + replaceTypeSingleAccessibility: CommonStrings.editorReplaceTypeSingleAccessibility, + replaceTypeAllAccessibility: CommonStrings.editorReplaceTypeAllAccessibility) + let isSyntaxHighlightingEnabled = UserDefaults.standard.wmf_IsSyntaxHighlightingEnabled let textAlignment = MWKLanguageLinkController.isLanguageRTL(forContentLanguageCode: pageURL.wmf_contentLanguageCode) ? NSTextAlignment.right : NSTextAlignment.left diff --git a/Wikipedia/Code/ReadingThemesControlsViewController.swift b/Wikipedia/Code/ReadingThemesControlsViewController.swift index 80b1310b5d6..ae2fc16b4c2 100644 --- a/Wikipedia/Code/ReadingThemesControlsViewController.swift +++ b/Wikipedia/Code/ReadingThemesControlsViewController.swift @@ -72,6 +72,7 @@ class ReadingThemesControlsViewController: UIViewController { } brightnessSlider.value = Float(UIScreen.main.brightness) + slider.accessibilityLabel = WMFLocalizedString("reading-themes-controls-accessibility-text-size-slider", value: "Text size slider", comment: "Accessibility label for the text size slider in the Reading Themes Controls popover") brightnessSlider.accessibilityLabel = WMFLocalizedString("reading-themes-controls-accessibility-brightness-slider", value: "Brightness slider", comment: "Accessibility label for the brightness slider in the Reading Themes Controls popover") lightThemeButton.accessibilityLabel = WMFLocalizedString("reading-themes-controls-accessibility-light-theme-button", value: "Light theme", comment: "Accessibility label for the light theme button in the Reading Themes Controls popover") sepiaThemeButton.accessibilityLabel = WMFLocalizedString("reading-themes-controls-accessibility-sepia-theme-button", value: "Sepia theme", comment: "Accessibility label for the sepia theme button in the Reading Themes Controls popover") diff --git a/Wikipedia/Localizations/en.lproj/Localizable.strings b/Wikipedia/Localizations/en.lproj/Localizable.strings index da65be00367..756ef5c26e8 100644 --- a/Wikipedia/Localizations/en.lproj/Localizable.strings +++ b/Wikipedia/Localizations/en.lproj/Localizable.strings @@ -338,9 +338,66 @@ "editing-welcome-impartial-tone-title" = "Write in an impartial tone"; "editing-welcome-set-knowledge-free-subtitle" = "In order to give everyone access to the world’s knowledge, we need you to participate in its creation by reading, editing, and contributing to the topics that matter most to you."; "editing-welcome-set-knowledge-free-title" = "Set knowledge free"; +"editor-edit-published" = "Your edit was published."; +"editor-edit-source" = "Edit source"; "editor-exit-confirmation-body" = "Are you sure you want to leave editing mode without publishing first?"; "editor-exit-confirmation-message" = "Are you sure you want to discard this edit?"; "editor-exit-confirmation-title" = "Dismiss the editing mode?"; +"editor-find-clear-button-accessibility" = "Clear find"; +"editor-find-close-button-accessibility" = "Close find"; +"editor-find-current-match-info-accessibility" = "$1 total matches found. Highlighted match number $2"; +"editor-find-current-match-info-zero-results-accessibility" = "No matches found"; +"editor-find-next-button-accessibility" = "Next find result"; +"editor-find-previous-button-accessibility" = "Previous find result"; +"editor-find-textfield-accessibility" = "Find"; +"editor-keyboard-bold-accessibility" = "Bold"; +"editor-keyboard-close-text-format-menu-accessibility" = "Close text formatting menu"; +"editor-keyboard-comment-accessibility" = "Comment"; +"editor-keyboard-heading-button" = "Heading"; +"editor-keyboard-indent-decrease-accessibility" = "Decrease indent"; +"editor-keyboard-indent-increase-accessibility" = "Increase indent"; +"editor-keyboard-italics-accessibility" = "Italics"; +"editor-keyboard-link-accessibility" = "Link"; +"editor-keyboard-list-ordered-accessibility" = "Ordered list"; +"editor-keyboard-list-unordered-accessibility" = "Unordered list"; +"editor-keyboard-paragraph-button" = "Paragraph"; +"editor-keyboard-reference-accessibility" = "Reference"; +"editor-keyboard-strikethrough-accessibility" = "Strikethrough"; +"editor-keyboard-subheading1-button" = "Subheading 1"; +"editor-keyboard-subheading2-button" = "Subheading 2"; +"editor-keyboard-subheading3-button" = "Subheading 3"; +"editor-keyboard-subheading4-button" = "Subheading 4"; +"editor-keyboard-subscript-accessibility" = "Subscript"; +"editor-keyboard-superscript-accessibility" = "Superscript"; +"editor-keyboard-template-accessibility" = "Template"; +"editor-keyboard-text-formatting-title" = "Text Formatting"; +"editor-keyboard-underline-accessibility" = "Underline"; +"editor-replace-button-format-accessibility" = "Perform replace operation. Replace type is set to $1."; +"editor-replace-clear-button-accessibility" = "Clear replace"; +"editor-replace-textfield-accessibility" = "Replace"; +"editor-replace-textfield-placeholder" = "Replace with..."; +"editor-replace-type-all" = "Replace all"; +"editor-replace-type-all-accessibility" = "Replace all instances"; +"editor-replace-type-button-accessibility" = "Switch replace type. Currently set to $1. Select to change."; +"editor-replace-type-single" = "Replace"; +"editor-replace-type-single-accessibility" = "Replace single instance"; +"editor-toolbar-bold-accessibility" = "Bold text formatting"; +"editor-toolbar-cursor-down-accessibility" = "Move cursor down to next line."; +"editor-toolbar-cursor-next-accessibility" = "Move cursor to next character."; +"editor-toolbar-cursor-previous-accessibility" = "Move cursor to previous character."; +"editor-toolbar-cursor-up-accessibility" = "Move cursor up to previous line."; +"editor-toolbar-find-accessibility" = "Find in page"; +"editor-toolbar-image-accessibility" = "Image text formatting"; +"editor-toolbar-indent-decrease-accessibility" = "Decrease indent text formatting"; +"editor-toolbar-indent-increase-accessibility" = "Increase indent text formatting"; +"editor-toolbar-italics-accessibility" = "Italics text formatting"; +"editor-toolbar-link-accessibility" = "Link text formatting"; +"editor-toolbar-list-ordered-accessibility" = "Ordered list text formatting"; +"editor-toolbar-list-unordered-accessibility" = "Unordered list text formatting"; +"editor-toolbar-open-text-format-menu-accessibility" = "Open text formatting menu"; +"editor-toolbar-reference-accessibility" = "Reference text formatting"; +"editor-toolbar-show-more-accessibility" = "Show more formatting options"; +"editor-toolbar-template-accessibility" = "Template text formatting"; "empty-diff-compare-title" = "No differences between revisions"; "empty-diff-single-title" = "No viewable changes made"; "empty-insert-media-title" = "Select a file from Wikimedia Commons"; @@ -1001,68 +1058,6 @@ "share-social-mention-format" = "“$1” via Wikipedia: $2"; "sort-by-recently-added-action" = "Recently added"; "sort-by-title-action" = "Title"; -"source-editor-accessibility-label-bold" = "Add bold formatting"; -"source-editor-accessibility-label-bold-selected" = "Remove bold formatting"; -"source-editor-accessibility-label-citation" = "Add reference syntax"; -"source-editor-accessibility-label-citation-selected" = "Remove reference syntax"; -"source-editor-accessibility-label-clear-formatting" = "Clear formatting"; -"source-editor-accessibility-label-close-header-select" = "Close text style menu"; -"source-editor-accessibility-label-close-main-input" = "Close text formatting menu"; -"source-editor-accessibility-label-comment" = "Add comment syntax"; -"source-editor-accessibility-label-comment-selected" = "Remove comment syntax"; -"source-editor-accessibility-label-cursor-down" = "Move cursor down"; -"source-editor-accessibility-label-cursor-left" = "Move cursor left"; -"source-editor-accessibility-label-cursor-right" = "Move cursor right"; -"source-editor-accessibility-label-cursor-up" = "Move cursor up"; -"source-editor-accessibility-label-find" = "Find in page"; -"source-editor-accessibility-label-find-button-clear" = "Clear find"; -"source-editor-accessibility-label-find-button-close" = "Close find"; -"source-editor-accessibility-label-find-button-next" = "Next find result"; -"source-editor-accessibility-label-find-button-prev" = "Previous find result"; -"source-editor-accessibility-label-find-text-field" = "Find"; -"source-editor-accessibility-label-format-text" = "Show text formatting menu"; -"source-editor-accessibility-label-format-text-show-more" = "Show text formatting menu"; -"source-editor-accessibility-label-indent-decrease" = "Decrease indent depth"; -"source-editor-accessibility-label-indent-increase" = "Increase indent depth"; -"source-editor-accessibility-label-italics" = "Add italic formatting"; -"source-editor-accessibility-label-italics-selected" = "Remove italic formatting"; -"source-editor-accessibility-label-link" = "Add link syntax"; -"source-editor-accessibility-label-link-selected" = "Remove link syntax"; -"source-editor-accessibility-label-media" = "Insert media"; -"source-editor-accessibility-label-ordered" = "Make current line ordered list"; -"source-editor-accessibility-label-ordered-selected" = "Remove ordered list from current line"; -"source-editor-accessibility-label-replace-button-clear" = "Clear replace"; -"source-editor-accessibility-label-replace-button-perform-format" = "Perform replace operation. Replace type is set to $1"; -"source-editor-accessibility-label-replace-button-switch-format" = "Switch replace type. Currently set to $1. Select to change."; -"source-editor-accessibility-label-replace-text-field" = "Replace"; -"source-editor-accessibility-label-replace-type-all" = "Replace all instances"; -"source-editor-accessibility-label-replace-type-single" = "Replace single instance"; -"source-editor-accessibility-label-strikethrough" = "Add strikethrough"; -"source-editor-accessibility-label-strikethrough-selected" = "Remove strikethrough"; -"source-editor-accessibility-label-subscript" = "Add subscript formatting"; -"source-editor-accessibility-label-subscript-selected" = "Remove subscript formatting"; -"source-editor-accessibility-label-superscript" = "Add superscript formatting"; -"source-editor-accessibility-label-superscript-selected" = "Remove superscript formatting"; -"source-editor-accessibility-label-template" = "Add template syntax"; -"source-editor-accessibility-label-template-selected" = "Remove template syntax"; -"source-editor-accessibility-label-underline" = "Add underline"; -"source-editor-accessibility-label-underline-selected" = "Remove underline"; -"source-editor-accessibility-label-unordered" = "Make current line unordered list"; -"source-editor-accessibility-label-unordered-selected" = "Remove unordered list from current line"; -"source-editor-clear-formatting" = "Clear formatting"; -"source-editor-edit-published" = "Your edit was published."; -"source-editor-edit-source" = "Edit source"; -"source-editor-find-replace-all" = "Replace all"; -"source-editor-find-replace-single" = "Replace"; -"source-editor-find-replace-with" = "Replace with..."; -"source-editor-heading" = "Heading"; -"source-editor-paragraph" = "Paragraph"; -"source-editor-style" = "Style"; -"source-editor-subheading1" = "Subheading 1"; -"source-editor-subheading2" = "Subheading 2"; -"source-editor-subheading3" = "Subheading 3"; -"source-editor-subheading4" = "Subheading 4"; -"source-editor-text-formatting" = "Text Formatting"; "table-of-contents-button-label" = "Table of contents"; "table-of-contents-close-accessibility-hint" = "Close"; "table-of-contents-close-accessibility-label" = "Close Table of contents"; diff --git a/Wikipedia/Localizations/qqq.lproj/Localizable.strings b/Wikipedia/Localizations/qqq.lproj/Localizable.strings index 86411e8265c..3f71a381d11 100644 --- a/Wikipedia/Localizations/qqq.lproj/Localizable.strings +++ b/Wikipedia/Localizations/qqq.lproj/Localizable.strings @@ -338,9 +338,66 @@ "editing-welcome-impartial-tone-title" = "Title for editing onboarding screen instructing users to use impartial tone when editing Wikipedia articles"; "editing-welcome-set-knowledge-free-subtitle" = "Title for editing onboarding screen encouraging users to participate in the creation of Wikipedia content"; "editing-welcome-set-knowledge-free-title" = "Title for editing onboarding screen encouraging users to participate in the creation of Wikipedia content"; +"editor-edit-published" = "Title for alert informing that the user's new edit was successfully published."; +"editor-edit-source" = "Title for menu option to edit the source of a page."; "editor-exit-confirmation-body" = "Body text of editing mode confirmation alert. Presented to the user when they they are about to be navigated away from the editor flow."; "editor-exit-confirmation-message" = "Message text of editing mode confirmation alert. Presented to the user when they they are about to be navigated away from the editor flow."; "editor-exit-confirmation-title" = "Title text of editing mode confirmation alert. Presented to the user when they they are about to be navigated away from the editor flow."; +"editor-find-clear-button-accessibility" = "Accessibility label for the clear find button on the editor. This button clears the text in the find textfield."; +"editor-find-close-button-accessibility" = "Accessibility label for the close find button on the editor. This button clears out find results and closes the find in page view."; +"editor-find-current-match-info-accessibility" = "Accessibility text for the match results informational label. $1 is replaced by the total number of matches found. $2 is replaced by which number match is currently highlighted."; +"editor-find-current-match-info-zero-results-accessibility" = "Accessibility text for zero match results informational label."; +"editor-find-next-button-accessibility" = "Accessibility label for the find next result on the editor. This button highlights the next find result in the editor text."; +"editor-find-previous-button-accessibility" = "Accessibility label for the find previous result on the editor. This button highlights the previous find result in the editor text."; +"editor-find-textfield-accessibility" = "Accessibility label for the find textfield on the editor"; +"editor-keyboard-bold-accessibility" = "Accessibility label for bold keyboard button on the editor."; +"editor-keyboard-close-text-format-menu-accessibility" = "Accessibility label for close keyboard button on the editor. This button closes the keyboard text formatting menu."; +"editor-keyboard-comment-accessibility" = "Accessibility label for comment keyboard button on the editor."; +"editor-keyboard-heading-button" = "Heading button label in the text formatting keyboard view on the editor."; +"editor-keyboard-indent-decrease-accessibility" = "Accessibility label for decrease indent keyboard button on the editor."; +"editor-keyboard-indent-increase-accessibility" = "Accessibility label for increase indent keyboard button on the editor."; +"editor-keyboard-italics-accessibility" = "Accessibility label for italics keyboard button on the editor."; +"editor-keyboard-link-accessibility" = "Accessibility label for link keyboard button on the editor."; +"editor-keyboard-list-ordered-accessibility" = "Accessibility label for ordered list keyboard button on the editor."; +"editor-keyboard-list-unordered-accessibility" = "Accessibility label for unordered list keyboard button on the editor."; +"editor-keyboard-paragraph-button" = "Paragraph button label in the text formatting keyboard view on the editor."; +"editor-keyboard-reference-accessibility" = "Accessibility label for reference keyboard button on the editor."; +"editor-keyboard-strikethrough-accessibility" = "Accessibility label for strikethrough keyboard button on the editor."; +"editor-keyboard-subheading1-button" = "Subheading1 button label in the text formatting keyboard view on the editor."; +"editor-keyboard-subheading2-button" = "Subheading2 button label in the text formatting keyboard view on the editor."; +"editor-keyboard-subheading3-button" = "Subheading3 button label in the text formatting keyboard view on the editor."; +"editor-keyboard-subheading4-button" = "Subheading4 button label in the text formatting keyboard view on the editor."; +"editor-keyboard-subscript-accessibility" = "Accessibility label for subscript keyboard button on the editor."; +"editor-keyboard-superscript-accessibility" = "Accessibility label for superscript keyboard button on the editor."; +"editor-keyboard-template-accessibility" = "Accessibility label for template keyboard button on the editor."; +"editor-keyboard-text-formatting-title" = "Title of text formatting keyboard view on the editor."; +"editor-keyboard-underline-accessibility" = "Accessibility label for underline keyboard button on the editor."; +"editor-replace-button-format-accessibility" = "Accessibility label for the replace button on the editor. $1 is replaced by the replace type the user has set (single instance or all instances)."; +"editor-replace-clear-button-accessibility" = "Accessibility label for the clear replace button on the editor. This button clears the text in the replace textfield."; +"editor-replace-textfield-accessibility" = "Accessibility label for the replace textfield on the editor"; +"editor-replace-textfield-placeholder" = "Placeholder label displayed when the replace textfield in the editor's find and replace view is empty."; +"editor-replace-type-all" = "Label indicating which replace type the user has set in the find and replace view on the editor. This type replaces all instances of the find text."; +"editor-replace-type-all-accessibility" = "Accessibility text for the replace all instances type on the editor."; +"editor-replace-type-button-accessibility" = "Accessibility label for the replace type button on the editor. $1 is replaced by the replace type the user has set (single instance or all instances)."; +"editor-replace-type-single" = "Label indicating which replace type the user has set in the find and replace view on the editor. This type replaces a single instance of the find text."; +"editor-replace-type-single-accessibility" = "Accessibility text for the replace single instance type on the editor."; +"editor-toolbar-bold-accessibility" = "Accessibility label for bold toolbar button on the editor."; +"editor-toolbar-cursor-down-accessibility" = "Accessibility label for move cursor down button on the editor. This button moves the cursor down to the next line."; +"editor-toolbar-cursor-next-accessibility" = "Accessibility label for move cursor next button on the editor. This button moves the cursor to the next character."; +"editor-toolbar-cursor-previous-accessibility" = "Accessibility label for move cursor down button on the editor. This button moves the cursor to the previous character."; +"editor-toolbar-cursor-up-accessibility" = "Accessibility label for move cursor up button on the editor. This button moves the cursor up to the previous line."; +"editor-toolbar-find-accessibility" = "Accessibility label for find toolbar button on the editor. This button opens the find in page view."; +"editor-toolbar-image-accessibility" = "Accessibility label for image toolbar button on the editor."; +"editor-toolbar-indent-decrease-accessibility" = "Accessibility label for decrease indent toolbar button on the editor."; +"editor-toolbar-indent-increase-accessibility" = "Accessibility label for increase indent toolbar button on the editor."; +"editor-toolbar-italics-accessibility" = "Accessibility label for italics toolbar button on the editor."; +"editor-toolbar-link-accessibility" = "Accessibility label for link toolbar button on the editor."; +"editor-toolbar-list-ordered-accessibility" = "Accessibility label for ordered list toolbar button on the editor."; +"editor-toolbar-list-unordered-accessibility" = "Accessibility label for unordered list toolbar button on the editor."; +"editor-toolbar-open-text-format-menu-accessibility" = "Accessibility label for text format toolbar button on the editor. This button opens the keyboard text formatting menu."; +"editor-toolbar-reference-accessibility" = "Accessibility label for reference toolbar button on the editor."; +"editor-toolbar-show-more-accessibility" = "Accessibility label for expand button on the formatting toolbar in editor. This button reveals more formatting toolbar buttons."; +"editor-toolbar-template-accessibility" = "Accessibility label for template toolbar button on the editor."; "empty-diff-compare-title" = "Text for placeholder label visible when diff comparision between revisions is empty."; "empty-diff-single-title" = "Text for placeholder label visible when diff returned for single revision is empty."; "empty-insert-media-title" = "Text for placeholder label visible when no file was selected or uploaded"; @@ -893,7 +950,7 @@ "reading-themes-controls-accessibility-light-theme-button" = "Accessibility label for the light theme button in the Reading Themes Controls popover"; "reading-themes-controls-accessibility-sepia-theme-button" = "Accessibility label for the sepia theme button in the Reading Themes Controls popover"; "reading-themes-controls-accessibility-syntax-highlighting-switch" = "Accessibility text for the syntax highlighting toggle in the Reading Themes Controls popover"; -"reading-themes-controls-accessibility-text-size-slider" = "Accessibility label for the text size slider that adjusts article text size."; +"reading-themes-controls-accessibility-text-size-slider" = "Accessibility label for the text size slider in the Reading Themes Controls popover"; "reading-themes-controls-syntax-highlighting" = "Text for syntax highlighting label in the Reading Themes Controls popover"; "reference-section-button-accessibility-label" = "Voiceover label for the top button (that jumps to article's reference section) when viewing a reference's details"; "reference-title" = "Title shown above reference/citation popover. $1 is replaced with the reference link text - i.e. '[1]' {{Identical|Reference}}"; @@ -1001,68 +1058,6 @@ "share-social-mention-format" = "Share format string for social platforms with an @mention. $1 is replaced with the article title, $2 is replaced with the article URL."; "sort-by-recently-added-action" = "Title of the sort action that allows sorting items by date added."; "sort-by-title-action" = "Title of the sort action that allows sorting items by title."; -"source-editor-accessibility-label-bold" = "Accessibility label for the bold button on the page editor"; -"source-editor-accessibility-label-bold-selected" = "Accessibility label for the selected bold button on the page editor"; -"source-editor-accessibility-label-citation" = "Accessibility label for add reference syntax button on the page editor"; -"source-editor-accessibility-label-citation-selected" = "Accessibility label for remove reference syntax button on the page editor"; -"source-editor-accessibility-label-clear-formatting" = "Accessibility label for the clear formatting button on the page editor"; -"source-editor-accessibility-label-close-header-select" = "Accessibility label for the close text style menu button on the page editor"; -"source-editor-accessibility-label-close-main-input" = "Accessibility label for the close formatting menu button on the page editor"; -"source-editor-accessibility-label-comment" = "Accessibility label for the add comment button on the page editor"; -"source-editor-accessibility-label-comment-selected" = "Accessibility label for the selected comment button on the page editor"; -"source-editor-accessibility-label-cursor-down" = "Accessibility label for the move cursor down button on the page editor"; -"source-editor-accessibility-label-cursor-left" = "Accessibility label for the move cursor left button the page editor"; -"source-editor-accessibility-label-cursor-right" = "Accessibility label for the move cursor right on the page editor"; -"source-editor-accessibility-label-cursor-up" = "Accessibility label for the move cursor up button on the page editor"; -"source-editor-accessibility-label-find" = "Accessibility label for the find in page button on the page editor"; -"source-editor-accessibility-label-find-button-clear" = "Accessibility label for the clear find button on the page editor"; -"source-editor-accessibility-label-find-button-close" = "Accessibility label for the close find button on the page editor"; -"source-editor-accessibility-label-find-button-next" = "Accessibility label for the find next result on the page editor"; -"source-editor-accessibility-label-find-button-prev" = "Accessibility label for the find previous result button on the page editor"; -"source-editor-accessibility-label-find-text-field" = "Accessibility label for the find text field on the page editor"; -"source-editor-accessibility-label-format-text" = "Accessibility label for text formatting menu button on the page editor"; -"source-editor-accessibility-label-format-text-show-more" = "Accessibility label for the show more button on the page editor"; -"source-editor-accessibility-label-indent-decrease" = "Accessibility label for the decrease indent button on the page editor"; -"source-editor-accessibility-label-indent-increase" = "Accessibility label for the increase indent button on the page editor"; -"source-editor-accessibility-label-italics" = "Accessibility label for the italics button on the page editor"; -"source-editor-accessibility-label-italics-selected" = "Accessibility label for the selected italics button on the page editor"; -"source-editor-accessibility-label-link" = "Accessibility label for the add link syntax button on the page editor"; -"source-editor-accessibility-label-link-selected" = "Accessibility label for the remove link syntax button on the page editor"; -"source-editor-accessibility-label-media" = "Accessibility label for the insert media syntax button on the page editor"; -"source-editor-accessibility-label-ordered" = "Accessibility label for make ordered list button on the page editor"; -"source-editor-accessibility-label-ordered-selected" = "accessibility label for remove ordered list button on the page editor"; -"source-editor-accessibility-label-replace-button-clear" = "Accessibility label for the clear replace field button on the page editor"; -"source-editor-accessibility-label-replace-button-perform-format" = "Accessibility label for the perform replace button on the page editor, $1 is replaced by text to replace"; -"source-editor-accessibility-label-replace-button-switch-format" = "Accessibility label for switch format button on page editor, $1 is replaced by text to replace"; -"source-editor-accessibility-label-replace-text-field" = "Accessibility label for the replace text field on the page editor"; -"source-editor-accessibility-label-replace-type-all" = "Accessibility label for the replace all instances button on the page editor"; -"source-editor-accessibility-label-replace-type-single" = "Accessibility label for replace single instance button on the page editor"; -"source-editor-accessibility-label-strikethrough" = "Accessibility label for the strikethrough button on the page editor"; -"source-editor-accessibility-label-strikethrough-selected" = "Accessibility label for the selected strikethrough button on the page editor"; -"source-editor-accessibility-label-subscript" = "Accessibility label for the subscript button on the page editor"; -"source-editor-accessibility-label-subscript-selected" = "Accessibility label for the selected subscript button on the page editor"; -"source-editor-accessibility-label-superscript" = "Accessibility label for the superscript button on the page editor"; -"source-editor-accessibility-label-superscript-selected" = "Accessibility string for the selected superscript button on the page editor"; -"source-editor-accessibility-label-template" = "Accessibility label for the add template syntax button on the page editor"; -"source-editor-accessibility-label-template-selected" = "Accessibility label for the remove template syntax button on the page editor"; -"source-editor-accessibility-label-underline" = "Accessibility label for the underline button on the page editor"; -"source-editor-accessibility-label-underline-selected" = "Accessibility label for the selected underline button on the page editor"; -"source-editor-accessibility-label-unordered" = "Accessibility label for make unordered list button on the page editor"; -"source-editor-accessibility-label-unordered-selected" = "Accessibility label for remove unordered list button on the page editor"; -"source-editor-clear-formatting" = "Label for clear formatting on the page editor"; -"source-editor-edit-published" = "Title for alert informing that the user's new edit was successfully published."; -"source-editor-edit-source" = "Title for menu option to edit the source of a page."; -"source-editor-find-replace-all" = "Label for replace all ocurrences of a string on the page editor"; -"source-editor-find-replace-single" = "Label for replace single string button on page editor"; -"source-editor-find-replace-with" = "Lable for replace with string button on page editor"; -"source-editor-heading" = "Label for heading formatting button on section editor"; -"source-editor-paragraph" = "Label for paragraph formatting button on the page editor"; -"source-editor-style" = "Label for style formatting section on the page editor"; -"source-editor-subheading1" = "Label for subheading 1 formatting button on the page editor"; -"source-editor-subheading2" = "Label for subheading 2 formatting button on the page editor"; -"source-editor-subheading3" = "Label for subheading 3 formatting button on the page editor"; -"source-editor-subheading4" = "Label for subheading 4 formatting button on the page editor"; -"source-editor-text-formatting" = "Label for text formatting section on the page editor"; "table-of-contents-button-label" = "Accessibility label for the Table of Contents button {{Identical|Table of contents}}"; "table-of-contents-close-accessibility-hint" = "Accessibility hint for closing table of contents {{Identical|Close}}"; "table-of-contents-close-accessibility-label" = "Accessibility label for closing table of contents"; diff --git a/Wikipedia/iOS Native Localizations/br.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/br.lproj/Localizable.strings index afa92c1cb56..f178ed975d1 100644 Binary files a/Wikipedia/iOS Native Localizations/br.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/br.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/da.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/da.lproj/Localizable.strings index ef95df0bb47..4bf789c9392 100644 Binary files a/Wikipedia/iOS Native Localizations/da.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/da.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/en.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/en.lproj/Localizable.strings index 3ba02f47000..ddd6f053e8d 100644 Binary files a/Wikipedia/iOS Native Localizations/en.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/en.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/he.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/he.lproj/Localizable.strings index 6042a49ca5b..69884159da3 100644 Binary files a/Wikipedia/iOS Native Localizations/he.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/he.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/hi.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/hi.lproj/Localizable.strings index c29a57ad09c..7b7a1da99ba 100644 Binary files a/Wikipedia/iOS Native Localizations/hi.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/hi.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/ia.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/ia.lproj/Localizable.strings index a4d0b218571..499c3813f08 100644 Binary files a/Wikipedia/iOS Native Localizations/ia.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/ia.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/it.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/it.lproj/Localizable.strings index b157aace3e7..f4a7d17c07e 100644 Binary files a/Wikipedia/iOS Native Localizations/it.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/it.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/ja.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/ja.lproj/Localizable.strings index 4f9f88aeea1..5455fc8e2cf 100644 Binary files a/Wikipedia/iOS Native Localizations/ja.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/ja.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/lb.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/lb.lproj/Localizable.strings index a229b971859..4274a743405 100644 Binary files a/Wikipedia/iOS Native Localizations/lb.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/lb.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/mk.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/mk.lproj/Localizable.strings index c35e7b6709b..0996076c064 100644 Binary files a/Wikipedia/iOS Native Localizations/mk.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/mk.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/pt.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/pt.lproj/Localizable.strings index 9010baf9060..10109204bc2 100644 Binary files a/Wikipedia/iOS Native Localizations/pt.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/pt.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/ru.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/ru.lproj/Localizable.strings index dbda64316f9..519ae22062e 100644 Binary files a/Wikipedia/iOS Native Localizations/ru.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/ru.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/sl.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/sl.lproj/Localizable.strings index afed6e62702..b32ee2b8e46 100644 Binary files a/Wikipedia/iOS Native Localizations/sl.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/sl.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/sr-EC.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/sr-EC.lproj/Localizable.strings index fb889ed00f4..7678b51c705 100644 Binary files a/Wikipedia/iOS Native Localizations/sr-EC.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/sr-EC.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/sv.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/sv.lproj/Localizable.strings index f9340e9f4ee..3d2294b780a 100644 Binary files a/Wikipedia/iOS Native Localizations/sv.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/sv.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/tr.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/tr.lproj/Localizable.strings index 3e00c7e04d6..335ba90d85f 100644 Binary files a/Wikipedia/iOS Native Localizations/tr.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/tr.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/zh-hans.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/zh-hans.lproj/Localizable.strings index 90ca93a8295..abab3e0d089 100644 Binary files a/Wikipedia/iOS Native Localizations/zh-hans.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/zh-hans.lproj/Localizable.strings differ diff --git a/Wikipedia/iOS Native Localizations/zh-hant.lproj/Localizable.strings b/Wikipedia/iOS Native Localizations/zh-hant.lproj/Localizable.strings index d78e10e82ac..991047c854c 100644 Binary files a/Wikipedia/iOS Native Localizations/zh-hant.lproj/Localizable.strings and b/Wikipedia/iOS Native Localizations/zh-hant.lproj/Localizable.strings differ diff --git a/WikipediaUITests/UITestHelperViewController.swift b/WikipediaUITests/UITestHelperViewController.swift index 56a24384bf1..8f3a4d1b5a9 100644 --- a/WikipediaUITests/UITestHelperViewController.swift +++ b/WikipediaUITests/UITestHelperViewController.swift @@ -40,65 +40,64 @@ public class UITestHelperViewController: WKCanvasViewController { @objc func tappedSourceEditor() { - let localizedStrings = WKSourceEditorLocalizedStrings(inputViewTextFormatting: CommonStrings.textFormatting, - inputViewStyle: CommonStrings.style, - inputViewClearFormatting: CommonStrings.clearFormatting, - inputViewParagraph: CommonStrings.paragraph, - inputViewHeading: CommonStrings.heading, - inputViewSubheading1: CommonStrings.subheading1, - inputViewSubheading2: CommonStrings.subheading2, - inputViewSubheading3: CommonStrings.subheading3, - inputViewSubheading4: CommonStrings.subheading4, - findReplaceTypeSingle: CommonStrings.findAndReplaceSingle, - findReplaceTypeAll: CommonStrings.findAndReplaceAll, - findReplaceWith: CommonStrings.replaceWith, findReplaceTypeMenuTitle: CommonStrings.findReplaceHeader, - accessibilityLabelButtonFormatText: CommonStrings.accessibilityLabelButtonFormatText, - accessibilityLabelButtonCitation: CommonStrings.accessibilityLabelButtonCitation, - accessibilityLabelButtonCitationSelected: CommonStrings.accessibilityLabelButtonCitationSelected, - accessibilityLabelButtonLink: CommonStrings.accessibilityLabelButtonBold, - accessibilityLabelButtonLinkSelected: CommonStrings.accessibilityLabelButtonLinkSelected, - accessibilityLabelButtonTemplate: CommonStrings.accessibilityLabelButtonTemplate, - accessibilityLabelButtonTemplateSelected: CommonStrings.accessibilityLabelButtonTemplateSelected, - accessibilityLabelButtonMedia: CommonStrings.accessibilityLabelButtonMedia, - accessibilityLabelButtonFind: CommonStrings.accessibilityLabelButtonFind, - accessibilityLabelButtonListUnordered: CommonStrings.accessibilityLabelButtonListUnordered, - accessibilityLabelButtonListUnorderedSelected: CommonStrings.accessibilityLabelButtonListUnorderedSelected, - accessibilityLabelButtonListOrdered: CommonStrings.accessibilityLabelButtonListOrdered, - accessibilityLabelButtonListOrderedSelected: CommonStrings.accessibilityLabelButtonListOrderedSelected, - accessibilityLabelButtonInceaseIndent: CommonStrings.accessibilityLabelButtonIncreaseIndent, - accessibilityLabelButtonDecreaseIndent: CommonStrings.accessibilityLabelButtonDecreaseIndent, - accessibilityLabelButtonCursorUp: CommonStrings.accessibilityLabelButtonCursorUp, - accessibilityLabelButtonCursorDown: CommonStrings.accessibilityLabelButtonCursorDown, - accessibilityLabelButtonCursorLeft: CommonStrings.accessibilityLabelButtonCursorLeft, - accessibilityLabelButtonCursorRight: CommonStrings.accessibilityLabelButtonCursorRight, - accessibilityLabelButtonBold: CommonStrings.accessibilityLabelButtonBold, - accessibilityLabelButtonBoldSelected: CommonStrings.accessibilityLabelButtonBoldSelected, - accessibilityLabelButtonItalics: CommonStrings.accessibilityLabelButtonItalics, - accessibilityLabelButtonItalicsSelected: CommonStrings.accessibilityLabelButtonItalicsSelected, - accessibilityLabelButtonShowMore: CommonStrings.accessibilityLabelButtonShowMore, - accessibilityLabelButtonComment: CommonStrings.accessibilityLabelButtonComment, - accessibilityLabelButtonCommentSelected: CommonStrings.accessibilityLabelButtonCommentSelected, - accessibilityLabelButtonSuperscript: CommonStrings.accessibilityLabelButtonSuperscript, - accessibilityLabelButtonSuperscriptSelected: CommonStrings.accessibilityLabelButtonSuperscriptSelected, - accessibilityLabelButtonSubscript: CommonStrings.accessibilityLabelButtonSubscript, - accessibilityLabelButtonSubscriptSelected: CommonStrings.accessibilityLabelButtonSubscriptSelected, - accessibilityLabelButtonUnderline: CommonStrings.accessibilityLabelButtonUnderline, - accessibilityLabelButtonUnderlineSelected: CommonStrings.accessibilityLabelButtonUnderlineSelected, - accessibilityLabelButtonStrikethrough: CommonStrings.accessibilityLabelButtonStrikethrough, - accessibilityLabelButtonStrikethroughSelected: CommonStrings.accessibilityLabelButtonStrikethroughSelected, - accessibilityLabelButtonCloseMainInputView: CommonStrings.accessibilityLabelButtonCloseMainInputView, - accessibilityLabelButtonCloseHeaderSelectInputView: CommonStrings.accessibilityLabelButtonCloseHeaderSelectInputView, - accessibilityLabelFindTextField: CommonStrings.accessibilityLabelButtonFind, - accessibilityLabelFindButtonClear: CommonStrings.accessibilityLabelButtonClearFormatting, - accessibilityLabelFindButtonClose: CommonStrings.accessibilityLabelFindButtonClose, - accessibilityLabelFindButtonNext: CommonStrings.accessibilityLabelFindButtonNext, - accessibilityLabelFindButtonPrevious: CommonStrings.accessibilityLabelFindButtonPrevious, - accessibilityLabelReplaceTextField: CommonStrings.accessibilityLabelReplaceTextField, - accessibilityLabelReplaceButtonClear: CommonStrings.accessibilityLabelReplaceButtonClear, - accessibilityLabelReplaceButtonPerformFormat: CommonStrings.accessibilityLabelReplaceButtonPerformFormat, - accessibilityLabelReplaceButtonSwitchFormat: CommonStrings.accessibilityLabelReplaceButtonSwitchFormat, - accessibilityLabelReplaceTypeSingle: CommonStrings.accessibilityLabelReplaceTypeSingle, - accessibilityLabelReplaceTypeAll: CommonStrings.accessibilityLabelReplaceTypeAll) + let localizedStrings = WKSourceEditorLocalizedStrings( + keyboardTextFormattingTitle: CommonStrings.editorKeyboardTextFormattingTitle, + keyboardParagraph: CommonStrings.editorKeyboardParagraphButton, + keyboardHeading: CommonStrings.editorKeyboardHeadingButton, + keyboardSubheading1: CommonStrings.editorKeyboardSubheading1Button, + keyboardSubheading2: CommonStrings.editorKeyboardSubheading2Button, + keyboardSubheading3: CommonStrings.editorKeyboardSubheading3Button, + keyboardSubheading4: CommonStrings.editorKeyboardSubheading4Button, + findAndReplaceTitle: CommonStrings.findReplaceHeader, + replaceTypeSingle: CommonStrings.editorReplaceTypeSingle, + replaceTypeAll: CommonStrings.editorReplaceTypeAll, + replaceTextfieldPlaceholder: CommonStrings.editorReplaceTextfieldPlaceholder, + replaceTypeContextMenuTitle: CommonStrings.findReplaceHeader, + toolbarOpenTextFormatMenuButtonAccessibility: CommonStrings.editorToolbarButtonOpenTextFormatMenuAccessiblityLabel, + toolbarReferenceButtonAccessibility: CommonStrings.editorToolbarButtonReferenceAccessiblityLabel, + toolbarLinkButtonAccessibility: CommonStrings.editorToolbarButtonLinkAccessiblityLabel, + toolbarTemplateButtonAccessibility: CommonStrings.editorToolbarButtonTemplateAccessiblityLabel, + toolbarImageButtonAccessibility: CommonStrings.editorToolbarButtonImageAccessiblityLabel, + toolbarFindButtonAccessibility: CommonStrings.editorToolbarButtonFindAccessiblityLabel, + toolbarExpandButtonAccessibility: CommonStrings.editorToolbarShowMoreOptionsButtonAccessiblityLabel, + toolbarListUnorderedButtonAccessibility: CommonStrings.editorToolbarButtonListUnorderedAccessiblityLabel, + toolbarListOrderedButtonAccessibility: CommonStrings.editorToolbarButtonListOrderedAccessiblityLabel, + toolbarIndentIncreaseButtonAccessibility: CommonStrings.editorToolbarButtonIndentIncreaseAccessiblityLabel, + toolbarIndentDecreaseButtonAccessibility: CommonStrings.editorToolbarButtonIndentDecreaseAccessiblityLabel, + toolbarCursorUpButtonAccessibility: CommonStrings.editorToolbarButtonCursorUpAccessiblityLabel, + toolbarCursorDownButtonAccessibility: CommonStrings.editorToolbarButtonCursorDownAccessiblityLabel, + toolbarCursorPreviousButtonAccessibility: CommonStrings.editorToolbarButtonCursorNextAccessiblityLabel, + toolbarCursorNextButtonAccessibility: CommonStrings.editorToolbarButtonCursorPreviousAccessiblityLabel, + toolbarBoldButtonAccessibility: CommonStrings.editorToolbarButtonBoldAccessiblityLabel, + toolbarItalicsButtonAccessibility: CommonStrings.editorToolbarButtonItalicsAccessiblityLabel, + keyboardCloseTextFormatMenuButtonAccessibility: CommonStrings.editorKeyboardButtonCloseTextFormatMenuAccessiblityLabel, + keyboardBoldButtonAccessibility: CommonStrings.editorKeyboardButtonBoldAccessiblityLabel, + keyboardItalicsButtonAccessibility: CommonStrings.editorKeyboardButtonItalicsAccessiblityLabel, + keyboardUnderlineButtonAccessibility: CommonStrings.editorKeyboardButtonUnderlineAccessiblityLabel, + keyboardStrikethroughButtonAccessibility: CommonStrings.editorKeyboardButtonStrikethroughAccessiblityLabel, + keyboardReferenceButtonAccessibility: CommonStrings.editorKeyboardButtonReferenceAccessiblityLabel, + keyboardLinkButtonAccessibility: CommonStrings.editorKeyboardButtonLinkAccessiblityLabel, + keyboardListUnorderedButtonAccessibility: CommonStrings.editorKeyboardButtonListUnorderedAccessiblityLabel, + keyboardListOrderedButtonAccessibility: CommonStrings.editorKeyboardButtonListOrderedAccessiblityLabel, + keyboardIndentIncreaseButtonAccessibility: CommonStrings.editorKeyboardButtonIndentIncreaseAccessiblityLabel, + keyboardIndentDecreaseButtonAccessibility: CommonStrings.editorKeyboardButtonIndentDecreaseAccessiblityLabel, + keyboardSuperscriptButtonAccessibility: CommonStrings.editorKeyboardButtonSuperscriptAccessiblityLabel, + keyboardSubscriptButtonAccessibility: CommonStrings.editorKeyboardButtonSubscriptAccessiblityLabel, + keyboardTemplateButtonAccessibility: CommonStrings.editorKeyboardButtonTemplateAccessiblityLabel, + keyboardCommentButtonAccessibility: CommonStrings.editorKeyboardButtonCommentAccessiblityLabel, + findTextFieldAccessibility: CommonStrings.editorFindTextFieldAccessibilityLabel, + findClearButtonAccessibility: CommonStrings.editorFindClearButtonAccessibilityLabel, + findCurrentMatchInfoFormatAccessibility: CommonStrings.editorFindCurrentMatchInfoFormatAccessibilityLabel, + findCurrentMatchInfoZeroResultsAccessibility: CommonStrings.editorFindCurrentMatchInfoZeroResultsAccessibilityLabel, + findCloseButtonAccessibility: CommonStrings.editorFindCloseButtonAccessibilityLabel, + findNextButtonAccessibility: CommonStrings.editorFindNextButtonAccessibilityLabel, + findPreviousButtonAccessibility: CommonStrings.editorFindPreviousButtonAccessibilityLabel, + replaceTextFieldAccessibility: CommonStrings.editorReplaceTextFieldAccessibilityLabel, + replaceClearButtonAccessibility: CommonStrings.editorReplaceClearButtonAccessibilityLabel, + replaceButtonAccessibilityFormat: CommonStrings.editorReplaceButtonFormatAccessibilityLabel, + replaceTypeButtonAccessibilityFormat: CommonStrings.editorReplaceTypeButtonFormatAccessibilityLabel, + replaceTypeSingleAccessibility: CommonStrings.editorReplaceTypeSingleAccessibility, + replaceTypeAllAccessibility: CommonStrings.editorReplaceTypeAllAccessibility) let accessibilityId = WKSourceEditorAccessibilityIdentifiers( textView: SourceEditorAccessibilityIdentifiers.textView.rawValue,