From e51d44d45ba492b84c86ea23763398c5847ebde5 Mon Sep 17 00:00:00 2001 From: Ajitesh Date: Sun, 22 Feb 2026 13:52:50 -0500 Subject: [PATCH 1/4] Localizables for settings.about fix --- .../Accessibility/AccessibilityHStack.swift | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 apps/ios/GuideDogs/Code/Visual UI/Views/Animations/Accessibility/AccessibilityHStack.swift diff --git a/apps/ios/GuideDogs/Code/Visual UI/Views/Animations/Accessibility/AccessibilityHStack.swift b/apps/ios/GuideDogs/Code/Visual UI/Views/Animations/Accessibility/AccessibilityHStack.swift new file mode 100644 index 000000000..6477cb7f7 --- /dev/null +++ b/apps/ios/GuideDogs/Code/Visual UI/Views/Animations/Accessibility/AccessibilityHStack.swift @@ -0,0 +1,59 @@ +// +// AccessibilityHStack.swift +// Soundscape +// +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +// + +import SwiftUI + +struct AccessibilityHStack: View { + + // MARK: Properties + + @Environment(\.sizeCategory) var sizeCategory + + private let veritcalAlignment: VerticalAlignment + private let horizontalAlignment: HorizontalAlignment + private let spacing: CGFloat? + private let content: () -> Content + + // MARK: Initialization + + init(verticalAlignment: VerticalAlignment = .center, horizontalAlignment: HorizontalAlignment = .center, spacing: CGFloat? = nil, @ViewBuilder content: @escaping () -> Content) { + self.veritcalAlignment = verticalAlignment + self.horizontalAlignment = horizontalAlignment + self.spacing = spacing + self.content = content + } + + // MARK: `body` + + var body: some View { + if sizeCategory.isAccessibilityCategory { + VStack(alignment: horizontalAlignment, spacing: spacing) { content() } + .fixedSize(horizontal: false, vertical: true) + } else { + HStack(alignment: veritcalAlignment, spacing: spacing) { content() } + } + } + +} + +struct AccessibilityHStack_Previews: PreviewProvider { + + static var previews: some View { + AccessibilityHStack { + Text("Hello World") + Text("Hello World") + } + + AccessibilityHStack { + Text("Hello World") + Text("Hello World") + } + .environment(\.sizeCategory, .accessibilityExtraExtraExtraLarge) + } + +} From 76e4ac988a2fc3c4e86e60d2540b94b989766acd Mon Sep 17 00:00:00 2001 From: Ajitesh Date: Sun, 22 Feb 2026 13:53:20 -0500 Subject: [PATCH 2/4] Fix for Localizables in settings.about --- .../en-US.lproj/Localizable.strings | 8 ++- .../Settings/AboutViewController.swift | 46 +++++++++++--- .../Accessibility/AccessibilityHStack.swift | 59 ----------------- .../Code/Visual UI/Views/Settings.storyboard | 63 +++++-------------- 4 files changed, 58 insertions(+), 118 deletions(-) delete mode 100644 apps/ios/GuideDogs/Code/Visual UI/Views/Animations/Accessibility/AccessibilityHStack.swift diff --git a/apps/ios/GuideDogs/Assets/Localization/en-US.lproj/Localizable.strings b/apps/ios/GuideDogs/Assets/Localization/en-US.lproj/Localizable.strings index 8ee3e8e75..36840c8c3 100644 --- a/apps/ios/GuideDogs/Assets/Localization/en-US.lproj/Localizable.strings +++ b/apps/ios/GuideDogs/Assets/Localization/en-US.lproj/Localizable.strings @@ -600,7 +600,7 @@ "settings.about.title.whats_new" = "What's New?"; /* Settings About Title, Privacy and Cookies */ -"settings.about.title.privacy" = "Soundscape Community Privacy Statement"; +"settings.about.title.privacy" = "Privacy Policy"; /* Settings About Title, Service Agreement */ "settings.about.title.service_agreement" = "Services Agreement"; @@ -611,6 +611,12 @@ /* Settings About Title, Copyright Notices */ "settings.about.title.copyright" = "Copyright Notices"; +/* Settings About Title, YouTube */ +"settings.about.title.youtube" = "YouTube Channel"; + +/* Settings About Title, Accessibility (France) */ +"settings.about.title.accessibility_fr_fr" = "Accessibilité: partiellement conforme"; + //------------------------------------------------------------------------------ // MARK: Settings (New Feature) //------------------------------------------------------------------------------ diff --git a/apps/ios/GuideDogs/Code/Visual UI/View Controllers/Settings/AboutViewController.swift b/apps/ios/GuideDogs/Code/Visual UI/View Controllers/Settings/AboutViewController.swift index b11e2d8a1..176938975 100644 --- a/apps/ios/GuideDogs/Code/Visual UI/View Controllers/Settings/AboutViewController.swift +++ b/apps/ios/GuideDogs/Code/Visual UI/View Controllers/Settings/AboutViewController.swift @@ -48,18 +48,46 @@ class AboutApplicationViewController: BaseTableViewController { private var aboutLinks: [AboutLinkCellModel] { var links = [ - AboutLinkCellModel(localizedTitle: GDLocalizedString("settings.about.title.whats_new"), segue: "ShowVersionHistorySegue"), - AboutLinkCellModel(localizedTitle: GDLocalizationUnnecessary("Privacy Policy"), url: AppContext.Links.privacyPolicyURL(for: LocalizationContext.currentAppLocale), event: "about.privacy_policy"), - AboutLinkCellModel(localizedTitle: GDLocalizationUnnecessary("Services Agreement"), url: AppContext.Links.servicesAgreementURL(for: LocalizationContext.currentAppLocale), event: "about.services_agreement"), - AboutLinkCellModel(localizedTitle: GDLocalizedString("settings.about.title.copyright"), segue: "ShowThirdPartyNoticesSegue"), - AboutLinkCellModel(localizedTitle: GDLocalizationUnnecessary("YouTube Channel"), url: AppContext.Links.youtubeURL(for: LocalizationContext.currentAppLocale), event: "about.youtube_channel") - ] + AboutLinkCellModel( + localizedTitle: GDLocalizedString("settings.about.title.whats_new"), + segue: "ShowVersionHistorySegue" + ), + + AboutLinkCellModel( + localizedTitle: GDLocalizedString("settings.about.title.privacy"), + url: AppContext.Links.privacyPolicyURL(for: LocalizationContext.currentAppLocale), + event: "about.privacy_policy" + ), + + AboutLinkCellModel( + localizedTitle: GDLocalizedString("settings.about.title.service_agreement"), + url: AppContext.Links.servicesAgreementURL(for: LocalizationContext.currentAppLocale), + event: "about.services_agreement" + ), + + AboutLinkCellModel( + localizedTitle: GDLocalizedString("settings.about.title.third_party"), + segue: "ShowThirdPartyNoticesSegue" + ), + + AboutLinkCellModel( + localizedTitle: GDLocalizedString("settings.about.title.youtube"), + url: AppContext.Links.youtubeURL(for: LocalizationContext.currentAppLocale), + event: "about.youtube_channel" + ) + ] + if LocalizationContext.currentAppLocale == Locale.frFr { - // If the app is localized in fr-FR, include a link to the France Accessibility landing page - links.append(AboutLinkCellModel(localizedTitle: GDLocalizationUnnecessary("Accessibilité: partiellement conforme"), url: AppContext.Links.accessibilityFrance, event: "about.accessibility_fr_fr")) + links.append( + AboutLinkCellModel( + localizedTitle: GDLocalizedString("settings.about.title.accessibility_fr_fr"), + url: AppContext.Links.accessibilityFrance, + event: "about.accessibility_fr_fr" + ) + ) } - + return links } diff --git a/apps/ios/GuideDogs/Code/Visual UI/Views/Animations/Accessibility/AccessibilityHStack.swift b/apps/ios/GuideDogs/Code/Visual UI/Views/Animations/Accessibility/AccessibilityHStack.swift deleted file mode 100644 index 6477cb7f7..000000000 --- a/apps/ios/GuideDogs/Code/Visual UI/Views/Animations/Accessibility/AccessibilityHStack.swift +++ /dev/null @@ -1,59 +0,0 @@ -// -// AccessibilityHStack.swift -// Soundscape -// -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -// - -import SwiftUI - -struct AccessibilityHStack: View { - - // MARK: Properties - - @Environment(\.sizeCategory) var sizeCategory - - private let veritcalAlignment: VerticalAlignment - private let horizontalAlignment: HorizontalAlignment - private let spacing: CGFloat? - private let content: () -> Content - - // MARK: Initialization - - init(verticalAlignment: VerticalAlignment = .center, horizontalAlignment: HorizontalAlignment = .center, spacing: CGFloat? = nil, @ViewBuilder content: @escaping () -> Content) { - self.veritcalAlignment = verticalAlignment - self.horizontalAlignment = horizontalAlignment - self.spacing = spacing - self.content = content - } - - // MARK: `body` - - var body: some View { - if sizeCategory.isAccessibilityCategory { - VStack(alignment: horizontalAlignment, spacing: spacing) { content() } - .fixedSize(horizontal: false, vertical: true) - } else { - HStack(alignment: veritcalAlignment, spacing: spacing) { content() } - } - } - -} - -struct AccessibilityHStack_Previews: PreviewProvider { - - static var previews: some View { - AccessibilityHStack { - Text("Hello World") - Text("Hello World") - } - - AccessibilityHStack { - Text("Hello World") - Text("Hello World") - } - .environment(\.sizeCategory, .accessibilityExtraExtraExtraLarge) - } - -} diff --git a/apps/ios/GuideDogs/Code/Visual UI/Views/Settings.storyboard b/apps/ios/GuideDogs/Code/Visual UI/Views/Settings.storyboard index ebc77e8fb..2f4f44998 100644 --- a/apps/ios/GuideDogs/Code/Visual UI/Views/Settings.storyboard +++ b/apps/ios/GuideDogs/Code/Visual UI/Views/Settings.storyboard @@ -1,9 +1,9 @@ - + - + @@ -13,7 +13,7 @@ - + @@ -41,7 +41,7 @@ - + @@ -429,7 +429,7 @@ - + @@ -515,7 +515,7 @@ - + @@ -683,7 +683,7 @@ - + @@ -745,7 +745,7 @@