Skip to content

Add Punjabi (pa) localization for SweepAlert iOS - #16

Open
anamhira47 wants to merge 3 commits into
mainfrom
cursor/r-0ac20a4e5baf45a88e98263575a09786-e66b40b34b434fd48d32c60bf52d55f5-can-you-add-a-feature-to-loc-632-049a
Open

Add Punjabi (pa) localization for SweepAlert iOS#16
anamhira47 wants to merge 3 commits into
mainfrom
cursor/r-0ac20a4e5baf45a88e98263575a09786-e66b40b34b434fd48d32c60bf52d55f5-can-you-add-a-feature-to-loc-632-049a

Conversation

@anamhira47

Copy link
Copy Markdown

Summary

Adds Punjabi (Gurmukhi, locale pa) localization to the SweepAlert native iOS app. The app previously had no localization infrastructure — all strings were hardcoded English.

What changed

  • String catalog — Added Localizable.xcstrings with 117 English source strings and Gurmukhi Punjabi translations covering the map home (signed-out), settings, parking flows, alerts, auth errors, and widget metadata.
  • Xcode project — Registered pa in knownRegions, bundled the string catalog in both app and widget targets, and added pa.lproj/InfoPlist.strings for display name and location permission text.
  • Programmatic strings — Migrated statusMessage, auth/Convex/push error messages, dynamic status text, and date/urgency helpers to String(localized:) so they resolve through the catalog.
  • Settings groups — Changed settingsGroup(title:) to accept LocalizedStringKey for section headers like Account/Crew.

Target screen: Map Home Unauthenticated

Key Punjabi strings on the signed-out map screen:

English Punjabi
Create your car crew ਆਪਣੀ ਕਾਰ ਕ੍ਰਿਊ ਬਣਾਓ
Sign in to save cars… ਕਾਰਾਂ ਸੇਵ ਕਰਨ, ਸੱਦਾ ਲਿੰਕ ਸਾਂਝੇ ਕਰਨ…
Sign in ਸਾਈਨ ਇਨ
Settings ਸੈਟਿੰਗਾਂ
SweepAlert ਸਵੀਪਅਲਰਟ

When the device language is set to Punjabi, iOS automatically selects the pa localization.

Verification

Remote Revyl build succeeded and the app was validated on a cloud iOS device with Punjabi as the primary language.

Before (English, location permission dialog):

Before — English map home

After (Punjabi map home, signed-out panel):

After — Punjabi map home

Device instruction result: Instruction step success — confirmed Punjabi text on the signed-out map home screen (ਸਾਈਨ ਇਨ, ਸਵੀਪਅਲਰਟ, ਸੈਟਿੰਗਾਂ).

How to test locally

  1. Build and run on device/simulator.
  2. Settings → General → Language & Region → add Punjabi.
  3. Open SweepAlert and confirm the signed-out bottom panel and settings screen show Gurmukhi text.
Open in Web Open in Cursor 

cursoragent and others added 2 commits June 28, 2026 07:52
- Add Localizable.xcstrings with 117 Gurmukhi translations
- Register pa locale in Xcode project and InfoPlist.strings
- Localize programmatic strings via String(localized:) in views and services

Co-authored-by: Anam Hira <anam@revyl.ai>
Configure app_id, Xcode scheme, and build output path so cloud agents
can run revyl dev without interactive app selection.

Co-authored-by: Anam Hira <anam@revyl.ai>
@anamhira47
anamhira47 marked this pull request as ready for review July 1, 2026 20:03
@revyl-staging

revyl-staging Bot commented Aug 24, 2026

Copy link
Copy Markdown

Preview builds Revyl

5316df1f

Project: apps/ios-sweep-alert

Build Target Status Details Updated (UTC)
SweepAlert Swift (iOS) 🟩 Ready · 1m 13s Open preview · View logs 2026-08-24 06:04

Proof of changes

Target Status Details Updated (UTC)
SweepAlert Swift (iOS) 🟧 Inconclusive View proof logs · No worker claimed this proof within 22m. Check that a workflow worker for scm-adaptive-report_staging is running. 2026-08-24 06:04

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 5316df1. Configure here.

return String(localized: "at pin")
}
return "\(Int(feet.rounded())) ft"
return String(localized: "\(Int(feet.rounded())) ft")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Side labels mix languages

Medium Severity

formatSide now returns a localized direction name, but ruleSummary and the rule-row pill still concatenate the English word side without going through String(localized:). Punjabi users see mixed strings like a Gurmukhi direction plus English side, even though the catalog already has a "%@ - %@ side - %@" template for the summary path.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 5316df1. Configure here.

private let sfCoordinate = CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194)
private let searchRadiusMeters: CLLocationDistance = 60
private let sweepBlue = Color(red: 0.05, green: 0.39, blue: 0.90)
private let sweepBlue = Color(red: 0.12, green: 0.48, blue: 0.96)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unrelated brand color change

Low Severity

sweepBlue in the main app was changed from (0.05, 0.39, 0.90) to (0.12, 0.48, 0.96) in this localization-only PR. The widget still uses the original value, so primary buttons, badges, and accents no longer match between the app and widget.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 5316df1. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants