How to translate Swift Radio into any language
Starting with v3, all user-facing text in Swift Radio is managed through two files. You don't need to write any Swift code to change or translate it:
- Localizable.xcstrings: a String Catalog that holds every visible string (titles, labels, descriptions, error messages)
- Config.swift: app-wide settings like your contact email, website, and feedback URL
Changing the default English text
Open Localizable.xcstrings in Xcode. The String Catalog editor shows a table with a Key column and an English column. The keys are internal identifiers. The English column is where the actual text lives.

String Catalog editor with keys and English values
Use the filter bar at the bottom to search by keyword (e.g. stations, about, features).
Common strings to customize:
| Key | Default Value | Description |
|---|---|---|
stations.title | Swift Radio | Main title at the top of the station list |
about.title | About Swift Radio | About screen title |
about.headerText | Swift Radio is a fully featured... | About screen description paragraph |
about.shareText | Check out Swift Radio! | Text used when sharing the app |
about.footerCopyright | Swift Radio | Copyright name in the About footer |
about.footerAuthors | Fethi El Hassasna & Matt Fecher | Author names in the About footer |
stationDetail.defaultDescription | You are listening to Swift Radio... | Fallback text on the station detail screen |
These are the most common ones. The full list is visible in the String Catalog editor.
Click any value in the English column to edit it. Changes take effect on the next build.
Do not rename the keys. They are referenced in
Content.swiftand renaming them will break the lookup.
Adding a new language
- Select the SwiftRadio project in the navigator (the blue project icon, not the folder).
- Go to the Info tab and find the Localizations section.
- Click + and pick a language (French, Spanish, Arabic, etc.). Xcode adds a new column to the String Catalog automatically.

Adding Arabic from the language picker
Back in Localizable.xcstrings, you'll now see the new language column next to English. Click each empty cell and type the translation.
Any string you leave untranslated falls back to English, so you can translate incrementally.

English and Arabic side by side in the String Catalog
Testing a specific language
Go to Edit Scheme > Run > Options and change App Language to the language you want to preview. Build and run. The app launches in that language without changing your device settings.

English

Arabic (RTL)
Customizing links and contact info
Open SwiftRadio/Config/Config.swift. Near the top you'll find:
static let website = "https://yourwebsite.com"
static let email = "hello@yourwebsite.com"
static let emailSubject = "From \(Bundle.main.appName) App"
static let feedbackURL = "https://yourwebsite.com/contact"
static let licenseURL = "https://raw.githubusercontent.com/..."
Replace the placeholder values with your own URLs and email address.
These are URLs and email addresses that stay the same across all languages, which is why they live in Config.swift rather than the String Catalog.
| File | What to edit |
|---|---|
Localizable.xcstrings | All user-facing text (titles, labels, descriptions) |
Config.swift | Contact email, website, feedback URL, license URL |