From 24b6ca9bb21f319d669740eef350b1d5c4adb62e Mon Sep 17 00:00:00 2001 From: FuelBoard Contributor Date: Sat, 15 Aug 2026 16:04:56 +0100 Subject: [PATCH] =?UTF-8?q?Copy:=20England=20=E2=86=92=20UK-wide,=20includ?= =?UTF-8?q?e=20Northern=20Ireland;=20migrate=20user-facing=20copy=20into?= =?UTF-8?q?=20Localizable.strings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Onboarding feature: 'England-wide prices' → 'UK-wide prices — 8,000+ stations, updated twice a day' (key + value unified) - Stations empty state: 'covers England, Scotland and Wales' → 'covers the whole UK' (dataset includes Northern Ireland) - Settings Data source footer: source wording updated (CSV mirror or API), OGL attribution retained - Empty state, browse button and OGL footer now keys in Localizable.strings so the web copy editor covers them - APPSTORE.md + BACKLOG.md + code comments: England-wide → UK-wide, NI included --- APPSTORE.md | 5 +++-- BACKLOG.md | 2 +- FuelBoard/OnboardingView.swift | 2 +- FuelBoard/SettingsView.swift | 2 +- FuelBoard/StationsView.swift | 4 ++-- FuelBoard/en.lproj/Localizable.strings | 10 +++++++++- Shared/FuelPriceProvider.swift | 2 +- 7 files changed, 18 insertions(+), 9 deletions(-) diff --git a/APPSTORE.md b/APPSTORE.md index 25c7bcb..2cc892d 100644 --- a/APPSTORE.md +++ b/APPSTORE.md @@ -85,8 +85,9 @@ The two 2026-08-11 blockers are RESOLVED by P0 (live chain): > approach it. Always-location is requested only when the user enables > alerts. The app also provides a home-screen widget showing the current > cheapest station nearby, and a price-history Trends chart for starred -> stations. All data is UK-wide (Fuel Finder covers England, Scotland, and -> Wales); users outside the UK see an empty state explaining this. +> stations. All data is UK-wide (Fuel Finder covers England, Scotland, Wales +> and Northern Ireland); users outside the UK see an empty state explaining +> this. ## Review risks (know before submitting) diff --git a/BACKLOG.md b/BACKLOG.md index 4d018be..9107a31 100644 --- a/BACKLOG.md +++ b/BACKLOG.md @@ -1,6 +1,6 @@ # FuelBoard Backlog -FuelBoard — England-wide petrol-station price widget + app. +FuelBoard — UK-wide petrol-station price widget + app. GitHub mirror (`aptonline/fuelboard-data`, daily) holds the full-UK dump (~8,022 stations, all prices); app fetches it once per 12 h and filters/ sorts on-device, with a bundled snapshot as the no-network last resort. diff --git a/FuelBoard/OnboardingView.swift b/FuelBoard/OnboardingView.swift index 8491ce0..459798d 100644 --- a/FuelBoard/OnboardingView.swift +++ b/FuelBoard/OnboardingView.swift @@ -108,7 +108,7 @@ struct OnboardingView: View { .padding(.horizontal, 32) .padding(.top, 12) - featureRow(icon: "globe.europe.africa.fill", text: "England-wide prices — 8,000+ stations, updated twice a day") + featureRow(icon: "globe.europe.africa.fill", text: "UK-wide prices — 8,000+ stations, updated twice a day") featureRow(icon: "scope", text: "Cheapest within your chosen radius, or closest station first") featureRow(icon: "star.fill", text: "Favourites with instant price comparison") featureRow(icon: "chart.bar.fill", text: "Green/amber/red rating vs the best nearby price") diff --git a/FuelBoard/SettingsView.swift b/FuelBoard/SettingsView.swift index 0750dc6..ee316c4 100644 --- a/FuelBoard/SettingsView.swift +++ b/FuelBoard/SettingsView.swift @@ -229,7 +229,7 @@ struct SettingsView: View { } header: { Text("Data source") } footer: { - Text("Connection shows whether prices come from the official Fuel Finder API or the CSV mirror. Data updated is the latest price change reported by the GOV.UK server itself. Prices use the UK Fuel Finder dataset (Open Government Licence) and refresh up to twice a day.") + Text("Connection shows the source of the current prices (CSV mirror or API). Data updated is the latest price change reported by the GOV.UK server itself. Prices use the UK Fuel Finder dataset (Open Government Licence) and refresh up to twice a day.") } Section { diff --git a/FuelBoard/StationsView.swift b/FuelBoard/StationsView.swift index 0b631ab..4408a50 100644 --- a/FuelBoard/StationsView.swift +++ b/FuelBoard/StationsView.swift @@ -104,9 +104,9 @@ struct StationsView: View { let miles = distanceUnit.displayMiles(stationLimit) let unit = distanceUnit.label(for: Double(miles)) VStack(alignment: .leading, spacing: 6) { - Text("No \(selectedFuel.displayName) stations within \(miles) \(unit).") + Text(String(format: NSLocalizedString("No %@ stations within %lld %@.", comment: "Empty state when the radius finds nothing nearby"), selectedFuel.displayName, miles, unit)) .foregroundStyle(.secondary) - Text("FuelBoard covers England, Scotland and Wales — try Closest to browse every UK station.") + Text("FuelBoard covers the whole UK — try Closest to browse every station.") .font(.caption) .foregroundStyle(.secondary) Button("Browse all UK stations") { diff --git a/FuelBoard/en.lproj/Localizable.strings b/FuelBoard/en.lproj/Localizable.strings index c737edc..e644526 100644 --- a/FuelBoard/en.lproj/Localizable.strings +++ b/FuelBoard/en.lproj/Localizable.strings @@ -99,12 +99,20 @@ /* Onboarding */ "Welcome to FuelBoard" = "Welcome to FuelBoard"; "The cheapest petrol, diesel and premium fuel near you — from the official UK Fuel Finder data." = "The cheapest fuel near you"; -"England-wide prices — 8,000+ stations, updated twice a day" = "England-wide prices — 8,000+ stations, updated daily"; +"UK-wide prices — 8,000+ stations, updated twice a day" = "UK-wide prices — 8,000+ stations, updated twice a day"; "Cheapest within your chosen radius, or closest station first" = "Cheapest within your chosen radius, or closest station"; "Favourites with instant price comparison" = "Favourites with instant price comparison"; "Green/amber/red rating vs the best nearby price" = "Rating vs the best nearby price"; "Home-screen widget showing the cheapest nearby" = "Customisable Home-screen widgets"; "Alerts when you approach the cheapest station" = "Alerts you when you approach the cheapest station"; + +/* Stations empty state */ +"No %@ stations within %lld %@." = "No %@ stations within %lld %@."; +"FuelBoard covers the whole UK — try Closest to browse every station." = "FuelBoard covers the whole UK — try Closest to browse every station."; +"Browse all UK stations" = "Browse all UK stations"; + +/* Settings → Data source footer */ +"Connection shows the source of the current prices (CSV mirror or API). Data updated is the latest price change reported by the GOV.UK server itself. Prices use the UK Fuel Finder dataset (Open Government Licence) and refresh up to twice a day." = "Connection shows the source of the current prices (CSV mirror or API). Data updated is the latest price change reported by the GOV.UK server itself. Prices use the UK Fuel Finder dataset (Open Government Licence) and refresh up to twice a day."; "Prices near you" = "Prices near you"; "FuelBoard uses your location to show prices around you and rank stations by distance. Your position never leaves the device." = "FuelBoard uses your location to show prices around you and rank stations by distance. Your position never leaves the device."; "Location was denied. You can still browse all stations, but \"nearest\" sorting needs it." = "Location was denied. You can still browse all stations, but \"nearest\" sorting needs it."; diff --git a/Shared/FuelPriceProvider.swift b/Shared/FuelPriceProvider.swift index 30d1787..28f38c4 100644 --- a/Shared/FuelPriceProvider.swift +++ b/Shared/FuelPriceProvider.swift @@ -189,7 +189,7 @@ struct RelayMeta: Codable, Equatable { /// Representative stations spread across ENGLAND (one cluster per region) so /// the fallback works anywhere in the country — it is NOT tied to one town. -/// Real England-wide data comes from the relay (full-UK Fuel Finder CSV/API). +/// Real UK-wide data comes from the relay (full-UK Fuel Finder CSV/API). /// Prices in pence/litre. struct SampleFuelProvider: FuelPriceProviding { func fetchStations(near lat: Double?, lng: Double?, fuel: FuelType, radiusKM: Double?) async throws -> [FuelStation] {