|
5 | 5 | // Created by Fethi El Hassasna on 2025-01-26. |
6 | 6 | // Copyright © 2025 matthewfecher.com. All rights reserved. |
7 | 7 | // |
| 8 | +// All user-facing strings are backed by Localizable.xcstrings. |
| 9 | +// To update text or add translations, edit the String Catalog in Xcode. |
| 10 | +// |
8 | 11 |
|
9 | 12 | import Foundation |
10 | 13 |
|
11 | 14 | struct Content { |
12 | 15 | struct About { |
13 | | - static let title = "About Swift Radio" |
14 | | - |
15 | | - static let headerText = """ |
16 | | - **Swift Radio** is a fully featured, open-source radio station app written entirely in **Swift**. \ |
17 | | - It provides robust, professional functionality out of the box, \ |
18 | | - complete with **Apple CarPlay** support, making it the perfect foundation \ |
19 | | - for **building** or **customizing** your own streaming radio experience. |
20 | | - """ |
21 | | - |
22 | | - static let footerAuthors = "Fethi El Hassasna & Matt Fecher" |
23 | | - static let footerCopyright = "Swift Radio" |
| 16 | + static let title = String(localized: "about.title") |
| 17 | + static let headerText = String(localized: "about.headerText") |
| 18 | + static let footerAuthors = String(localized: "about.footerAuthors") |
| 19 | + static let footerCopyright = String(localized: "about.footerCopyright") |
24 | 20 |
|
25 | 21 | struct Sections { |
26 | | - static let features = "Features" |
27 | | - static let contact = "Contact" |
28 | | - static let support = "Support" |
29 | | - static let credits = "Credits" |
30 | | - static let legal = "Legal" |
31 | | - static let version = "Version" |
| 22 | + static let features = String(localized: "about.sections.features") |
| 23 | + static let contact = String(localized: "about.sections.contact") |
| 24 | + static let support = String(localized: "about.sections.support") |
| 25 | + static let credits = String(localized: "about.sections.credits") |
| 26 | + static let legal = String(localized: "about.sections.legal") |
| 27 | + static let version = String(localized: "about.sections.version") |
32 | 28 | } |
33 | 29 |
|
34 | | - static let feedback = ("Feedback", "We value your input! Please take a moment to provide feedback") |
35 | | - static let shareText = "Check out Swift Radio!" |
36 | | - static let license = ("License", "MIT License") |
| 30 | + static let feedback = (String(localized: "about.feedback.title"), String(localized: "about.feedback.message")) |
| 31 | + static let shareText = String(localized: "about.shareText") |
| 32 | + static let license = (String(localized: "about.license.title"), String(localized: "about.license.detail")) |
37 | 33 | } |
38 | 34 |
|
39 | 35 | struct Contributors { |
40 | | - static let title = "Contributors" |
| 36 | + static let title = String(localized: "contributors.title") |
41 | 37 | } |
42 | 38 |
|
43 | 39 | struct Libraries { |
44 | | - static let title = "Libraries" |
| 40 | + static let title = String(localized: "libraries.title") |
| 41 | + } |
| 42 | + |
| 43 | + struct Stations { |
| 44 | + static let title = String(localized: "stations.title") |
| 45 | + static let loadingMessage = String(localized: "stations.loadingMessage") |
| 46 | + } |
| 47 | + |
| 48 | + struct Loader { |
| 49 | + static let errorTitle = String(localized: "loader.errorTitle") |
| 50 | + static let retryButton = String(localized: "loader.retryButton") |
| 51 | + } |
| 52 | + |
| 53 | + struct StationDetail { |
| 54 | + static let title = String(localized: "stationDetail.title") |
| 55 | + static let visitWebsite = String(localized: "stationDetail.visitWebsite") |
| 56 | + static let defaultDescription = String(localized: "stationDetail.defaultDescription") |
| 57 | + } |
| 58 | + |
| 59 | + struct BottomSheet { |
| 60 | + static let aboutStation = String(localized: "bottomSheet.aboutStation") |
| 61 | + static let shareNowPlaying = String(localized: "bottomSheet.shareNowPlaying") |
| 62 | + static let stationWebsite = String(localized: "bottomSheet.stationWebsite") |
| 63 | + static let playInMusicApp = String(localized: "bottomSheet.playInMusicApp") |
| 64 | + } |
| 65 | + |
| 66 | + struct Player { |
| 67 | + static let liveBadge = String(localized: "player.liveBadge") |
| 68 | + } |
| 69 | + |
| 70 | + struct Common { |
| 71 | + static let ok = String(localized: "common.ok") |
| 72 | + static let couldNotSendEmail = String(localized: "common.couldNotSendEmail") |
| 73 | + static let emailErrorMessage = String(localized: "common.emailErrorMessage") |
| 74 | + static let noDescription = String(localized: "common.noDescription") |
| 75 | + static let commitsFormat = String(localized: "common.commitsFormat") |
45 | 76 | } |
46 | 77 |
|
47 | 78 | struct Features { |
48 | | - static let title = "Features" |
49 | | - |
50 | | - static let swiftCodebase = ("Swift Codebase", "Entirely written in Swift with a clean and modern structure.") |
51 | | - static let carPlay = ("Apple CarPlay Support", "Lets users control their radio playback directly from their CarPlay dashboard.") |
52 | | - static let customizableUI = ("Customizable UI", "Includes a flexible interface that you can easily personalize with your own theme and branding.") |
53 | | - static let albumArt = ("Album Art & Metadata", "Displays track information and album covers to enhance the listening experience.") |
54 | | - static let lockScreen = ("Lock Screen & Control Center Integration", "Shows artwork and track info on the lock screen, and provides convenient controls without opening the app.") |
55 | | - static let multipleStations = ("Multiple Stations Setup", "Comes with a straightforward station list manager that supports multiple streaming URLs.") |
56 | | - static let easySetup = ("Easy Project Setup", "Ready to run right out of the box, and you can adjust key settings in a single configuration file.") |
| 79 | + static let title = String(localized: "features.title") |
| 80 | + |
| 81 | + static let swiftCodebase = (String(localized: "features.swiftCodebase.title"), String(localized: "features.swiftCodebase.description")) |
| 82 | + static let carPlay = (String(localized: "features.carPlay.title"), String(localized: "features.carPlay.description")) |
| 83 | + static let customizableUI = (String(localized: "features.customizableUI.title"), String(localized: "features.customizableUI.description")) |
| 84 | + static let albumArt = (String(localized: "features.albumArt.title"), String(localized: "features.albumArt.description")) |
| 85 | + static let lockScreen = (String(localized: "features.lockScreen.title"), String(localized: "features.lockScreen.description")) |
| 86 | + static let multipleStations = (String(localized: "features.multipleStations.title"), String(localized: "features.multipleStations.description")) |
| 87 | + static let easySetup = (String(localized: "features.easySetup.title"), String(localized: "features.easySetup.description")) |
57 | 88 | } |
58 | 89 | } |
0 commit comments